是否可以在 Azure 生成管道中保留并发包版本?

Is it Possible to Keep Concurrent Package Versions in a Azure Build Pipeline?

提问人:Low-Signal 提问时间:11/17/2023 更新时间:11/17/2023 访问量:10

问:

我正在尝试在我的 Azure 管道中创建版本控制脚本。我花了比我愿意提到的更多的时间,因为这是我第一次编写 YAML/Powershell 脚本。我的最终目标是能够进行合并以主要增加其次要和补丁编号,具体取决于它是来自发布分支还是自动修补程序。我还根据具有相应前缀的分支的管道运行来增加 alpha 分支(功能)、beta 分支(测试中发布)和 rc 分支(候选版本)的版本。

一个简单的例子:你在 1.0.0-alpha.0 上有一个功能分支,你手动构建它,如果有变化,它会转到 1.0.0-alpha.1。您将 rc 合并到 main 中,mains 版本变为 1.1.0,第一个发布的功能分支是 1.1.0-alpha.0。

我目前的问题是当我同时发生多个版本冲突时。据我了解,这种版本控制方案相当普遍,但我还没有找到很多关于通过 Azure 生成管道自动进行版本控制的信息。

我目前的设置有几个阶段。

  1. 如果发现任何更改,则检查更改会停止构建,以防止意外构建导致不必要的增量(理论上这不应该发生,但我不是唯一从事此工作的开发人员)。

  2. version.json 文件是从分支标题版本控制中签出的,这会保留每种类型版本(major、minor、patch、alpha、beta、hotfix、rc)的主记录。然后,根据要合并的分支递增,并合并到主分支中,使用 azures rest api 检查合并的 PR 来自哪个分支。

  3. 使用此 version.json 文件(第 3 阶段的输入)中的数字创建版本名称,并将其作为项目存储在 package.json 文件中。

  4. 此阶段生成并发布包。

  5. 如果发布阶段成功(没有重复的包版本),则更新的 version.json 将推送到 version-control 分支,更新的 package.json 将推送到正在构建的分支。

我正在寻找一种方法来确保没有冲突,或者至少在同时运行多个构建时处理它们。我一直无法找到一种很好的方法来锁定阶段甚至整个构建,因此它们是连续的,理论上排队构建并不可怕,因为这不应该有大量的运行经历它。

npm 并发 连续集成 azure-pipelines-yaml

评论


答: 暂无答案