gpt4 book ai didi

azure - 是否可以在资源:repository for Azure DevOps YAML?的ref属性中使用变量

转载 作者:行者123 更新时间:2023-12-04 04:30:59 30 4
gpt4 key购买 nike

我有两个 AzureDevOps Git 分支:

master
feature/mybranch

我在 yaml 中定义了一个多阶段构建管道,其中一些步骤被模板化到单独的 .yml 文件中。

在我的外部 azure-pipelines.yml 中,我引用了我的模板 .yml 所在的存储库:

resources:
repositories:
- repository: templates
type: git
name: MyProject/MyRepo

当我在“master”分支中构建时,一切都很好,因为默认情况下存储库将在 refs/heads/master 中查找。

当我在功能分支中工作并且想要测试对模板 .yml 文件的实验性更改时,我不希望它从 master 分支获取它们,我希望它使用分支中的文件我正在工作。

以下内容有效并允许我执行此操作:

resources:
repositories:
- repository: templates
type: git
name: MyProject/MyRepo
ref: refs/heads/feature/mybranch

但是,当我将其合并回 master 时,我显然不希望“ref:”仍然指向功能分支,因此我想使用变量动态生成“ref:”的值。

我尝试使用 ref: $(Build.SourceBranch) 其中 $(Build.SourceBranch) 应扩展为 'refs/heads/feature/我的分支'

但是这不起作用。错误:

62638: "/azure-pipelines.yml: Could not get the latest source version for repository MySolution hosted on Azure Repos using ref refs/heads/$(Build.SourceBranch)."

最佳答案

不要引用资源中的存储库,而是使用此处所述的内联结帐

https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#checking-out-a-specific-ref

- checkout: git://MyProject/MyRepo@features/tools

这个 yaml 元素允许使用变量、参数等模板表达式

- checkout: git://${{ variables.repoName}}@${{ variables.branchRef }}

或者

 - checkout: git://${{ parameters.repoName}}@${{ parameters.branchRef }}

您可以动态更改它

或者另一种选择是使用如下脚本任务

- script: |
# note checkout: git://$(System.TeamProject)/${{ parameters.repoName }}@${{ parameters.repoRef }} this does not work if this task is run multiple times in same pipeline
# see here for more details :https://developercommunity.visualstudio.com/t/checkout-fails-with-an-error-occurred-while-loadin/1005991#T-N1270459
repoDir=$(Agent.BuildDirectory)/${{ parameters.repoName }}
/bin/rm -rf $repoDir
url_with_token=$(echo $(System.CollectionUri) | sed -e "s/https\:\/\//https\:\/\/$(System.AccessToken)\@/g")
git clone $url_with_token/$(System.TeamProject)/_git/${{ parameters.repoName }} $repoDir
cd $repoDir
git fetch origin '${{ parameters.repoRef }}':'localBranch'
git checkout localBranch
name: clone_script
displayName: Checkout using script ${{ parameters.repoName }}@${{ parameters.repoRef }}

我在上面添加了一个模板及其用法,以使其可以轻松地重复使用。

希望有帮助

https://gist.github.com/scorpionlion/1773d08b62ca5875cc2fd6dcdd0394d2

关于azure - 是否可以在资源:repository for Azure DevOps YAML?的ref属性中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794984/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com