Azure devops Azure pipeline stageList参数用于扩展模板
我正试图通过下面显示的azure管道中的阶段列表Azure devops Azure pipeline stageList参数用于扩展模板,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,azure-pipelines-yaml,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Azure Pipelines Yaml,我正试图通过下面显示的azure管道中的阶段列表 # File: azure-pipelines.yml trigger: - master extends: template: start_stage.yml parameters: cdstages: - stage: secure_buildstage pool: Hosted VS2017 jobs: - job: secure_buildjob steps
# File: azure-pipelines.yml
trigger:
- master
extends:
template: start_stage.yml
parameters:
cdstages:
- stage: secure_buildstage
pool: Hosted VS2017
jobs:
- job: secure_buildjob
steps:
- bash: echo This happens before code
displayName: 'Base: Pre-build'
- bash: echo Building
displayName: 'Base: Build'
- bash: echo This happens after code
displayName: 'Base: Signing'
- stage: secure_deploystage
pool: Hosted VS2017
jobs:
- job: secure_deployjob
steps:
- bash: echo This happens before code
displayName: 'Base: Pre-build'
- bash: echo Building
displayName: 'Base: Build'
- script: echo This happens after code
displayName: 'Base: Signing'
parameters:
- name: cdstages # the name of the parameter is buildSteps
type: stageList # data type is StepList
default: [] # default value of buildSteps
stages:
- ${{ each stage in parameters.cdstages }}:
- ${{ each job in stage.jobs }}:
- ${{ each step in job.steps }}:
- ${{ each pair in step }}:
${{ if ne(pair.value, 'CmdLine@2') }}:
${{ pair.key }}: ${{ pair.value }}
${{ if eq(pair.value, 'CmdLine@2') }}:
'${{ pair.value }}': error
要扩展如下所示的模板
# File: azure-pipelines.yml
trigger:
- master
extends:
template: start_stage.yml
parameters:
cdstages:
- stage: secure_buildstage
pool: Hosted VS2017
jobs:
- job: secure_buildjob
steps:
- bash: echo This happens before code
displayName: 'Base: Pre-build'
- bash: echo Building
displayName: 'Base: Build'
- bash: echo This happens after code
displayName: 'Base: Signing'
- stage: secure_deploystage
pool: Hosted VS2017
jobs:
- job: secure_deployjob
steps:
- bash: echo This happens before code
displayName: 'Base: Pre-build'
- bash: echo Building
displayName: 'Base: Build'
- script: echo This happens after code
displayName: 'Base: Signing'
parameters:
- name: cdstages # the name of the parameter is buildSteps
type: stageList # data type is StepList
default: [] # default value of buildSteps
stages:
- ${{ each stage in parameters.cdstages }}:
- ${{ each job in stage.jobs }}:
- ${{ each step in job.steps }}:
- ${{ each pair in step }}:
${{ if ne(pair.value, 'CmdLine@2') }}:
${{ pair.key }}: ${{ pair.value }}
${{ if eq(pair.value, 'CmdLine@2') }}:
'${{ pair.value }}': error
目标是获取阶段列表并验证用户是否只运行公司合规团队批准的步骤
我犯了个错误
[]1
不确定为什么会出现“任务”错误,任何地方都没有使用任务关键字。
有什么帮助吗?根据我的测试,似乎
start\u stage.yml
中的stagelist不支持添加每个指令以获得更深入的内容(例如作业和步骤)
当你使用舞台列表时,它可以得到舞台并将其用于比较
例如:
parameters:
- name: cdstages # the name of the parameter is buildSteps
type: stageList # data type is StepList
default: [] # default value of buildSteps
stages:
- ${{ each stage in parameters.cdstages }}:
- ${{ each pair in stage }}:
${{ if ne(pair.value, 'abc') }}:
${{ pair.key }}: ${{ pair.value }}
${{ if eq(pair.value, 'abc') }}:
'${{ pair.value }}': error
这个Yaml模板可以工作
但是当我在后台添加每个
指令来获取作业时,作业不可用
parameters:
- name: cdstages
type: stageList
default: []
stages:
- ${{ each stage in parameters.cdstages }}:
- ${{ each job in stage.jobs }}:
- ${{ each pair in job }}:
${{ if ne(pair.value, 'abc') }}:
${{ pair.key }}: ${{ pair.value }}
${{ if eq(pair.value, 'abc') }}:
'${{ pair.value }}': error
根据您的需求,您需要获得构建步骤并将其用于比较
您可以尝试直接使用步骤列表
类型
这里有一个关于的例子,你可以参考一下
希望这能有所帮助。Hi@Sanjeev,这个问题有什么更新吗?请随时告诉我答案是否能提供帮助。只是提醒一下。根据此docs.microsoft.com/en us/azure/devops/pipelines/security/…可以传递作业数组,然后我们可以访问扩展模板中的作业和步骤,然后我们应该能够访问stage->job->steplist我们计划为开发团队设置多级yaml管道,在每个作业中传递steplist会改变他们的体验。我们必须分析他们正在运行的内容,所以我们考虑在代理池级别使用扩展模板检查,有没有其他方法来查看用户在排队后试图运行的内容根据这一点,可以传递一个作业数组,然后我们可以访问扩展模板中的作业和步骤,然后我们应该能够访问stage->job->steplist