Расширить пример конвейера YAML - PullRequest
1 голос
/ 17 марта 2020

Пример расширенного шаблона, который MSFT предоставил в документации, предполагает провал шага, но он не провален. https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#extend -from-a-template

Может кто-нибудь поделиться рабочим примером этого.

Я хочу проверить пользовательский yaml в расширенном шаблоне и завершить сборку в случае использования шагов, которые не разрешены в соответствии с политикой фирмы.

1 Ответ

0 голосов
/ 20 марта 2020

В данном документе указывается запутанное направление. Вы можете попробовать загрузить журнал сборки, который не работает так, как вы ожидаете, а затем проанализировать содержимое файла initializeLog.txt. Все key оценивающие выражения перечислены в списке.

Попробуйте следующий пример:

start.yml

# File: start.yml
parameters:
- name: buildSteps # the name of the parameter is buildSteps
  type: stepList # data type is StepList
  default: [] # default value of buildSteps
stages:
- stage: secure_buildstage
  pool: Hosted VS2017
  jobs:
  - job: secure_buildjob
    steps:

    - script: echo This happens before code 
      displayName: 'Base: Pre-build'

    - script: echo Building
      displayName: 'Base: Build'

    - ${{ each step in parameters.buildSteps }}:
      - ${{ each pair in step }}:
          ${{ if ne(pair.value, 'CmdLine@2') }}:
            ${{ pair.key }}: ${{ pair.value }}       
          ${{ if eq(pair.value, 'CmdLine@2') }}: 
            '${{ pair.value }}': error         

    - script: echo This happens after code
      displayName: 'Base: Signing'

azure -pipelines.yml

trigger:
- master

extends:
  template: start.yml
  parameters:
    buildSteps:  
      - bash: echo Test #Passes
        displayName: succeed
      - bash: echo "Test"
        displayName: succeed
      - script: echo "Script Test" 
        displayName: Fail

Затем вы увидите сбой конвейера из-за обнаруженного шага script:

enter image description here

Примечание: Эта проверка состоит в том, что как только шаблон обнаружит, что один CmdLine@2 шаг был передан из azure-pipeline.yml, он не выполнит текущий конвейер вместо одного указанного шага .

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...