Drone与gitlab结合实现自动化部署
GitLab设置
在gitlab中注册一个账号,此账号用来对接drone,用此账号登录gitlab后,点击头像下拉里的设置,按下面截图操作
点击Applications后, 右边Name框输入一个名字,Redirect URI 为后面安装drone服务的登录地址,格式:http://ip:port/login,ip和端口根据实际情况设置,我这里是http://192.168.31.102:3080
保存后
这里的信息把上图的信息记录下来,后面安装drone会用到
Application: drone
Application ID | 0aa1809a0bdbf1f826acfd112b9d489f074fb9ca633c2e78af9737cba00b76fa |
---|---|
Secret | 9e84d46335ff0bdd26656d6b7257bc5cb3d81a78904a2f11e7f026f009012ada |
Callback URL | http://192.168.31.102:3080/login |
用docker来安装drone
drone有个Server和Runner的概念,我们先来理解下:
- Server:为Drone的管理提供了Web页面,用于管理从Git上获取的仓库中的流水线任务。
- Runner:一个单独的守护进程,会轮询Server,获取需要执行的流水线任务,之后执行。
#拉取镜像
docker pull drone/drone
docker pull drone/drone-runner-docker
#运行
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_AGENTS_ENABLED=true \
--env=DRONE_GITLAB_SERVER=http://192.168.31.103 \
--env=DRONE_GITLAB_CLIENT_ID=0aa1809a0bdbf1f826acfd112b9d489f074fb9ca633c2e78af9737cba00b76fa \
--env=DRONE_GITLAB_CLIENT_SECRET=9e84d46335ff0bdd26656d6b7257bc5cb3d81a78904a2f11e7f026f009012ada \
--env=DRONE_SERVER_HOST=192.168.31.102:3080 \
--env=DRONE_SERVER_PROTO=http \
--env=DRONE_TLS_AUTOCERT=false \
--env=DRONE_LOGS_DEBUG=true \
-e DRONE_RPC_SECRET=4f3b7f51e3dd678c08cf2d0675c66760 \
--env=DRONE_USER_CREATE=username:flynn,admin:true \
-e TZ="Asia/Shanghai" \
--publish=3080:80 --publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone
docker run -d -v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=192.168.31.102:3080 \
-e DRONE_RPC_SECRET=4f3b7f51e3dd678c08cf2d0675c66760 \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \
-e TZ="Asia/Shanghai" \
-p 3000:3000 \
--restart always \
--name runner \
drone/drone-runner-docker
启动服务server和runner服务是注意:
DRONE_RPC_SECRET要一致
DRONE_SERVER_HOST和DRONE_RPC_HOST为droen-server对外访问地址,格式ip:port,ip和port都是宿主机的