установка имени в шаблоне расширения не работает в конвейерах лазурного yaml

Это конвейер репо разработчиков

resources:
  repositories:
  - repository: extendCheck
    type: git
    name: PUL/extendCheck

trigger:
- none

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

это расширенный шаблон из репозитория централизованной команды разработчиков политик

# File: start.yml
name: $(Date:yyyy)$(Date:.MM)$(Date:.dd)$(Rev:-r)
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:
    vmImage: 'ubuntu-latest'
  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.key, 'script') }}:
            ${{ pair.key }}: ${{ pair.value }}       
          ${{ if eq(pair.key, 'script') }}: # checks for buildStep with script
            'Rejecting Script: ${{ pair.value }}': error # rejects buildStep when script is found         

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

Когда я запускаю это, я получаю следующую ошибку

/base2.yml@extendCheck (строка: 2, столбец: 1): неожиданное значение 'name'

Мы хотим контролировать формат номера сборки и поэтому не хотим хранить его в репозитории разработчиков. Любые предложения по этой проблеме

1 ответ

Решение

К сожалению, это не поддерживается с использованием шаблона для name. Чтобы обойти эту проблему, мы можем использовать сценарий для определения переменной и использоватьUpdateBuildNumber commandдля обновления формата нумерации сборки. Например, добавьте следующую задачу в конецbase2.yml файл:

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      [string] $dateTime = (Get-Date -Format 'yyyyMMddTHHmmss')
      Write-Host "##vso[task.setvariable variable=name]$dateTime"  
- script: echo "##vso[build.updatebuildnumber]$(name)"
Другие вопросы по тегам