azure конфигурация yaml piplines - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь улучшить процесс CI / CD старого фанкового проекта, код которого в настоящий момент не открыт для рефакторинга. Я просто не могу заставить это работать, следуя документации Azure или даже если это возможно.

Мне удалось улучшить текущее состояние с помощью файла конвейера azure, который запускает модульные тесты перед объединением в выпуски / dev ветка. Но я хочу продолжить.

Задачи, каждый PR в Release / dev будет:

  1. script: npm запустить тест: unit
  2. script: npm запустить сборку: dev
  3. copy / publi sh содержимое папки .div / в конфигурацию хранилища azure blob для stati c site

Любой PR или слияние с выпусками / постановкой будет:

  1. скрипт: npm запустить сборку: постановка
  2. скопировать / publi sh содержимое папки .div / в azure Конфигурация хранилища BLOB-объектов для stati c site

Любой PR или слияние в master будет:

  1. script: npm run test: unit
  2. скрипт: npm запуск сборки: production
  3. copy / publi sh содержимое папки .div / в конфигурацию хранилища больших двоичных объектов azure для stati c site

У меня 3 вопроса

Возможно ли это в одном файле yaml?

Как запустить разные задачи для разных веток, я определил задания / этапы, но не могу их выполнить условно?

Есть там какой-нибудь magi c кто-нибудь может направить меня, что позволяет мне копировать содержимое каталога в хранилище BLOB-объектов? Или он должен быть заархивирован-> скопирован-> разархивирован?

Заранее спасибо от нового лишенного сна папы

1 Ответ

1 голос
/ 17 июня 2020

Возможно ли это в одном файле 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'

Надеюсь, это поможет.

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