最近產(chǎn)品希望把PRD部署到服務(wù)器上,方便大家查看,為了讓產(chǎn)品可以方便的把PRD部署到服務(wù)器上,于是想到了自動(dòng)部署,但是公司用的Jenkins,感覺(jué)過(guò)于雍總,而且對(duì)于環(huán)境還有些要求,所以我就想到了自建持續(xù)集成服務(wù),這時(shí)候,Gogs+Drone的組合就很方便了。
相關(guān)工具
Gogs安裝
Drone安裝
Drone也使用docker安裝
先啟動(dòng)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的訪問(wèn)地址,這個(gè)根據(jù)Gogs的部署來(lái)設(shè)置
DRONE_SERVER_HOST:Drone的訪問(wèn)地址和端口,跟瀏覽器訪問(wèn)地址保持一致,port跟下面--publish設(shè)置的保持一致
DRONE_RPC_SECRET:Drone的連接密碼,后面runner訪問(wèn)server時(shí)會(huì)用到
DRONE_SERVER_PROTO:請(qǐng)求協(xié)議,http或者h(yuǎn)ttps
再啟動(dòng)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)境搭建就好了,接下來(lái)就是配置自動(dòng)部署了
使用
因?yàn)槲业姆?wù)器上已經(jīng)安裝了nginx,我這邊需要做的事情就是每次產(chǎn)品提交prd后,將對(duì)應(yīng)的文件復(fù)制到nginx的目錄下,所以我這兒是通過(guò)shell命令來(lái)操作的
drone通過(guò)在倉(cāng)庫(kù)中添加.drone.yml來(lái)實(shí)現(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里有個(gè)from_secret,這個(gè)是在drone管理界面中管理的