Ubuntu部署Drone CI + Github
参考官方文档
https://docs.drone.io/server/provider/github/
前提:
Docker
配置启动Drone CI Server
我们使用docker镜像启动DroneCI server.所以我们先看一下启动命令模版
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_GITHUB_CLIENT_ID={{DRONE_GITHUB_CLIENT_ID}} \
--env=DRONE_GITHUB_CLIENT_SECRET={{DRONE_GITHUB_CLIENT_SECRET}} \
--env=DRONE_RPC_SECRET={{DRONE_RPC_SECRET}} \
--env=DRONE_SERVER_HOST={{DRONE_SERVER_HOST}} \
--env=DRONE_SERVER_PROTO={{DRONE_SERVER_PROTO}} \
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:latest #我发博文时的最新版
可以看到我们需要准备很多的环境变量配置信息.
准备
注册Github OAuth Application信息
参考官方文档:Creating an OAuth App
注意事项
HomePageURL表示DroneCI的域名或IP地址+端口,比如127.0.0.1:80
Authorization callback URL是DroneCI的Github登录回调,比如 127.0.0.1:80/login
生成通信秘钥
openssl rand -hex 16
07d004c348b72262bdc7fb6bc64e1275
设置变量信息
- DRONE_GITHUB_CLIENT_ID: 在Github中创建OAuth Applucation时生成的
Client ID
- DRONE_GITHUB_CLIENT_SECRET: 在Github中创建OAuth Applucation时生成的
Client Secret
- DRONE_RPC_SECRET:通信秘钥,自定义设置,或者使用OpenSSL工具生成
- DRONE_SERVER_HOST: Drone的server地址,设置为
127.0.0.1
作为本地地址,也可以设置为外部可访问的域名或IP地址 - DRONE_SERVER_PROTO: Drone提供服务的prototype,可选为
http
或https
DRONE_GITHUB_CLIENT_ID=60e8f8cb583488addf25a0
DRONE_GITHUB_CLIENT_SECRET=a4040b3f4649d7d4742bbe57d67de
DRONE_RPC_SECRET=07d004c348b72262bdc7fb6bc64e1275
DRONE_SERVER_HOST=124.xxx.xxx.xxx:10080
DRONE_SERVER_PROTO=http
启动Drone CI server
docker pull drone/drone:latest
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID} \
--env=DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET} \
--env=DRONE_RPC_SECRET=${DRONE_RPC_SECRET} \
--env=DRONE_SERVER_HOST=${DRONE_SERVER_HOST} \
--env=DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO} \
--publish=10080:80 \
--publish=10443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:latest #我发博文时的最新版
配置启动Drone CI Runner
参考官方文档:https://docs.drone.io/runner/docker/overview/
docker pull drone/drone-runner-docker:latest
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=124.xxx.xxx.xxx:10080 \
-e DRONE_RPC_SECRET=07d004c348b72262bdc7fb6bc64e1275 \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \
-p 3000:3000 \
--restart always \
--name runner \
drone/drone-runner-docker:linux-arm64