如何通过持续部署触发发布管道?
How do I trigger release pipeline with continuous deployment?
标题不是最好的,我同意,请阅读更多细节以理解我的意思...
我有一个 project/repository 具有以下属性:
- 提交消息在Conventional Commits
之后
- 以上结果:仓库中没有一个地方有版本号。版本是根据提交历史自动计算的。
- 过去“发布”的历史基本上是 git 标记历史(当发布完成并且
1.2.3
版本出现时,相应的提交被标记)
- CI 是“简单的”/与 Github 集成,每个 merge/push 掌握触发完整管道 包括
deploy
/release
部分(产生新版本,推送标签,简称“发布”)
- 我没有办法(或者,我认为我没有办法,或者我不想)手动触发 CI 以从 CI 本身释放。每个触发器都应该来自 git/github.
虽然这在一般情况下工作得很好,但我的问题是通常回购是不变的并且没有收到真正的新提交,但是在一些活跃的日子里我可能有 2-3-4-10 个新的拉取请求要合并.
使用当前方法,10 个合并的拉取请求将导致 10 个版本和 10 个版本增加。但我更愿意先合并所有10个然后有一个版本和一个版本增加。
任何建议,我怎样才能实现,state-of-the-art 这里的建议是什么?
我的一个想法是有一些 pre-release
或 develop
分支,在那里我可以首先合并 PR,只有在发布时才合并 develop
到 master
.但它看起来有点麻烦,并没有真正让贡献者的生活更轻松(他们需要以开发为目标,然后我需要创建从开发到掌握的 PR 等...)
更新:
- 我相信,答案应该是CI-independent。确切的 CI 系统在这里并不重要,重要的是 我不想去 CI 触发工作,所有交互都应该通过存储库发生。回购和 CI 之间的 Webhooks/connection 当然可用并且可以工作。
- 当然,说“简单”CI并不是说它的配置是固定的。当然,我可以以任何我想要的方式更新它,这没有问题(触发来自存储库、不同分支等的不同事件)
有多种方法可以实现您的愿望。
您自己提到的一个想法:
One of my thoughts was to have some pre-release or develop branch where I can merge the PRs first and only when it's time to release, merge develop to master.
这是迄今为止最省力的方法。
其他一切都需要您更改管道。
如果您同意,根据您当前的结构,这里有一些不难实现的想法:
- 将管道更改为不在
master
分支中的每个更改上发布,而是在 release
分支中的每个更改上发布。到那时,所有开发人员仍然能够以 master
为目标,然后您可以压缩所有提交并将它们引入 release
。这种方法很简单,但根据项目的不同,可能会导致 and/or 与 git 结构混淆的问题。
- 将管道更改为不在
master
分支中的每个更改上发布,而是在推送的每个新标签上发布。通过这种方式,您可以在 master
分支中收集所有提交,一旦您决定它已准备好发布,只需手动推送一个 git 标签。如果您想更进一步,请将管道配置为自动创建一个 git 标记,仅当您(或其他受信任的维护者)创建了一个包含 version bump to vX.Y.Z
之类的 signed commit message 时。这种方法是一种更现代的方法,提供了更多的灵活性,但与以前的方法相比,需要对管道进行更多更改(请记住,更改管道是一次性的工作)。
标题不是最好的,我同意,请阅读更多细节以理解我的意思...
我有一个 project/repository 具有以下属性:
- 提交消息在Conventional Commits 之后
- 以上结果:仓库中没有一个地方有版本号。版本是根据提交历史自动计算的。
- 过去“发布”的历史基本上是 git 标记历史(当发布完成并且
1.2.3
版本出现时,相应的提交被标记) - CI 是“简单的”/与 Github 集成,每个 merge/push 掌握触发完整管道 包括
deploy
/release
部分(产生新版本,推送标签,简称“发布”) - 我没有办法(或者,我认为我没有办法,或者我不想)手动触发 CI 以从 CI 本身释放。每个触发器都应该来自 git/github.
虽然这在一般情况下工作得很好,但我的问题是通常回购是不变的并且没有收到真正的新提交,但是在一些活跃的日子里我可能有 2-3-4-10 个新的拉取请求要合并.
使用当前方法,10 个合并的拉取请求将导致 10 个版本和 10 个版本增加。但我更愿意先合并所有10个然后有一个版本和一个版本增加。
任何建议,我怎样才能实现,state-of-the-art 这里的建议是什么?
我的一个想法是有一些 pre-release
或 develop
分支,在那里我可以首先合并 PR,只有在发布时才合并 develop
到 master
.但它看起来有点麻烦,并没有真正让贡献者的生活更轻松(他们需要以开发为目标,然后我需要创建从开发到掌握的 PR 等...)
更新:
- 我相信,答案应该是CI-independent。确切的 CI 系统在这里并不重要,重要的是 我不想去 CI 触发工作,所有交互都应该通过存储库发生。回购和 CI 之间的 Webhooks/connection 当然可用并且可以工作。
- 当然,说“简单”CI并不是说它的配置是固定的。当然,我可以以任何我想要的方式更新它,这没有问题(触发来自存储库、不同分支等的不同事件)
有多种方法可以实现您的愿望。
您自己提到的一个想法:
One of my thoughts was to have some pre-release or develop branch where I can merge the PRs first and only when it's time to release, merge develop to master.
这是迄今为止最省力的方法。 其他一切都需要您更改管道。 如果您同意,根据您当前的结构,这里有一些不难实现的想法:
- 将管道更改为不在
master
分支中的每个更改上发布,而是在release
分支中的每个更改上发布。到那时,所有开发人员仍然能够以master
为目标,然后您可以压缩所有提交并将它们引入release
。这种方法很简单,但根据项目的不同,可能会导致 and/or 与 git 结构混淆的问题。 - 将管道更改为不在
master
分支中的每个更改上发布,而是在推送的每个新标签上发布。通过这种方式,您可以在master
分支中收集所有提交,一旦您决定它已准备好发布,只需手动推送一个 git 标签。如果您想更进一步,请将管道配置为自动创建一个 git 标记,仅当您(或其他受信任的维护者)创建了一个包含version bump to vX.Y.Z
之类的 signed commit message 时。这种方法是一种更现代的方法,提供了更多的灵活性,但与以前的方法相比,需要对管道进行更多更改(请记住,更改管道是一次性的工作)。