自动触发Azure版本管道

问题描述 投票:1回答:1

我正在设置Azure管道以构建和发布包含我们已经开发的一些库的Angular项目,但是我在理解它的某些部分时遇到了一些问题,特别是触发了构建和发布库的发布管道。我一直在阅读this guide,了解如何设置它的提示。

Build pipeline(s)

目前,Angular项目包含两个库。我创建了两个构建管道来安装库的依赖项,分别构建其中一个库,存档构建文件夹,并将存档发布到$(Build.ArtifactStagingDirectory)。据我了解,这应该使它可用于构建管道。在构建管道中没有做任何其他事情。

Build pipeline image

Release pipeline

接下来,我创建了一个发布管道。在管道上,我添加了一个工件,将源类型设置为Build,并选择了一个构建管道。我在工件上启用了持续部署触发器,并设置了refs/tags/v*的构建分支过滤器,因为我正在尝试从标签构建。

然后,在舞台上,我添加了一个Extract files任务,目标文件夹设置为$(System.DefaultWorkingDirectory)\extracted。之后,我添加了一个npm任务,命令设置为publish,工作文件夹包含设置为$(System.DefaultWorkingDirectory)\extracted的package.json,以及Azure Artifacts提要的注册表。

Release pipeline image

Triggering a build

如上所述,如果我向存储库添加标记,则不会触发发布管道。

我试过的

我尝试将发布管道中的工件上的CD触发器更改为master分支并提交到分支,但这也没有触发释放管道。

如果我手动运行构建管道,则释放管道会运行,但会因错误而失败

error enoent ENOENT: no such file or directory, open 'D:\a\r1\a\extracted\package.json'

但这似乎是我对发布的档案最终位置的误解。

What I'd like to happen

对于在向存储库添加版本标记时运行的发布管道。

对我来说最好的解决方案是,如果我可以在Angular项目中发布具有不同版本号的两个库,但是我不知道该怎么做,至少不是如果我使用标签来触发发布(标签将是例如v0.0.1,因此如果一个库是0.0.3版本而另一个库版本是0.0.1则没有意义。

第二个最佳选择是,如果我可以发布这两个库,只需让它们保持相同的版本号。

任何帮助和提示表示赞赏。如果缺少任何信息,请告诉我。

Edit - Solution

我想我误解了释放管道上的触发器是如何起作用的。

缺少的部分是在标签的构建管道上添加一个触发器。对于基于设计器的构建,我不清楚这可以完成,因为您只是在构建管道的触发器的分支过滤器的下拉列表中显示分支,但您只需键入refs/tags/v*到Filter my branches字段,然后按Enter键(也显示在下图中)。

Build pipeline trigger image

感谢@JukkaK。

angular azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task
1个回答
0
投票

有关构建,请参阅此博客文章底部的更新:

https://edsnider.net/2018/11/14/detecting-git-tag-pushes-in-azure-devops.html

如果你不能使用基于yaml的构建,不确定如何使用构建设计器,但我会给出一个简单的“v *”或“refs / tags / *”。如果那些不能与设计师合作,解决问题的一种方法可能是用条件标记构建(可能使用https://marketplace.visualstudio.com/items?itemName=colinsalmcorner.colinsalmcorner-buildtasks):

and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))

然后根据标签触发发布

© www.soinside.com 2019 - 2024. All rights reserved.