gpt4 book ai didi

Azure Pipeline Matrix策略变量扩展问题与模板结合使用

转载 作者:行者123 更新时间:2023-12-05 04:50:18 25 4
gpt4 key购买 nike

对于 azp 中经常使用的任务,我使用 yml 文件创建了自己的存储库,我将向您展示其中的一部分:创建并上传-docu.yml:

parameters:
- name: Documentation
type: string
default: ''

- name: Language
type: string
default: ''

- name: ArchiveBaseDir
type: string
default: ''

steps:
- script: |
ARCHIVERELPATH=${{parameters.Documentation}}-${{parameters.Language}}.zip
ARCHIVEDIR=$(echo -n ${{parameters.ArchiveBaseDir}} | sed -e 's@/$@@')/${{parameters.Documentation}}/${{parameters.Language}}
echo "##vso[task.setvariable variable=archiveRelPath;isOutput=true]$ARCHIVERELPATH"
echo "##vso[task.setvariable variable=archiveDir;isOutput=true]$ARCHIVEDIR"
name: ${{parameters.Documentation}}_${{parameters.Language}}_params

- task: DeleteFiles@1
inputs:
Contents: '$(Build.ArtifactStagingDirectory)/$(${{parameters.Documentation}}_${{parameters.Language}}_params.archiveRelPath)'

相关部分是:“脚本”的名称在作业中是唯一的 - 因此我可以使用这种扩展来设置模板中的变量:

$(${{parameters.Documentation}}_${{parameters.Language}}_params.archiveRelPath)

只要我使用固定值调用模板,就可以正常工作,例如

- template: create-and-upload-docu.yml@templates
parameters:
Documentation: 'adocuvalue'
Language: 'en_US'
ArchiveBaseDir: '$(Build.ArtifactStagingDirectory)/build/'

但现在我想使用一个矩阵来获得一些具有几种语言的文档:

jobs:
- job: Documentation_CI
displayName: "Docu CI"
timeoutInMinutes: 30
strategy:
matrix:
main_en_US:
Documentation: main
Language: en_US
main_de_AT:
Documentation: main
Language: de_AT
steps:
- checkout: self
- template: create-and-upload-docu.yml@templates
parameters:
Documentation: ${{variables.Documentation}}
Language: ${{variables.Language}}
ArchiveBaseDir: '$(Ws)/build/'

但是在${{}}表达式展开的时候,矩阵变量似乎还没有被设置;这意味着模板脚本部分被称为 __params 并且管道有以下错误发布构建工件失败并出现错误:需要输入:ArtifactName

有没有一种简单的方法来实现我想要的(能够使用独特的命名模式在模板中设置一些变量):

  • 我可以以某种方式使用 ${{ 表达式,但需要不同的命名来访问硬编码的矩阵样式变量
  • 我可以用简单的方法解决我的问题吗?

其他信息:我们在本地运行 Azure 2020。

最佳答案

Is there a somewhat simple way to achive what I want (being able to set some variables within templates with a unique naming schema):

对于给您带来的任何不便,我们深表歉意。

恐怕目前没有这样的方法来解决这个问题。

正如您测试的那样,语法 ${{}} 在编译时被解析。当我们在任务中将其用作名称或显示名称时,我们无法获取该值,因为它将在编译时进行解析。但编译时尚未设置矩阵变量。这就是我们获得值 _params 的原因。

有一个feature request对这个。您可以在我们的 UserVoice 网站 ( https://developercommunity.visualstudio.com/content/idea/post.html?space=21  ) 上添加对此功能的请求,这是我们提供产品建议的主要论坛:

enter image description here

关于Azure Pipeline Matrix策略变量扩展问题与模板结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67332905/

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