Drone與gitlab結合實現自動化部署
GitLab設置
在gitlab中注冊一個賬號,此賬號用來對接drone,用此賬號登錄gitlab后,點擊頭像下拉里的設置,按下面截圖操作
image.png
image.png
點擊Applications后, 右邊Name框輸入一個名字,Redirect URI 為后面安裝drone服務的登錄地址,格式:http://ip:port/login,ip和端口根據實際情況設置,我這里是http://192.168.31.102:3080
保存后
image.png
這里的信息把上圖的信息記錄下來,后面安裝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都是宿主機的