Gitea集成Drone

Gitea集成Drone

树莓派之前把Gitea安装好了,这里再安一下Drone.

1. Gitea获取OAuth

参考:https://docs.drone.io/server/provider/gitea/

打开http://IP:3000/user/settings/applications

注意:重定向IP换个自己的

2. 创建共享密钥

这步在下面DRONE_RPC_SECRET中使用,也可以自己随便输入个,只要Server跟Runner一样就行。

1
2
$ openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6

3. 下载drone镜像

1
docker pull drone/drone:2

4. 配置

参考:https://docs.drone.io/server/reference/

  • DRONE_GITEA_CLIENT_ID:上面OAuth2创建应用获取的客户端Id。

  • DRONE_GITEA_CLIENT_SECRET:上面OAuth2创建应用获取的客户端密钥。

  • DRONE_GITEA_SERVER: Gitea地址,注意要加http(s),如:http://127.0.0.1:3000

  • DRONE_GIT_ALWAYS_AUTH:可选,是否每Clone都要认证。

  • DRONE_RPC_SECRET: 共享密钥,用于验证到服务器的rpc连接。必须为服务器和Runner提供相同的秘密值

  • DRONE_SERVER_HOST: Drone地址[提供您的外部主机名或IP地址。如果使用IP地址,则可以包括端口]

  • DRONE_SERVER_PROTO: 提供了您的外部协议方案。此值应设置为http或https

5. 启动Drone Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_GITEA_SERVER=https://try.gitea.io \
--env=DRONE_GITEA_CLIENT_ID=05136e57d80189bef462 \
--env=DRONE_GITEA_CLIENT_SECRET=7c229228a77d2cbddaa61ddc78d45e \
--env=DRONE_RPC_SECRET=super-duper-secret \
--env=DRONE_SERVER_HOST=drone.company.com \
--env=DRONE_SERVER_PROTO=https \
--publish=3080:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:2

6. 安装Drone Runners

相关配置:

  • DRONE_RPC_HOST: Drone Serve地址,如:172.25.25.6:3080
  • DRONE_RPC_PROTO: 外部协议。此值应设置为http或https
  • DRONE_RPC_SECRET: 共享密钥,用于验证到服务器的rpc连接。必须为服务器和Runner提供相同的秘密值。
1
2
3
4
5
6
7
8
9
10
11
12
13
sudo docker pull drone/drone-runner-docker:1

sudo docker run --detach \
--volume=/var/run/docker.sock:/var/run/docker.sock \
--env=DRONE_RPC_PROTO=http \
--env=DRONE_RPC_HOST=172.25.25.6:3080 \
--env=DRONE_RPC_SECRET=7f470db4-3dd3-4ce5-89ec-16d825ea8919 \
--env=DRONE_RUNNER_CAPACITY=2 \
--env=DRONE_RUNNER_NAME=drone-runner \
--publish=3081:3081 \
--restart=always \
--name=runner \
drone/drone-runner-docker:1

验证是否成功

1
2
3
pi@git:~ $ sudo docker logs runner
time="2022-02-04T03:27:27Z" level=info msg="starting the server" addr=":3000"
time="2022-02-04T03:27:27Z" level=info msg="successfully pinged the remote server"

successfully pinged the remote server 表示成功