基于gogs和drone的一个轻量级的开发部署自动化流程
install
git clone https://github.com/wpjscc/gogs-drone
sudo docker-compose up
访问
gogs 127.0.0.1:3000
drone 127.0.0.1:8000
账号密码通用
安装 exec-pipes
下面是 linux的可以直接用
mkdir /etc/drone-runner-exec
mkdir /var/log/drone-runner-exec
vi /etc/drone-runner-exec/config
DRONE_RPC_PROTO=http
DRONE_RPC_HOST=127.0.0.1:8000
DRONE_RPC_SECRET=gjO9kVnS7PdixaGF
DRONE_LOG_FILE=/var/log/drone-runner-exec/log.txt
./drone-runner-exec service install
./drone-runner-exec service start
# 验证安装成功
cat /var/log/drone-runner-exec/log.txt
新建一个仓库
可以参考 github.com/wpjscc/gogs-drone-nginx
里面是一个很简单的例子,部署了一个nginx
点击同步
下面会出现一个刚新建的仓库
点击进入
开启这个项目
接下来进入到gogs的管理web钩子
,那里会出现一个链接(刚上方点击开启后会这个链接会自动同步到这里),点击那个链接
点击测试推送,就可以在drone里看到一个任务在运行了
运行成功后
就可以看到nginx的欢迎页面了
done
配置文件说明
---
kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
steps:
- name: build
commands:
- docker run -d -p 8080:80 nginx
其中的
docker run -d -p 8080:80 nginx
可以换成任何你想要的命令,最终会运行宿主主机上。
方案分享
我的方案是这样的。
我本地有一台闲置的电脑,除了上方的软件外,还安装了
- php-cli
- deployer
- openvpn
我的配置文件是这样的.drone.yml
---
kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
steps:
- name: build
commands:
- dep deploy -vv
根目录会有一个deployer.php文件,.drone.yml就不用动了,只需在deploer.php中写部署逻辑即可。
我在 deployer.php 里实现了打包docker镜象,然后发布到k8s中。也可以手动运行发布,不依赖于自动打包环境
dep deploy -vvv
openvpn
用于远程访问。
gogs,我只是用它中转到drone,实际代码还是保存在gitee或github中,可以配置下.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = 仓库1
url = 仓库2
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
这样就可以触发drone构建了
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: