Этап выполнения, только если последний коммит содержит ключевое слово - PullRequest
2 голосов
/ 30 октября 2019

В файле yml у меня есть этап (с именем RELEASE), который должен выполняться только в том случае, если коммит триггера содержит ключевое слово cetain, мой конвейер запускается коммитом.

предопределенная переменная Build.SourceVersionMessage доступен только на уровне задач, я использую его сегодня для индивидуального пропуска каждого задания этапа RELEASE, но я ищу, чтобы пропустить все этапы одновременно.

Любая идея, как это сделать правильнобез использования экспорта bash или вставки базы данных?

спасибо

1 Ответ

1 голос
/ 31 октября 2019

Есть обходные пути для достижения этой цели. 1. Первый обходной путь требует добавления задачи сценария для вывода переменной со значением Build.SourceVersionMessage на предыдущем этапе. И добавьте dependency и condition на этапе выпуска. Вы можете обратиться к приведенному ниже примеру:

stages: 
  - stage: Publish
    displayName: 'Publish stage'
    jobs:
    - job: jobA
      pool: Default
  ...
    - script: echo "##vso[task.setvariable variable=commitMessage;isOutput=true]$(Build.SourceVersionMessage)"
      name: setvarStep
       
  - stage: Release
      dependsOn: Publish
      condition: contains(dependencies.<Previous stage name>.outputs['<name of the job which execute the task.setvariable >.setvarStep.commitMessage'], 'keyword')
      jobs:
      - job:
        ....

2. Другой обходной путь для достижения этой цели - добавить еще один этап с задачей powershell, который оценивает значение Build.SourceVersionMessage. Затем добавьте зависимость и условие на этапе Release на этом этапе.

В следующем примере на этапе GetSourceMessage есть задание с одной задачей powershell, которое завершится неудачей, если Build.SourceVersionMessage не содержит «ключевого слова». И этап Релиз зависит от этапа GetSourceMessage будет выполняться только при условии успешного выполнения этапа GetSourceMessage .

...
- stage: GetSourceMessage
    jobs:
    - job: jobofstage2
      steps: 
        - powershell: |     
            if('$(Build.SourceVersionMessage)' -inotmatch  "key")
            {
                exit 1
            }

  - stage: Release
    dependsOn: GetSourceMessage
    condition: succeeded()
    jobs:
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...