最近產(chǎn)品希望把PRD部署到服務(wù)器上,方便大家查看,為了讓產(chǎn)品可以方便的把PRD部署到服務(wù)器上,于是想到了自動部署,但是公司用的Jenkins,感覺過于雍總,而且對于環(huán)境還有些要求,所以我就想到了自建持續(xù)集成服務(wù),這時候,Gogs+Drone的組合就很方便了。
相關(guān)工具
Gogs安裝
Drone安裝
Drone也使用docker安裝
先啟動drone server
docker run \
-v /var/lib/drone:/data \
-v /etc/localtime:/etc/localtime \
--env=DRONE_DEBUG=true \
--env=DRONE_LOGS_TRACE=true \
--env=DRONE_LOGS_DEBUG=true \
--env=DRONE_LOGS_PRETTY=true \
--env=DRONE_AGENTS_ENABLED=true \
--env=DRONE_GOGS_SERVER=http://gogs.fan-x.fun \
--env=DRONE_SERVER_HOST=1.2.3.4:10080 \
--env=DRONE_RPC_SECRET=123456 \
--env=DRONE_SERVER_PROTO=http \
--publish=10080:80 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:2
DRONE_GOGS_SERVER:gogs的訪問地址,這個根據(jù)Gogs的部署來設(shè)置
DRONE_SERVER_HOST:Drone的訪問地址和端口,跟瀏覽器訪問地址保持一致,port跟下面--publish
設(shè)置的保持一致
DRONE_RPC_SECRET:Drone的連接密碼,后面runner訪問server時會用到
DRONE_SERVER_PROTO:請求協(xié)議,http或者h(yuǎn)ttps
再啟動runner,我這兒是用的ssh執(zhí)行器,具體用啥執(zhí)行器,根據(jù)業(yè)務(wù)自定判定
docker run --detach=true \
--env=DRONE_RPC_PROTO=http \
--env=DRONE_RPC_HOST=1.2.3.4:10080 \
--env=DRONE_RPC_SECRET=123456 \
--restart always \
--name drone-ssh \
drone/drone-runner-ssh
runner的設(shè)置參考server即可
至此,環(huán)境搭建就好了,接下來就是配置自動部署了
使用
因為我的服務(wù)器上已經(jīng)安裝了nginx,我這邊需要做的事情就是每次產(chǎn)品提交prd后,將對應(yīng)的文件復(fù)制到nginx的目錄下,所以我這兒是通過shell命令來操作的
drone通過在倉庫中添加.drone.yml
來實現(xiàn)自定義流程,具體配置可以參考drone官方文檔
附上我的文件
---
kind: pipeline
type: ssh
name: default
server:
host: 127.0.0.1
user: root
ssh_key:
from_secret: mac
steps:
- name: greeting
commands:
- rm -rf /etc/nginx/www/prd/*
- cp ./* /etc/nginx/www/prd/ -R
ssh_key里有個from_secret,這個是在drone管理界面中管理的