github + drone自动化部署


前言

很多同学用github管理我们的代码,下面介绍下怎么用github+drone搭建自己的持续集成服务

申请oauth

因为我们需要依赖github的oauth服务,先申请一个Client Id和Client Secret:
申请页面位于github->setting->Developer settings->OAuth Apps
申请oauth页面
提交完毕,我们就可以得到Client Id和Client Secret:
申请结果页

编写docker-compose

接下来创建一个docker-compose.yml文件内容如下:

version: '2'
services:
  drone-server:
    image: drone/drone:1
    container_name: drone-server
    ports:
      - '10081:80'      # Web管理面板的入口 PROTO=http  时使用该端口
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock   # docker.sock [1]
      - /var/data/drone/:/var/lib/drone             # drone数据存放路径
    environment:
      - DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}  #上面申请的github CLIENT_ID
      - DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}#上面申请的github CLIENT_SECRET
      - DRONE_RPC_SECRET=${DRONE_RPC_SECRET}   #你的密钥MD5值即可
      - DRONE_SERVER_HOST=你的IP:10081
      - DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO} #http 或 https  
      - TZ=Asia/Shanghai
    restart: always
  drone-agent:
    image: drone/drone-runner-docker:1
    container_name: drone-runner
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # docker.sock [1]
    environment:
      - DRONE_RPC_PROTO=${DRONE_SERVER_PROTO} #http 或 https
      - DRONE_RPC_HOST=你的IP:10081
      - DRONE_RPC_SECRET=${DRONE_RPC_SECRET} #你的密钥MD5值即可,跟上面的保持一致
      - DRONE_RUNNER_CAPACITY=2 #最多同时运行几个
      - DRONE_RUNNER_NAME=你的IP
      - TZ=Asia/Shanghai
    restart: always

当前目录下执行docker-compose up -d就可以启动了.
启动docker-compose
访问我们的主页你的ip:10081,效果如图
项目列表
设置信息

编写.drone.yml

上图可以看到需要开启自动集成的项目还需要编写.drone.yml文件

---
kind: pipeline
type: docker
name: api-ui
workspace:
  base: /data/service
  path: .
steps:
- name: 部署api-ui项目
  image: appleboy/drone-ssh
  settings:
    host:
      from_secret: host
    port: 22
    username:
      from_secret: ssh_name
    password:
      from_secret: ssh_passwd
    script:
      - cd /home/xxxxxx/www/api-ui/
      - pwd && ls -l
      - git pull origin master
      - rm -rf dist/*
      - cnpm run build
      - pwd && ls -l
      - docker build -t api-ui:v1 .
      - docker rm -f api-ui || true
      - docker run -d --rm --name api-ui -p 80:80 api-ui:v1

上面的from_secret后面的值可以在我们的setting页面添加
加密内容
设置完毕,我们后续提交代码的时候就会自动同步到我们的服务器了,是不是很方便呢
运行结果


文章作者: silver fox
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 silver fox !
评论
  目录