持续集成
什么是持续集成
大师 Martin Fowler 对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。 同样的道理,持续性交付的最佳实践进一步扩展了持续性集成(CI),以确保软件检核在主要程序上并且能够布署到用户以确保实际的布署流程可以非常快速。
持续集成的好处
-
快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
-
防止分支大幅偏离主干,如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成
-
更快速的发布更新,持续集成可以帮助团队更快速、更积极的发布程序和更新程序。在发布时可自动完成大量重复的工作、节省人力
Drone
介绍
Drone 是一种基于 Docker 技术构建的连续交付系统。Drone 使用简单的 YAML 配置文件(一个 Docker 组合的命令集)来定义和执行 Docker 容器中的管道。
- Drone 可以与多个源代码管理系统无缝集成,包括 Github、Github 企业版、Bitbucket、Gitlab、Gogs、Gitea 等。
- Drone 本身支持多个操作系统和系统架构,包括 Linux x64、ARM、ARM64 和 Windows x64
- Drone 可处理在 Docker 容器内运行的任何语言、数据库或服务。可以从公共 Docker 镜像源中选择,或提供您自己的镜像。
部署
本文介绍如何为 Gitea 安装 Drone 服务。使用 Drone + Gitea 实现持续集成平台,并通过 yml,实现打包前端、后端、移动端项目。
1. 安装 Gitea
Gitea 我们使用 Docker 安装
docker pull gitea/gitea:1.12.6
docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /var/lib/gitea:/data gitea/gitea:latest
2. 在 Gitea 中创建认证源
如图所示,使用管理员账户登录在管理面板--->认证源中添加一个认证源,客户端 ID 和密钥可以自行生成
3. 安装 Drone
docker pull drone/drone:1
创建镜像时有以下几个参数要配置,按照实际情况将参数填入配置项中
docker run \
--volume=/var/lib/drone:/data \
--env=DRONE_GITEA_SERVER={{创建的Gitea服务器的IP地址}} \
--env=DRONE_GITEA_CLIENT_ID={{上一步中生成的客户端id}} \
--env=DRONE_GITEA_CLIENT_SECRET={{上一步中生成的客户端密钥}} \
--env=DRONE_RPC_SECRET={{Drone程序的共享密钥,随机生成即可,注意保存密钥值}} \
--env=DRONE_SERVER_HOST={{Drone 对外的服务器地址}} \
--env=DRONE_SERVER_PROTO={{Drone 对外的服务器端口}} \
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:1
4. 查看安装是否成功
在安装成功之后,可以打开 Drone 的地址+端口,查看是否安装成功,如果安装成功则会跳转到 Gitea 的登陆界面,登陆之后跳转到 Drone 的控制台
在 Drone 的控制台中可以看到自己的 Gitea 中的项目,如果发现项目未在列表中可以点击 SYNC 按钮进行同步