Возможно ли это в одном файле yaml? Как запустить разные задачи для разных веток, я определил задания / этапы, но не могу сделать их условными?
Конечно. Вы можете добавить эти этапы в один файл yaml. Затем вам нужно определить поле condiftion
для каждого этапа или каждого задания.
Вот пример для стадий:
trigger:
- '*'
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Test1
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/master') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/master'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage1!
- stage: Test2
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/dev') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage2!
- stage: Test3
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/staging') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/staging'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage3!
Вы можете установить необходимые ветви в качестве триггера. Затем вы можете использовать Build.SourceBranch
и System.PullRequest.TargetBranch
, чтобы определить, запускать ли текущий этап.
Build.SourceBranch -> для ветви слияния.
System.PullRequest.TargetBranch -> для Pull Request.
Вот документы о условиях и переменных .
Есть ли какой-нибудь маг c, который может направить меня, чтобы я мог копировать содержимое каталога в хранилище BLOB-объектов? Или он должен быть заархивирован-> скопирован-> разархивирован?
Поскольку вам нужно опубликовать файл sh в Azure Blob, вы можете напрямую попробовать использовать Azure Задача копирования файлов .
Вот пример:
- task: AzureFileCopy@4
displayName: 'AzureBlob File Copy'
inputs:
SourcePath: xxx
azureSubscription: xxx
Destination: AzureBlob
storage: xxx
ContainerName: '$web'
Надеюсь, это поможет.