我有一个CI/CD多级模板,其中我的CD阶段依赖于我在yaml文件中提供的参数
管道指向pipeline.yml
servers:
DEV:
- srv-apimgmt37p
在我的模板中,我有一个检查服务器并传递值的循环,这样它就可以根据上述参数动态地生成我的CI/CD管道。在我的CD阶段,我传递了以下变量组:
variables:
- group: ${{ variables['Build.DefinitionName'] }}_MS_${{env.key}}
- group: DevSecOps_${{ variables['Build.DefinitionName'] }}_MS_${{env.key}}
在其中一个组中,我有一个变量,它是存储在安全文件中的文件名。回到我的CD模板,我有一个下载安全文件任务,它将使用名为$(test)的组中变量的名称下载安全文件。
- task: DownloadSecureFile@1
displayName: 'Download kafka keytab'
condition: "eq(ne(variables['test'], ''), true)"
inputs:
secureFile: "$(test)"
retryCount: 5
问题是,当管道开始运行时,它首先尝试下载安全文件,但是它找不到它,因为它还不知道$(test)的值。在这种情况下,作为最佳实践,我应该做些什么?我有点纠结于什么是好的解决方案。
发布于 2021-04-29 15:02:22
我决定在驻留在回购文件中的yaml文件中输入一个参数。因此,在我的模板中,我使用了如下的任务
- ${{ if parameters.keytab[env.key] }}:
- task: DownloadSecureFile@1
name: kafkakeytab
displayName: 'Download kafka keytab'
inputs:
secureFile: ${{parameters.keytab[env.key]}}
retryCount: 5
在我的YAML文件中,我只引用这样一个参数:
keytab:
DEV: bobbobob.keytab
UAT: blablauat.keytab
这意味着如果我不传递这个参数,管道将不包括管道中的任务,这正是我想要的。这样,我就不必创建自己的Powershell任务来实现这个目标了!
https://stackoverflow.com/questions/67183147
复制相似问题