通过修改 POM 来构建参数化功能的问题

Issue with parametrising feature builds by amending POM

我们正在开发 mule 应用程序,最近我们被指示遵循 PURE Scrum i.e.git-分支和开发流模型。

以下是我们需要遵循的步骤: 1. 对于每个开发任务(分配有 JIRA ID 例如:JIRA-1234),我们需要创建以 JIRA 任务 ID 命名的不同功能分支。

  1. 一旦开发完成,并在本地测试正常,我们需要将我们的功能分支推送到远程存储库。

  2. Jenkins 构建作业将轮询每个功能分支,并在识别到任何推送事件时构建它。部署后工件版本将保存到 Nexus。

  3. QA 会将相应的功能分支部署到测试环境中,执行 automation/manual 测试。如果测试没问题,那么feature分支会合并到develop。

  4. 在 sprint 结束时,我们将从 develop 分支创建 RELEASE 分支(它只包含当前 sprint 的 TESTED OK 开发)

我在实现这个100%时遇到了问题(当然我有点乐观):

  1. 如果 QA 需要使用 Jenkins 作业将每个功能分支部署到测试环境中,那么 Nexus 中应该已经保存了一个具有唯一名称的工件(比如 4.1.0-JIRA-1234 - 快照)。为此,我需要使用 4.1.0${JIRA_ID}-SNAPSHOT 修改 POM.xml 文件,并从 maven build 命令传递 JIRA_ID 参数。这是可能的,但是使用这个 POM.xml 文件我们在创建 RELEASE 时会遇到问题(那是因为我们使用 MVN JGITFLOW:RELEASE-START / MVN JGITFLOW:RELEASE-FINISH)

  2. 我们可以将此责任交给开发人员 - 当他们针对 JIRA ID 创建新功能分支时,他们手动将 POM.xml 中的版本修改为 4.1.0-JIRA-1234-快照。这将在功能构建后在 Nexus 中创建工件,QA 可以将其部署到测试中并完成测试。问题是合并时,由于重叠值,更多功能分支可能与 POM.xml 文件冲突。

谁能建议我处理这种情况的最佳方法,并正确遵循 GIT-FLOW 流程?

这个问题有一个解决方案——将脚本添加到构建功能分支作业中。这将只读取功能分支名称并附加到工件名称。

例如: 功能分支名称 - JIRAID-1234 POM 工件版本 - 1.1.0-SNAPSHOT

Jenkins 构建作业最终会在 nexus 中生成名为 1.1.0-JIRAID-1234-SNAPSHOT 的工件

这可以更轻松地保存我的特定更改,并有助于 QA 独立部署和测试