update: dockerhub md
This commit is contained in:
parent
1cbf8e8d4f
commit
a642ed2ede
10
Dockerfile
10
Dockerfile
@ -1,6 +1,6 @@
|
||||
FROM golang:1.18.2
|
||||
|
||||
WORKDIR /gogs_auto_deploy
|
||||
WORKDIR /gogs_runner
|
||||
|
||||
COPY . .
|
||||
|
||||
@ -12,9 +12,9 @@ LABEL maintainer="zhaoyingbo@live.cn"
|
||||
|
||||
EXPOSE 3001
|
||||
|
||||
WORKDIR /gogs_auto_deploy
|
||||
WORKDIR /gogs_runner
|
||||
|
||||
ENV GOGS_REPOSITORY '/gogs_auto_deploy/repository/'
|
||||
ENV GOGS_REPOSITORY '/gogs_runner/repository/'
|
||||
|
||||
HEALTHCHECK --interval=5s --timeout=3s \
|
||||
CMD curl -fs http://0.0.0.0:3001/health || exit 1
|
||||
@ -31,6 +31,6 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.li
|
||||
&& apt-get install -y --no-install-recommends libsm6 libxrender1 libxext-dev libglib2.0-dev \
|
||||
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
||||
|
||||
COPY --from=0 /gogs_auto_deploy/gogs_auto_deploy gogs_auto_deploy
|
||||
COPY --from=0 /gogs_runner/gogs_runner gogs_runner
|
||||
|
||||
CMD /bin/bash -c /gogs_auto_deploy/gogs_auto_deploy
|
||||
CMD /bin/bash -c /gogs_runner/gogs_runner
|
||||
|
81
Dockhub.md
Normal file
81
Dockhub.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Gogs Runner
|
||||
通过Gogs内置的Webhook,实现自动部署项目。最终目标是形成像gitlab-runner一样好用的CICD。
|
||||
|
||||
项目地址:[https://git.lacus.site/RainSun/gogs_runner](https://git.lacus.site/RainSun/gogs_runner)
|
||||
|
||||
## 🔨 配置项目
|
||||
|
||||
### 添加部署脚本
|
||||
在你的项目中添加自动部署脚本(默认是`deploy.py`,当然你也可以在后续的配置文件中随便修改脚本名,[示例](https://git.lacus.site/RainSun/gogs_runner/src/master/example/deploy.py))
|
||||
|
||||
### 配置webhooks
|
||||
屏幕右上方 -> 仓库设置 -> 管理Web钩子 -> 添加新的Web钩子 -> 选择Gogs
|
||||
|
||||
推送地址就是刚刚起的服务的地址,数据格式默认json就好,密钥文本留空,剩下自己看着选
|
||||
|
||||
### 配置Runner
|
||||
编写一个`config.json`
|
||||
```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`
|
||||
|
||||
```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需要自己映射进容器
|
||||
|
||||
如果需要宿主机文件之类的也需要把相关文件夹映射进去
|
||||
|
||||
## 🎉 尝试自动部署
|
||||
⚠️ **注意**,请仔细阅读下一节[要求](https://git.lolli.tech/lollipopkit/gogs-webhook#-%E8%A6%81%E6%B1%82),然后尝试自动部署。
|
||||
在需要部署的项目内,新建commit,commit message内需要包含刚在`config.json`内配置的`signal`(默认`{D}`),然后push。 或者在配置文件指定的分支推送也可。
|
||||
|
||||
如果未能成功,请使用`docker logs`查看输出
|
||||
|
||||
## 🔖 要求
|
||||
- 在仓库的webhook页面正确配置
|
||||
- 部署过程需要有相应权限
|
||||
- 未指定分支部署时,需要在commit message中包含`{D}`字符(可以通过`config.json`参数自定义字符)
|
||||
|
||||
## 📝 License
|
||||
`LGPL LollipopKit 2022`
|
||||
|
@ -1,8 +1,8 @@
|
||||
version: '3.3'
|
||||
services:
|
||||
gogs_auto_deploy:
|
||||
image: zhaoyingbo/gogs_auto_deploy:1.0.0
|
||||
container_name: gogs_auto_deploy
|
||||
gogs_runner:
|
||||
image: zhaoyingbo/gogs-runner:latest
|
||||
container_name: gogs_runner
|
||||
environment:
|
||||
- TZ=Asia/Shanghai # 时区
|
||||
ports:
|
||||
|
Loading…
x
Reference in New Issue
Block a user