持续集成平台Drone CI的Docker部署和使用
编辑本文使用Gitee代码仓储,Linux的Docker环境下,演示如何使用部署Drone和自动化构建项目
1.创建Gitee应用
个人》设置》第三方应用,创建一个第三方应用。

- Client ID应用自行生成
- Client Secret应用自行生成
- 应用主页Drone部署地址,我使用这样的格式:https://drone.xxx.com
- 应用回调地址Drone使用账号授权后的回调地址,我使用这样的格式:https://drone.xxx.com/login
2.Dcoker-compose部署Drone服务
  drone:
    image: "drone/drone:2"
    container_name: drone
    privileged: true
    volumes:
     - /etc/localtime:/etc/localtime
     - /data/drone/data:/data
    environment:
     - DRONE_GITEE_CLIENT_ID=xxx
     - DRONE_GITEE_CLIENT_SECRET=xxx
     - DRONE_RPC_SECRET=xxx
     - DRONE_SERVER_HOST=drone.xxx.com
     - DRONE_SERVER_PROTO=https
     - DRONE_USER_CREATE=username:xxx,admin:true
    networks:
      - backend
    restart: always- DRONE_GITEE_CLIENT_ID上一步骤生成的Client ID
- DRONE_GITEE_CLIENT_SECRET上一步骤生成的Client Secret
- DRONE_RPC_SECRET密钥,推荐使用32位GUID,如:2a5g0c0eb7avy7ed18fd198785ed1d86
- DRONE_SERVER_HOSTDrone部署地址
- DRONE_SERVER_PROTODrone部署协议
- DRONE_USER_CREATE创建管理员账户,这里对应为gitee的用户名(也就是登录的账号,不是昵称)(填错了会导致自动化部署失败),如:username:myname,admin:true
Drone服务部署好后,注意要使用Nginx将Drone服务进行web转发,Drone容器默认对外暴露80和443端口,在networks网络环境下自行配置转发即可,侦听的域名即为上面所说的部署地址。
3.Dcoker-compose部署Drone的Runner服务
Runner是Drone的执行服务,负责对Drone的命令进行轮询侦听和执行,可以部署多个Runner同时工作
  runner:
    image: "drone/drone-runner-docker:1"
    container_name: runner
    privileged: true
    depends_on:
      - drone
    volumes:
     - /etc/localtime:/etc/localtime
     - /var/run/docker.sock:/var/run/docker.sock
    environment:
     - DRONE_RPC_PROTO=https
     - DRONE_RPC_HOST=drone.xxx.com
     - DRONE_RPC_SECRET=xxx
     - DRONE_RUNNER_CAPACITY=2
     - DRONE_RUNNER_NAME=runner
     - DRONE_RUNNER_LABELS=server:guangzhou
     - DRONE_DEBUG=true
     - DRONE_LOGS_DEBUG=true
     - DRONE_LOGS_TRACE=true
     - TZ=Asia/Shanghai
    networks:
      - backend
    restart: always- DRONE_RPC_PROTODrone部署协议
- DRONE_RPC_HOSTDrone部署地址
- DRONE_RPC_SECRETDrone服务一致的密钥
- DRONE_RUNNER_CAPACITY限制 Runner 可以执行的并发 Pipeline 的数量
- DRONE_RUNNER_NAMERunner的名称
- DRONE_RUNNER_LABELSRunner标签,可在项目脚本上指定一个Runner执行
- DRONE_DEBUG是否开启debug
- DRONE_LOGS_DEBUG是否开启debug日志
- DRONE_LOGS_TRACE是否开启trace日志
- TZ=Asia/Shanghai时区选择
4.使用Drone服务
打开Drone部署地址

点击 Continue 继续

完成授权后,Drone会得到账号下所有的仓储,根据需要激活对应的仓储服务

仓储项目配置,保存配置即可

接下来我们在仓储的根目录,建立一个 .drone.yml 脚本
kind: pipeline
type: docker
name: test
clone:
  disable: true
node:
  server: runner1
steps:
- name: build test
  image: appleboy/drone-ssh
  settings:
    host: 127.0.0.1
    username: root
    password:
      from_secret: password
    port: 22
    command_timeout: 5m
    script:
      - cd /data/code/test
      - git pull --progress -v --no-rebase "origin"
      - cd /data/ymls
      - sh build.sh

个人喜欢使用 appleboy/drone-ssh 直接远控服务器进行项目发布(也有其它的方式进行项目构建,发送编译包等,自行探索)
- node.server指定Runner才可以执行
- steps.settings.password.from_secret使用加密密文。如果脚本有敏感信息(如服务器密码),是不适合直接写在脚本上的,可使用Drone自带的密文进行替换
- steps.settings.script插件drone-ssh会逐行执行脚本,只需要提前将编译脚本放进服务器即可完成代码拉取,编译,发布的所有过程
注意:gitee的仓库名称和git地址一定要一致,否则webhook会提示仓库不存在,应该是属于bug

5.更多插件
Drone支持很多插件,比如钉钉推送,附上插件地址
- 0
- 0
- 
              
              
  分享
