Gogs+Drone实现自动化部署

最近产品希望把PRD部署到服务器上,方便大家查看,为了让产品可以方便的把PRD部署到服务器上,于是想到了自动部署,但是公司用的Jenkins,感觉过于雍总,而且对于环境还有些要求,所以我就想到了自建持续集成服务,这时候,Gogs+Drone的组合就很方便了。

相关工具

  1. Docker
  2. Gogs: A painless self-hosted Git service
  3. Drone CI – Automate Software Testing and Delivery

Gogs安装

参考使用Docker + Gogs搭建git私服

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的访问地址,这个根据Gogs的部署来设置
DRONE_SERVER_HOST:Drone的访问地址和端口,跟浏览器访问地址保持一致,port跟下面--publish设置的保持一致
DRONE_RPC_SECRET:Drone的连接密码,后面runner访问server时会用到
DRONE_SERVER_PROTO:请求协议,http或者https

再启动runner,我这儿是用的ssh执行器,具体用啥执行器,根据业务自定判定

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的设置参考server即可

至此,环境搭建就好了,接下来就是配置自动部署了

使用

因为我的服务器上已经安装了nginx,我这边需要做的事情就是每次产品提交prd后,将对应的文件复制到nginx的目录下,所以我这儿是通过shell命令来操作的
drone通过在仓库中添加.drone.yml来实现自定义流程,具体配置可以参考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管理界面中管理的

你可能感兴趣的:(Gogs+Drone实现自动化部署)