Gogs + Drone 在 Docker 下配置持续集成

安装 Gogs

建议使用 docker

1
2
sudo docker run -d --name=gogs -p 3022:22 -p 3000:3000 -v /gogs/data:/data gogs/gogs
# 输入密码

设置数据库连接方式,连接Mysql,待配置完成后,可登陆使用,可以作为私有 git 仓库,UI 比较简洁,基于 go 开发,性能很不错,而且占用系统资源非常少。

安装 Drone

建议使用 docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 在 docker 下先创建一个网络 drone,之后 drone server 和 runner 都加入这个网络
sudo docker network create drone

# 先安装 drone server
sudo docker run -d \
-e DRONE_AGENTS_ENABLED=true \
-e DRONE_GOGS_SERVER=http://192.168.100.3:3000 \
-e DRONE_RPC_SECRET=RdZneT4mOT2v1MCOdA3tLW2CtyHxnWaU \
-e DRONE_SERVER_HOST=192.168.100.226:8080 \
-e DRONE_SERVER_PROTO=http \
-e DRONE_DATABASE_DRIVER=mysql \
-e DRONE_DATABASE_DATASOURCE='root:housirvip@tcp(192.168.100.3:3306)/drone?parseTime=true' \
-e TZ=Asia/Shanghai \
-p 8080:80 \
-p 8443:443 \
--name=drone \
--network drone \
drone/drone:1

# 在安装 drone runner
sudo docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=drone \
-e DRONE_RPC_SECRET=RdZneT4mOT2v1MCOdA3tLW2CtyHxnWaU \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \
-e TZ=Asia/Shanghai \
-p 3000:3000 \
--name runner \
--network drone \
drone/drone-runner-docker:1

Drone 设置 CLI

1
2
3
4
5
6
7
8
9
10
11
12
13
# mac 上
brew tap drone/drone
brew install drone

# linux 上
curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone

# 配置 cli 登陆,建议写入 .bashrc .zshrc 等文件中
export DRONE_SERVER=http://192.168.100.226:8080
export DRONE_TOKEN=RZtKdJC32PNT1EeE93xBkcqTasdGwqbv

drone info

Drone 设置 CronJob

1
2
3
4
5
6
drone cron add [repo] [name] [time]

# 每天执行一次
drone cron add "org/repo" "name" "0 0 0 * * *"
# 每小时执行一次
drone cron add "org/repo" "name" "0 0 * * * *"

也可以在 UI 中设置,但是没法设置时间,只能选择预设

Drone 设置 Secret

1
2
3
4
5
6
7
8
drone secret add [repo] [name] [value]
# 例如在 housirvip/hello-world 项目下设置 my_token=e72e16c7e42f29
drone secret add housirvip/hello-world my_token e72e16c7e42f29

# 针对 organization 设置,在这个组织下的所有项目都会生效
drone orgsecret add [organization] [name] [data]
# 例如在 housirvip 下设置 my_token=e72e16c7e42f29
drone orgsecret add housirvip my_token e72e16c7e42f29

也可以在 UI中设置,但是不能设置 orgsecret

Drone 设置 Pipeline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
kind: pipeline
name: node14

steps:
- name: npm_run_start
image: node:14
commands:
- npm install
- npm run start
environment:
JD_COOKIE:
from_secret: JD_COOKIE
JD_COOKIE_2:
from_secret: JD_COOKIE_2
SERVER_CHAN:
from_secret: SERVER_CHAN
UPDATE: true

配置完成

配置完成后不仅可以自动对新提交的代码进行编译测试,也可以定时执行脚本,如签到、打卡之类的脚本,下图就是京东 APP 自动签到,领京豆的一个小脚本,蚊子腿,积少成多~

Gogs + Drone 在 Docker 下配置持续集成

http://housirvip.github.io/2021/03/25/gogs-drone/

作者

housirvip

发布于

2021-03-25

更新于

2023-01-01

许可协议

评论