安裝Gogs
此步驟不再贅述,另外一篇文章有記錄:http://www.lxweimin.com/p/a867f1f39f0f
安裝Drone
請參考官方文檔進行安裝,鏈接:https://docs.drone.io/
運行起來一個完整的Drone,需要安裝Drone Server和Drone Runner,這里注意:Runner會去實際執(zhí)行pipline,如果沒有安裝運行對應(yīng)的runner,那么不會執(zhí)行pipline,比方說,yaml文件寫的type是ssh,則需要另外安裝drone-runner-ssh,type為docker則需要安裝drone-runner-docker:1,因為本人實際需要,本文將會將這兩個鏡像都拉下來運行。
直接run鏡像,找不到會自動前去拉取
docker run -d \
-v /export/drone/data:/data \
-e DRONE_AGENTS_ENABLED=true \
-e DRONE_GOGS_SERVER=http://gogs的域名或ip地址:端口 \
-e DRONE_RPC_SECRET=密鑰key \
-e DRONE_SERVER_HOST=drone的web網(wǎng)頁域名或ip地址:端口 \
-e DRONE_SERVER_PROTO=http \
-e DRONE_USER_CREATE=username:管理員名稱(gogs用戶),admin:true \
-e TZ="Asia/Shanghai" \
-p web端口:80 \
--restart=always \
--name=drone \
drone/drone:1
docker run -d \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=web域名或ip地址:端口 \
-e DRONE_RPC_SECRET=密鑰key \
-p 4001:3000 \
--restart always \
--name runner-ssh \
drone/drone-runner-ssh
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=http \
-e DRONE_RPC_HOST=web域名或ip地址:端口 \
-e DRONE_RPC_SECRET=密鑰key \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=runner-docker \
-e TZ="Asia/Shanghai" \
-p 4002:3000 \
--restart=always \
--name=runner-docker \
drone/drone-runner-docker:1
檢查配置是否正常
請細心檢查以下步驟是否正常,某一步出錯將可能導(dǎo)致無法正常使用
- 登錄drone激活倉庫,登錄地址為上面的drone的web網(wǎng)頁域名或ip地址:端口
- 登錄后,正常會出現(xiàn)gogs的倉庫,第一次點進倉庫后,會出現(xiàn)Activate repository字樣的按鈕,點擊進行激活
- 在倉庫編寫正確規(guī)范的
.drone.yml
文件 - 登錄gogs,進入倉庫設(shè)置,找到
管理 Web 鉤子
,進入鉤子,注意檢查推送地址是否有誤,比方說出現(xiàn)2個http
,如果有,進行修正 - 找到最底部的最近推送記錄,右邊有個測試推送,點擊進行測試推送
- 登錄drone后臺,查看是否收到推送,并且成功執(zhí)行相應(yīng)的操作(yaml文件寫的命令操作)
如果無法正常執(zhí)行,應(yīng)當?shù)卿浄?wù)器,查看對應(yīng)drone-runner的docker日志觀察Runner與Drone的連接是否正常,如果是正常,則查看drone-server的docker日志,進行排查問題,docker 查看日志指令:
docker logs -f 容器ID
- 如果上述能正常推送,drone-runner也能正常按照yaml文件指定的命令進行操作,則說明整套流程已經(jīng)正常完成,如果中途出現(xiàn)異常,應(yīng)當多查看drone-server和drone-runner的docker日志,另外yaml文件配置也務(wù)必正確規(guī)范
重新部署
如果發(fā)現(xiàn)鏡像有誤,需要重新部署,則停止容器,刪除容器及鏡像,重新正確設(shè)置run起來即可
docker stop 容器ID
docer rm 容器ID
docker rmi 鏡像ID
Yaml文件撰寫
https://nodeca.github.io/js-yaml/ 可以檢查yml語法是否正常,注意:一次只能檢查一個文檔
ssh demo(注:下面的用戶名、密碼通常不會使用明文,而是使用drone后臺的Secrets)
---
kind: pipeline
type: ssh
name: default
server:
host: 服務(wù)器地址
user: 用戶名
password:
from_secret: 密碼
steps:
- name: greeting
commands:
- echo hello world
docker demo
kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
根據(jù)git TAG觸發(fā)的pipline(比方說:git打上某個tag,則觸發(fā)某個操作,例如:pull代碼,build鏡像,重啟容器等)
---
kind: pipeline
type: ssh
name: default
server:
host: 服務(wù)器地址
user: 用戶名
password:
from_secret: 密碼
steps:
- name: greeting
commands:
- echo hello world
when:
event:
- tag
結(jié)尾
出錯多看日志,多動腦