CICD
CICD是指在软件开发过程中,通过自动化流程来实现持续集成、持续交付和持续部署,以提高软件的质量和可靠性。具体来说,CICD包括以下几个步骤:
- 持续集成(Continuous Integration):开发人员将代码提交到一个共享的代码库中,并通过自动化工具对代码进行构建、编译、测试等操作,以确保代码的正确性和稳定性。
- 持续交付(Continuous Delivery):在持续集成的基础上,将代码打包、部署到测试环境或者生产环境中,让用户评估和测试功能的可用性和质量。
- 持续部署(Continuous Deployment):在持续交付的基础上,自动化地将代码部署到生产环境中,让用户最终使用和运行。
CICD可以带来多方面的好处,例如:
- 快速反馈:CICD可以自动检查代码质量和集成问题,并且及时反馈给开发人员,从而减少手动调试和修复时间。
- 高效协作:CICD可以促进团队成员之间的合作和互动,使得开发和测试的流程更加顺畅和高效。
- 可靠性和稳定性:CICD可以减少手动操作的错误和风险,提高软件质量和可
drone说明
Drone is a self-service Continuous Delivery platform for busy development teams. 相对于常见的Jenkins,选中 Drone的原因在于它非常简洁,不像Jenkins那样复杂,同时它拥有可以满足基本需求的能力,并且提供了许多实用的插件,如GitHub,Email,helm,微信,钉钉等
Drone
与流行的代码托管服务平台无缝集成。你可以选择你喜欢的代码托管平台并开始集成。这里主要介绍drone
和 gitee
进行集成的部署
gitee账号准备
需要在gitee
创建一个oauth
应用用于drone
登录
drone 安装
服务器中使用docker 进行安装 drone
和 drone-runner
如果不知道如何安装docker
和docker-compose
则看这个地方 在 CentOS 7.6 上安装 Docker 和 Docker Compose
下载 drone serverDrone Server
使用轻量的 Docker
镜像分发。镜像包含自身运行的所有程序,没有任何外部依赖。使用 latest
标签可以确保你使用的 Drone 始终是最新版本。
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
必填项,提供在上一步中生成的共享密钥。这用于验证Server
和Runner
之间的rpc
连接。必须为Server
和Runner
提供相同的秘密值。 - DRONE_SERVER_HOST
必填项,提供你的外部主机名或IP
地址,例如drone.domain.com
。如果使用 IP 地址,你可以包括端口。 - DRONE_SERVER_PROTO
必填项,提供你的外部协议方案。此值应设置为http
或https
。如果你配置ssl
或acme
,此字段默认为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 并拉取公共镜像
docker pull drone/drone-runner-docker:1
配置
Docker Runner 是使用环境变量配置的。本文引用了以下配置选项。
- DRONE_RPC_HOST
提供Drone Server
的主机名(和可选端口)。Runner
连接到指定主机地址的Server
以接收Pipeline
以执行。 - DRONE_RPC_PROTO
提供用于连接Drone Server
的协议。该值必须是http
或https
。 - 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
总结
以上是安装drone
和drone-runner
的全部步骤。当然由于是两个容器。我们可以使用docker-compose
直接运行启动 一下是我安装时填写的配置文件(修改的自己的配置)
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
启动即可