Skip to content
On this page

CICD

CICD是指在软件开发过程中,通过自动化流程来实现持续集成、持续交付和持续部署,以提高软件的质量和可靠性。具体来说,CICD包括以下几个步骤:

  1. 持续集成(Continuous Integration):开发人员将代码提交到一个共享的代码库中,并通过自动化工具对代码进行构建、编译、测试等操作,以确保代码的正确性和稳定性。
  2. 持续交付(Continuous Delivery):在持续集成的基础上,将代码打包、部署到测试环境或者生产环境中,让用户评估和测试功能的可用性和质量。
  3. 持续部署(Continuous Deployment):在持续交付的基础上,自动化地将代码部署到生产环境中,让用户最终使用和运行。

CICD可以带来多方面的好处,例如:

  1. 快速反馈:CICD可以自动检查代码质量和集成问题,并且及时反馈给开发人员,从而减少手动调试和修复时间。
  2. 高效协作:CICD可以促进团队成员之间的合作和互动,使得开发和测试的流程更加顺畅和高效。
  3. 可靠性和稳定性:CICD可以减少手动操作的错误和风险,提高软件质量和可

drone说明

Drone is a self-service Continuous Delivery platform for busy development teams. 相对于常见的Jenkins,选中 Drone的原因在于它非常简洁,不像Jenkins那样复杂,同时它拥有可以满足基本需求的能力,并且提供了许多实用的插件,如GitHub,Email,helm,微信,钉钉等

Drone 与流行的代码托管服务平台无缝集成。你可以选择你喜欢的代码托管平台并开始集成。这里主要介绍dronegitee 进行集成的部署

gitee账号准备

需要在gitee创建一个oauth应用用于drone登录

drone 安装

服务器中使用docker 进行安装 dronedrone-runner
如果不知道如何安装dockerdocker-compose 则看这个地方 在 CentOS 7.6 上安装 Docker 和 Docker Compose
下载 drone server
Drone Server 使用轻量的 Docker 镜像分发。镜像包含自身运行的所有程序,没有任何外部依赖。使用 latest 标签可以确保你使用的 Drone 始终是最新版本。

angular2html
docker pull drone/drone:2

配置

Drone Server 使用环境变量进行配置。本文引用了配置选项的子集,具体定义如下.

  • DRONE_GITEE_CLIENT_ID
    必填项,提供你在上一步中生成的 Gitee OAuth Client ID
  • DRONE_GITEE_CLIENT_SECRET 必填项,提供你在上一步中生成的 Gitee OAuth Client Secret
  • DRONE_GITEE_SERVER
    可选项,提供你使用的 Gitee 服务器地址。默认值为 https://gitee.com
  • DRONE_GITEE_API_SERVER
    可选项,提供你使用的 Gitee API 服务器地址。默认值为 https://gitee.com/api/v5。
  • DRONE_RPC_SECRET
    必填项,提供在上一步中生成的共享密钥。这用于验证 ServerRunner 之间的 rpc 连接。必须为 ServerRunner 提供相同的秘密值。
  • DRONE_SERVER_HOST
    必填项,提供你的外部主机名或 IP 地址,例如 drone.domain.com。如果使用 IP 地址,你可以包括端口。
  • DRONE_SERVER_PROTO
    必填项,提供你的外部协议方案。此值应设置为 httphttps。如果你配置 sslacme,此字段默认为 https。如果你将 Drone 部署在负载均衡或带有禁止 SSL 的反向代理后面,则此值应设置为 http

启动 Drone Server

你可以使用以下命令启动 Server 容器。容器是通过环境变量配置的。

docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_GITEE_CLIENT_ID=f7018cdd7c2a2515eb0cc3eeea039a3aeda0991a520c9e6f7eca37b97761de20 \
  --env=DRONE_GITEE_CLIENT_SECRET=a29f1465460f620d1238b6ebf207ae6778a6bfd074b3c7befe72d5f9647ed02c \
  --env=DRONE_RPC_SECRET=super-duper-secret \
  --env=DRONE_SERVER_HOST=drone.domain.com \
  --env=DRONE_SERVER_PROTO=https \
  --publish=80:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:2

