git - Git 流程和持续集成/持续交付
问题描述
我试图弄清楚将 Git 流与 CI/CD 管道一起使用所涉及的步骤(nb 交付而不是部署)
我想我可以有一份由推送到开发分支触发的 Jenkins 工作。另一个是在发布分支合并到主分支时触发的。以下是我认为可能涉及的粗略草图。这些是使用 Gradle 作为构建工具的 Java 项目,其中多个子项目作为存储库的一部分。
开发人员将更改推送到子项目远程开发分支
Jenkins 子项目开发分支管道
- 子项目詹金斯的工作开始了
- 运行子项目的增量构建
- 如果通过发布快照 jar 和源到快照工件 repo/else 向开发人员发送电子邮件
- 基于快照创建 docker 镜像
- 推送 docker 镜像
- 让 kubernetes 在开发服务器中启动 docker 映像
- 运行进一步的测试(例如,非功能性的性能、验证码扫描等)
- 如果将分支开发分支传递到子项目的新发布分支(版本在创建时确定)/否则向开发人员发送电子邮件
- 从项目版本中删除快照,例如。1.0-SNAPSHOT 变为 1.0
- 将更改合并到 master 并用版本和子项目标记它,例如。1.0-服务X
- 将更改合并到开发中并将版本升级到新快照,例如。1.1-快照
Jenkins子项目主分支管道
- 子项目詹金斯的工作开始了
- 运行子项目的干净构建
- 如果通过发布发布 jar 和源来发布工件 repo
- 根据发布创建 docker 镜像
- 推送 docker 镜像
- 让 kubernetes 在 SIT 服务器中启动 docker 映像
- 运行进一步的测试(例如,非功能性的性能、验证码扫描等)
- 如果通过,kubernetes 在 UAT 服务器中启动 docker 映像
- 运行进一步的测试(例如,非功能性的性能、验证码扫描等)
- 发布准备手动部署到 Prod
所以 dev 管道合并到 master 会触发 master 管道。不过我有很多问题。
- 我把它作为开发管道的增量构建,即不干净。这是快速反馈的好主意吗?
- 关于快速反馈的类似说明,这是否应该跳过集成测试?
- 如果是的话,我是否需要另一个管道来构建包含集成测试的开发分支的夜间构建。或者在主分支中运行集成测试是否令人满意?
- 快照!我不确定这些是否适合 Gitflow?我需要它们吗?如果不是在开发管道的第 3 步,我将启动发布分支,使用新版本进行另一个构建,将其发布到工件等。
现在就可以了!
解决方案
推荐阅读
- javascript - Javascript 使用对象和重命名属性来扁平化深度嵌套的数组
- javascript - JQuery 使用类标签 onclick 附加 HTML
- apache-kafka - 如果生产者执行重试,两条消息是否具有相同的时间戳?
- c++ - 难以理解动态多态性
- angular - getDisplayMedia 未在 TypeScript 3.8 中指定
- java - 根据Android中的本地语言更改语言
- django - 构建的 Docker 映像无法到达 postgreSQL
- asp.net - 404 - 找不到文件或目录。本地和服务器的不同结果
- android - 我们可以在没有真实设备的情况下在 Android Studio 中创建一个真实设备模型特定的模拟器/模拟器,比如 OPPO A37 模型吗
- javascript - 如何在数组中写入对象?