我正在将Azure管道用于基于Github的项目。我建立了仅由带标签的提交触发的构建管道,以使其与每次提交时进行的每日自动构建分开。
我想从触发每日构建管道中排除带标签的提交。在Yaml脚本中这样做的正确方法是什么?
这是我所做的,没有成功。
根据this page上的Azure文档,据我所知,应该可以通过以下方式排除标签:
[Fact]
public async Task DeleteBygg_ExistingIdPassed_RemovesOneItem()
{
// Arrange
var id = 1;
_mockRepo.Setup(repo => repo.GetByggByIdAsync(id)).ReturnsAsync(new Bygg(){});
_mockRepo.Setup(repo => repo.DeleteByggAsync(It.IsAny<Bygg>())).Returns(Task.CompletedTask);
// Act
await _controller.DeleteBygg(id);
// Assert
_mockRepo.Verify(repo => repo.DeleteByggAsync(It.IsAny<Bygg>()),Times.Once);
}
但是,这是行不通的,只会阻止构建管道在任何提交(无论是否带标签)上运行。
我也尝试过:
trigger:
tags:
exclude:
- projectname_v*
但这显然不受支持,因为它会产生错误:
trigger:
tags:
include:
- *
exclude:
- projectname_v*
我还尝试了文档页面上建议的替代语法:
/azure-pipelines.yml: (Line: 12, Col: 7, Idx: 220) - (Line: 12, Col: 8, Idx: 221): While scanning an anchor or alias, did not find expected alphabetic or numeric character.
以及带有/不带有花括号和通配符的变体,但都失败,并出现“意外值”或“输入字符串格式不正确”错误。
答案 0 :(得分:0)
@ acasta69
我认为我找到了解决您问题的方法。我一直在做相反的情况,仅构建功能分支,并排除其他任何内容。
为此,请在azure-pipelines.yml上使用此yml代码段
resources:
repositories:
- repository: myNetProject
type: GitHub
connection: myGitHubConnection
source: wkrea/DockerHubImages
trigger:
batch: true
branches:
include:
- releases/*
exclude:
- '*'
paths:
exclude:
- README.md
我能够从以下版本构建DevOps
如果该答案对您有用,请告知我并评论我的答案,以使其在下次有人需要帮助时更加轻松,因为DevOps Pipelines文档暂时还不清楚并令人困惑:'(
在这里您可以在releases
分支上查看我最后一次提交的检查
答案 1 :(得分:0)
this page中记录了构建管道触发器的语法。
关于问题中暴露的内容,有几个细节值得强调:
指定触发器时,它将替换默认的隐式触发器,并且只有推送到明确配置为包含的分支才会触发管道。首先处理包含,然后从该列表中删除排除。如果您指定排除但未指定任何包含,则不会触发任何内容。
trigger:
branches:
include:
- '*' # must quote since "*" is a YAML reserved character; we want a string
总结一下,一种正确的方法来将标记的提交排除在触发管道之外应该是问题的编辑部分所示的方法:
trigger:
branches:
include:
- '*'
exclude:
- 'refs/tags/*'
或者,相当于:
trigger:
branches:
include:
- '*'
tags:
exclude:
- '*'
但是,这不能获得理想的效果。而是发生以下情况:
Azure DevOps支持的建议是尝试以下操作,将包括限制为某些特定分支:
trigger:
branches:
include:
- master
exclude:
- 'refs/tags/*'
但是,结果没有改变。
已经报告了该问题,需要进一步调查,我正在等待更多反馈。我将在得到答案后立即对其进行编辑。同时,我希望此信息对面临此问题的其他人有用。
我在此间找到的解决方法(如评论中所述)是仅使用一个管道,该管道始终由任何提交(无论是否标记)触发,并使用专用脚本检测标记的使用以激活特定的必要时执行管道步骤。