安装 drone-runner

一旦你的 Drone Server 启动并运行,你将需要安装 Runner 来执行你的构建 Pipeline

下载

安装 Docker 并拉取公共镜像

bash
docker pull drone/drone-runner-docker:1

配置

Docker Runner 是使用环境变量配置的。本文引用了以下配置选项。

  • DRONE_RPC_HOST
    提供 Drone Server 的主机名(和可选端口)。Runner 连接到指定主机地址的 Server 以接收 Pipeline 以执行。
  • DRONE_RPC_PROTO
    提供用于连接 Drone Server 的协议。该值必须是 httphttps
  • DRONE_RPC_SECRET 提供用于向 Drone Server 进行身份验证的共享密钥。这必须与你的 Drone Server 配置中定义的 Secret 匹配。

安装

以下命令创建一个容器并启动 Docker Runner 。请记住用你的 Drone Server 详细信息替换下面的环境变量。

docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=https \
  --env=DRONE_RPC_HOST=drone.company.com \
  --env=DRONE_RPC_SECRET=super-duper-secret \
  --env=DRONE_RUNNER_CAPACITY=2 \
  --env=DRONE_RUNNER_NAME=my-first-runner \
  --publish=3000:3000 \
  --restart=always \
  --name=runner \
  drone/drone-runner-docker:1

总结

以上是安装dronedrone-runner 的全部步骤。当然由于是两个容器。我们可以使用docker-compose 直接运行启动 一下是我安装时填写的配置文件(修改的自己的配置)

yaml
version: '3'
services:
  drone-server:
    restart: always  ## 容器自动重启
    image: drone/drone:latest
    container_name: drone-server
    networks:  ## 使用自定义网络,也可以不写
      - drone-net-cloudnative
    ports:
      - "8080:80"  ## 映射到宿主机的端口
    volumes:
      - ./data:/var/lib/drone:rw
    environment:
      - DRONE_GITEE_CLIENT_ID=xxxxx  ## gitee中生成的CLIENT ID
      - DRONE_GITEE_CLIENT_SECRET=xxxxx  ## gitee中生成的SECRET
      - DRONE_SERVER_HOST=http://drone.site  ## 端口需要和映射至宿主机的一致
      - DRONE_SERVER_PROTO=http 
      - DRONE_RPC_SECRET=c64bab058885900124d31250b6780307  ## openssl rand -hex 16 自动生成
      - DRONE_USER_CREATE=username:xxxxxx,admin:true  ## gitee中的用户名
      - TZ=Asia/Shanghai
      - DRONE_LOGS_DEBUG=true  ## 日志调试开关
      - DRONE_LOGS_TRACE=true  ## 日志调试开关
      - DRONE_LOGS_TEXT=true
      - DRONE_LOGS_PRETTY=true
      - DRONE_LOGS_COLOR=true
  drone-runner-docker:
    restart: always  ## 容器自动重启
    image: drone/drone-runner-docker:1
    container_name: drone-runner-docker
    networks:
      - drone-net-cloudnative
    ports:
      - "9902:3000"  ## 映射到宿主机的端口,用于提供web页面,显示任务执行情况,可不映射
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=drone-server
      - DRONE_RPC_SECRET=c64bab058885900124d31250b6780307  ## 与server服务中保持一致
      - DRONE_RUNNER_NAME=docker-worker
      - DRONE_RUNNER_CAPACITY=2
      - TZ=Asia/Shanghai 
      - DRONE_DEBUG=true
      - DRONE_LOGS_DEBUG=true
      - DRONE_LOGS_TRACE=true
    depends_on:
      - drone-server

networks:   ## 可以不自定义
  drone-net-cloudnative:
    driver: bridge

配置上自己的gitee信息直接使用 docker-compose up -d 启动即可

上次更新于: