【运维笔录】局域网实现项目的CI/CD,Docker+Gitea+Drone搭建轻量级自动化部署平台
一、安装Docker
1.1 安装excpet
$ apt-get -f install expect
1.2 编写执行Docker安装脚本
- 编写
docker_dep.exp
脚本
#!/usr/bin/expect
set timeout 5
spawn apt install apt-transport-https ca-certificates software-properties-common curl
expect "Y/n"
send "y\n"
interact
- 编辑
docker.sh
脚本
#!/bin/bash
expect docker_dep.exp
echo "安装docker基本依赖完成"
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | apt-key add -
echo "添加docker gpg key完成"
add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian stretch stable"
echo "添加docker源完成"
apt update
echo "更新apt源完成"
expect docker.exp
echo "安装docker-ce完成"
echo "{
\"registry-mirrors\": [\"https://exmmtkzp.mirror.aliyuncs.com\"]
}" > /etc/docker/daemon.json
systemctl restart docker
echo "更新docker镜像为阿里云完成"
- 编辑
docker.exp
脚本
#!/usr/bin/expect
set timeout 5
spawn apt-get install docker-ce
expect "Y/n"
send "y\n"
interact
- 执行
docker.sh
脚本
Docker运行Gitea
1)先将系统22端口空闲出来,即将默认ssh端口改为其他端口。
2)启动Gitea
# 创建文件目录
mkdir -p gitea/data
# 启动gitea
docker run -d --privileged=true --restart=always --name=gitea -p 22:22 -p 3000:3000 -v $PWD/gitea/data:/data gitea/gitea
# 移除旧容器
docker stop gitea && docker rm gitea
如果出现添加ssh的key到gitea服务器上,仍然无法推送,可尝试新建ssh key再配置一次。
Docker运行Drone
# 生成open SSL, 然后赋值给下面的DRONE_RPC_SECRET
openssl rand -hex 16
# docker 启动 drone,先在gitea中添加Oauth2的ClientID和ClientSecret给drone
docker run \
--volume=$PWD/drone:/data \
--env=DRONE_GITEA_SERVER=http://gitea.sleepyocean.cn \
--env=DRONE_GITEA_CLIENT_ID=2a059034-9124-47a7-9394-1a9919c7058e \
--env=DRONE_GITEA_CLIENT_SECRET=rAmdK9kFGj12Zqqib0XMJmYmYTFPk1hegnRX7KK5JA02 \
--env=DRONE_RPC_SECRET=9583246268b343abfc51410a6c418622 \
--env=DRONE_SERVER_HOST=drone.sleepyocean.cn \
--publish=10080:80 \
--publish=10443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:2.11
# docker 启动 pipeline for drone
docker run -d \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=drone.sleepyocean.cn:10080 \
-e DRONE_RPC_SECRET=9583246268b343abfc51410a6c418622 \
-e DRONE_DEBUG=true \
-p 10081:3000 \
--restart always \
--name ssh-runner \
drone/drone-runner-ssh:linux-amd64
# 停止并删除容器
docker stop drone && docker rm drone
【运维笔录】局域网实现项目的CI/CD,Docker+Gitea+Drone搭建轻量级自动化部署平台的更多相关文章
- KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes
上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创 ...
- SpringBoot项目的CI配置 # 安全变量
运行GitLab Runner容器 参考Run GitLab Runner in a container - Docker image installation and configuration 执 ...
- flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成
理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...
- 使用gitlab自带的ci/cd实现.net core应用程序的部署
这两天在折腾持续集成和交付,公司考虑使用gitlab自带的ci/cd来处理,特此记下来整个流程步骤. 好记性不如一支烂笔头---尼古拉斯-古人言 第一步: 安装gitlab,这个自然不用多说 第二步: ...
- Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker
安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...
- .Net在Windows上使用Jenkins做CI/CD的那些事
背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...
- 近期关于CI/CD策略以及git分支模型的思考
近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...
- 如何搭建安全的 CI/CD 管道?
Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 &q ...
- 实践分享!GitLab CI/CD 快速入门
用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...
- 创建和使用CI / CD管道【译】【原】
在GitLab 8.8中引入. 介绍 管道是持续集成,交付和部署的顶级组件. 管道包括: 定义要运行的作业的作业.例如,代码编译或测试运行. 定义何时以及如何运行的阶段.例如,该测试仅在代码编译后运行 ...
随机推荐
- 手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)
@ 目录 前言 一.什么是图像分类? 1.图像分类的概念 2.MobileNet简介 二.使用python实现图像分类(py_to_py_ssd_mobilenet.py) 1.获取预训练模型 2.使 ...
- C语言常见的八大排序(详解)
冒泡排序 优点:写起来简单 缺点:运算量过大每两个之间就要比较一次 冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上 如下 ...
- 2.MongoDB系列之创建更新删除文档
1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...
- 论文解读(GGD)《Rethinking and Scaling Up Graph Contrastive Learning: An Extremely Efficient Approach with Group Discrimination》
论文信息 论文标题:Rethinking and Scaling Up Graph Contrastive Learning: An Extremely Efficient Approach with ...
- 齐博X1-栏目的终极方法get_sort
本节说明栏目的最终方法get_sort 我们之前讲的一系列fun函数调用栏目的方法都是基于get_sort这个公共方法而来 我们来看下这个函数的具体参数这个方法有四个参数: id:也就是栏目id,经常 ...
- dp优化 | 各种dp优化方式例题精选
前言 本文选题都较为基础,仅用于展示优化方式,如果是要找题单而不是看基础概念,请忽略本文. 本文包含一些常见的dp优化("√"表示下文会进行展示,没"√"表示暂 ...
- 第二阶段:高级核心基础知识·第4章shell特性·2
1.统计日志,日志内容 39.96.187.239 - - [11/Nov/2019:10:08:01 +0800] "GET / HTTP/1.1" 302 0 "-& ...
- Istio(十一):向istio服务网格中引入虚拟机
目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...
- Linux 挂载Windows共享文件夹和NAS存储
summary: [Linux 挂载共享存储] 概述 将Windows共享文件夹和NAS存储挂载至Linux. Linux系统环境:CentOS 挂载共享存储 查看外部主机共享了哪些目录 smbcli ...
- 回溯算法经典问题总结(.NET版)
回溯算法 回溯法其实也是一种递归,本质上就是穷举,然后筛选出符合规则的数据.为了使回溯更加高效,我们根据规则要求,在穷举过程中加上条件限制(也就是剪枝). 我们什么场景下应该想到使用回溯法呢? 如何画 ...