3.0 KiB
3.0 KiB
Gogs Runner
通过Gogs内置的Webhook,实现自动部署项目。最终目标是形成像gitlab-runner一样好用的CICD。
项目地址:https://git.lacus.site/RainSun/gogs_runner
🔨 配置项目
添加部署脚本
在你的项目中添加自动部署脚本(默认是deploy.py
,当然你也可以在后续的配置文件中随便修改脚本名,示例)
配置webhooks
屏幕右上方 -> 仓库设置 -> 管理Web钩子 -> 添加新的Web钩子 -> 选择Gogs
推送地址就是刚刚起的服务的地址,数据格式默认json就好,密钥文本留空,剩下自己看着选
配置Runner
编写一个config.json
[
{
// 名称:git用户名/项目名(需要实现自动部署的项目),不可为空
"repo": "lollipopkit/example",
// 脚本文件名,默认“deploy.py”
"script": "deploy.py",
// 信号:未指定分支时,commit messgae里包含信号,则执行脚本,默认“{D}”
"signal": "{D}",
// 分支:指定分支只要push就部署最后一个提交,无默认值,可为空,此配置优先于信号
"branch": "master"
}
]
后续将把此文件映射进容器
如果你所有项目都是用默认配置,这个文件不写也可以的,只要接收到了来自gogs的请求且commit包含
{D}
信号,就会自动执行deploy.py
🔌 把容器跑起来
这里有一份比较精简的docker-compose.yml
version: '3.3'
services:
gogs_runner:
image: zhaoyingbo/gogs_runner:1.0.0
container_name: gogs_runner
environment:
- TZ=Asia/Shanghai
ports:
- "3001:3001"
volumes:
- ~/.ssh:/root/.ssh # 必须
- ~/.gogs_runner/config.json:/gogs_runner/config.json
- /usr/bin/docker:/usr/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
user: root
restart: always
文件系统映射
由于使用ssh克隆代码,必须将.ssh映射进容器
根据实际情况修改config.json映射地址,无需配置的话这行也可以删除
需要注意的是,项目默认使用Python运行脚本,所以是基于python:3.7构建的,其余命令例如docker需要自己映射进容器
如果需要宿主机文件之类的也需要把相关文件夹映射进去
🎉 尝试自动部署
⚠️ 注意,请仔细阅读下一节要求,然后尝试自动部署。
在需要部署的项目内,新建commit,commit message内需要包含刚在config.json
内配置的signal
(默认{D}
),然后push。 或者在配置文件指定的分支推送也可。
如果未能成功,请使用docker logs
查看输出
🔖 要求
- 在仓库的webhook页面正确配置
- 部署过程需要有相应权限
- 未指定分支部署时,需要在commit message中包含
{D}
字符(可以通过config.json
参数自定义字符)
📝 License
LGPL LollipopKit 2022