Drone 搭建记录

status
Published
type
Post
slug
drone-ci-cd
date
Feb 1, 2021
tags
Docker
DevOps
summary
Drone 是一个轻量级、现代化的持续集成和持续交付平台。通过与 Docker 和 Kubernetes 集成,以及与主流的 Git 平台联动,Drone 可以实现自动化的构建、测试和部署工作流程。在搭建过程中,需要在 Git 平台上创建一个应用,并获取 Client ID 和 Client Secret,然后将这些信息配置到 Drone Server 和 Runner 中。Drone Server 负责接收和处理 CI/CD 任务,而 Drone Runner 负责在 Docker 容器中执行这些任务。在项目中,可以通过配置一个.drone.yml 文件来定义 Drone 的工作流程,包括构建、打包和部署等步骤。最后,通过 Drone Web 界面可以手动触发 Pipeline 或配置自动触发,监控任务的运行情况。通过这种方式,可以实现高效的 CI/CD 流程,提高开发效率。
因原有的CI/CD工具近期频繁出现问题,于是用之前就看过的 Drone 来作为替代。
Drone 是一个以轻量级、现代化的持续集成和持续交付平台,Drone 可以与 Docker 和 Kubernetes 无缝衔接,也可以与主流的 Git 平台进行联动,从而实现自动化的构建、测试和部署工作流程。具体的安装步骤可参阅官方文档,以下是一些配置记录:

Drone Server

在 Gitlab 上创建一个应用,获取 Client ID 和 Client Secret,并授权 Drone 访问你的仓库。可以参考这个教程来创建应用。其中在 Redirect URI 中填写 https://drone.example.com:8080/login(根据实际的Server域名修改),在 Scopes 中勾选 api 和 read_user。
如下为 Server 的 docker-compose.yml 配置
 

Drone Runner

将 DRONE_RPC_HOST 改为你的 Drone Server 的域名,将 DRONE_RPC_SECRET 改为与 Drone Server 相同的字符串,将 DRONE_RUNNER_CAPACITY 改为你想要同时运行的容器数量,将 DRONE_RUNNER_NAME 改为一个标识你的 Runner 的名称。
其中 config.json 文件是一个JSON格式的配置文件,其中包含了 Docker 认证信息和其他相关配置项。可通过在宿主机上执行 docker login 命令登录私有镜像仓库得到。
docker login命令用于登录到一个Docker Registry,以便能够推送和拉取镜像。在执行该命令时,会提示用户输入用户名和密码,然后将认证凭证保存在配置文件中,以便后续的Docker操作可以自动使用这些凭证进行认证。
其内容格式应该如下:

项目调整

在搭建好了 Drone Server 与 Runner 后,就可以对项目进行相应的调整,在项目根目录下新建一个
.drone.yml 文件。通过此文件来定义 Drone 的工作流程。以下为 Spring Boot 项目的一个文件示例
在上述配置文件中,定义了三个步骤,每个步骤都指定了一个Docker镜像作为执行环境,并给出了一系列命令或设置。其中:
  • maven-build-package 步骤使用maven镜像来执行mvn clean package命令,将Java项目打包为jar文件。
  • build-docker-image push-image 步骤使用plugins/docker镜像来分别执行docker build和docker push命令,将jar文件打包为Docker镜像,并推送到私有镜像仓库上。私有镜像仓库的用户名和密码可在Drone Web界面中的Secrets菜单中设置。
并且其中还将 maven 配置等映射到本地文件实现了对缓存的利用。
将此文件提交并推送到代码仓库后,可在Drone Web界面中去手动执行Pipeline并观察其运行情况。当然也可以配置按分支或其他形式的自动触发。如果顺利,那么目标镜像就可以出现在私有镜像仓库中。
 
pipeline 中的配置项还有很多,还可以将测试、部署的步骤也加入其中,此处待后续完善。
 
参考资源:

2020 - 2024 © HK