什么是Drone CI

不想写,自个儿搜吧。
这玩意儿作为CI入门还是可以的,部署方便,功能也比较强大。

环境工作

  1. Gitea私服(也可以用其他的,Github、Gogs等都可以,我是用的Gitea)
  2. Docker 以及 Docker Compose

开始部署

  1. 在gitea新建一个应用

操作流程:

  1. 点击右上角头像
  2. 选择应用
  3. 创建新的 OAuth2 应用程序,名称随便写,重定向URL写http://下文yml中设置的域名/login
  4. 保存,记录下客户端ID和密钥,下面要用到
  1. 创建docker-compose.yml
version: '3'

services:
  drone-server:
    container_name: drone-server
    image: drone/drone:latest
    restart: always
    environment:
      - DRONE_GITEA_SERVER=gitea服务地址
      - DRONE_GITEA_CLIENT_ID=上一步创建完成后生成的客户端ID
      - DRONE_GITEA_CLIENT_SECRET=上一步创建完成后生成的客户端密钥
      - DRONE_GIT_ALWAYS_AUTH=false
      - DRONE_GITEA_SKIP_VERIFY=true
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_SERVER_PROTO=http
      - DRONE_SERVER_HOST=drone的域名,也可以是 ip:port 的组合,和第一步填写的重定向URL的域名部分一致
      - DRONE_TLS_AUTOCERT=false
      - DRONE_NETWORK=cicd_default
      - DRONE_RUNNER_NETWORKS=cicd_default
      # 这个密钥是给runner用的
      - DRONE_RPC_SECRET=Mu4Z1A9QgjOVEkyI
      - DRONE_AGENTS_ENABLED=true
    ports:
      # 控制台页面端口
      - "8000:80"
    volumes:
      - /data/drone:/data

  drone-runner:
    container_name: drone-runner
    image: drone/drone-runner-docker:latest
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http
      # 如果直接使用本配置,这儿不需要改,如果部署到其他服务器,需要填server的域名
      - DRONE_RPC_HOST=drone-server
      # server配置的DRONE_RPC_SECRET
      - DRONE_RPC_SECRET=Mu4Z1A9QgjOVEkyI
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_RUNNER_NAME=drone-runner
      - DRONE_RPC_SKIP_VERIFY=true
      # 下面注释的是runner的控制台,没必要加上,server可以直接看到
      # - DRONE_UI_USERNAME=root
      # - DRONE_UI_PASSWORD=root
    # ports: 
    #   - 3000:3000
  1. 启动服务

docker-compose up -d

  1. 如果不出错的话,就已经启动成功了

如何使用

在项目中新建一个.drone.yml文件即可,文件怎么写请参考官方文档或者自行网上搜索

结果展示

项目Demo ci配置截图 运行结果