基于云原生的应用大多都离不开CI/CD工具或平台。现有很多优秀的开源工具,如:Jenkins、Github Actions 等,对于Jenkins来说比较笨重,占用系统资源较多,而GitHub Actions则依赖于GitHub云服务器,无法和本地k8s集群交互。
有没有一种工具可以在本地环境运行,资源占用少,方便学习和实践。本文将介绍一个比较轻量级的CI工具 - Drone,接下来将采用Helm的方式在Kubernetes中安装 Drone工具。
主流CI工具对比
本机环境
- Drone 2.12.1
- Kubernetes 1.26.5
- Helm 3.12.0
Drone 介绍
Drone CI 是一个开源的持续集成和持续交付(CI/CD)平台,旨在帮助开发者轻松地构建、测试和部署他们的应用程序。它基于容器化架构,使用 Docker 等容器技术来执行构建、测试和部署任务,使得它能够更快速、高效地处理多个项目和并行构建。
以下是 Drone CI 的一些关键特点和优势:
- 容器化执行: Drone CI 使用 Docker 容器来运行构建和测试任务,每个任务都在独立的容器中运行。这样可以确保任务之间的隔离,提高可靠性和安全性。
- 易于扩展: Drone CI 的插件系统允许用户通过添加自定义插件来扩展其功能。它还支持与其他工具和服务的集成,例如 GitHub、GitLab、Slack 等。
- 简单配置: Drone CI 的配置文件使用 YAML 格式,易于理解和编写。用户可以轻松定义构建和部署流程,以满足他们项目的需求。
- 轻量级: Drone CI 是一个轻量级的 CI/CD 工具,部署和使用都相对简单。它不需要复杂的服务器和配置,使得它成为个人项目和小型团队的理想选择。
- 多平台支持: Drone CI 可以运行在多个平台上,包括云服务、本地服务器或自己的基础设施。
- 版本控制集成: Drone CI 紧密集成了流行的版本控制系统,如 GitHub、GitLab 和 Bitbucket。它能够在代码提交时自动触发构建和部署任务。
- 可视化界面: Drone CI 提供一个直观的 Web 界面,让用户可以方便地查看构建历史、状态和日志等信息。
Drone CI 的开源性质使得开发者可以自由地使用和修改它,同时社区支持和活跃度也使得它不断得到改进和更新。对于那些寻求简单、高效和灵活的 CI/CD 解决方案的开发者,Drone CI 是一个值得考虑的选择。
Drone 安装
这里将结合 GitHub 和 Drone 使用,首先需要先在 GitHub 中注册一个新的 OAuth 应用程序,登录 GitHub,进入页面 https://github.com/settings/applications/new
Github配置
创建名为Drone
的OAuth应用,并记录下用于配置 Drone 的 ClientID 和 ClientSecret。
准备Helm Values文件
先添加Drone的Helm仓库:
Drone主要有Drone Server 和 Drone Runner,下面分别是这两个的配置文件。
1)Drone-Values.yaml
:
下图中掩码部分就是上面获取到的ClientID和ClientSecrets这两个值。
2)Drone-Runner-Values.yaml
:
3)本地磁盘存储配置
因为我这边使用的是本地K8S,这里需要配置一下本地的PV,方便数据进行存储,后续应用启停后,数据可以恢复。主要有两个YAML文件。
local-storage-class.yaml
:
drone-local-pv.yaml
:
执行安装命令
1)前置命令执行
执行local-storage、drone-local-pv、创建namespace等命令:
2)通过helm
安装Drone和Drone Runner
安装后的结果展示
Drone Server:
Drone Runner:
到这里我们就本地安装好了Drone CI工具。
Drone 使用
开通外网访问
一般使用Ingress + 域名的方式进行外网的暴露,这里使用NodePort,使用本机的端口进行配置,使用如下命令:
kubectl --namespace drone port-forward $POD_NAME 9000:80
这里将$POD_NAME
替换成本地的pod名称。
Github授权
浏览器访问http://localhost:9000
,打开Drone页面,如下图,点击CONTINUE
后,进行Github 仓库授权。
同步成功后,输入用户信息,如下:
最终可以看到Dashboard中,将github下的代码仓库都同步过来了。
代码仓库激活
点击进入scaffold-onion-architecture
项目,打开激活页面,如下:
在代码仓库中配置.drone.yml
文件
简单的pipeline配置,如下:
kind: pipeline
type: kubernetes
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
点击+ NEW BUILD
后,会进行pipeline构建,如下图所示:
到这儿我们就通过Helm在Kubernetes集群中成功安装了 Drone CI 了。
参考
New OAuth Application (github.com)
Drone CI – Automate Software Testing and Delivery
amuguelove/scaffold-onion-architecture (github.com)
「真诚赞赏,手留余香」
请我喝杯咖啡?
使用微信扫描二维码完成支付
