存储库资源触发器的预定义变量

时间:2020-09-30 22:15:47

标签: azure-devops azure-pipelines

repository resource trigger触发管道时,我需要能够确定有关触发存储库的元数据(例如回购名称和分支)。

听起来these variables应该在由存储库资源触发的管道运行期间设置;但是,当我在由存储库资源触发的管道运行中执行echo $(resources.triggeringAlias)env | sort时,它们的值为空白。

更新:Build.Repository.NameBuild.SourceBranchName的预定义变量现在与存储库触发器一起使用时可以按预期工作。因此,虽然我不再需要resources.triggeringAliasresources.triggeringCategory,但它们仍然无法工作。

1 个答案:

答案 0 :(得分:1)

我需要能够确定有关触发的元数据 存储库(例如回购名称和分支)

我们可以使用$(Build.Repository.Name)$(Build.Repository.Uri)来获取存储库名称和存储库uri。

$(Build.SourceVersion)可用于获取CommitId,$(Build.SourceBranch)$(Build.SourceBranchName)可用于获取分支信息。

只需注意,我们还必须签出触发回购协议,以使上述变量能够获取触发回购协议的信息,否则这些变量将始终代表触发回购协议的值:

steps:
- checkout: self
- checkout: TheTriggeringRepo

一些详细信息:

我有一个触发存储库PipelineA和触发存储库PipelineBPipelineB的{​​{1}}文件:

azure-pipelines.yml

因此,该管道将同时由resources: repositories: - repository: PipelineA type: git name: PipelineA trigger: - master steps: - checkout: self - checkout: PipelineA - task: Bash@3 inputs: targetType: 'inline' script: | echo $(Build.Repository.Name) echo $(Build.SourceBranch) 回购和PipelineA回购触发。

PipelineB仓库有更改时:

enter image description here

PipelineB仓库有更改时:

enter image description here

很明显,如果我们同时检查这两个仓库,则PipelineA变量可以很好地输出实际的触发器仓库。因此,只需确保签出那些触发回购协议,那么上面的变量将对您有用。