Наконец, CD на основе Azure DevOps YAML был GA! Объявление общую доступность функций CD YAML в лазурных трубопроводах
Самый первый вопрос, который я имел в виду, было «Как вызвать выпуск трубопровода после сборки трубопровода?»
Если я автор Ci/CD в том же YAML, даже с помощью многоступенчатого, мне не нужно думать о «срабатывающем компакт-диске», но что, если я автор CI и CD в отдельном YML и создать два трубопровода?
Ресурсы — отличный способ запускать трубопровод по таким типам, как трубопроводы, сборки, репозитории, контейнеры и пакеты. В этой статье я фокусирую на трубопровод ресурс.
Без дальнейшего обучения давайте создадим сборки по эксплуатации для теста.
1. Создайте новый проект DEVOPS и новый репозиторий. Я просто добавляю текстовый файл там.
2. Добавьте Build-Pain Exeline.yml Файл и обновите YAML, как показано ниже. Как видите, каждый шаги просто манекены. Этот трубопровод генерирует один артефакт.
trigger: branches: include: - master paths: exclude: - build-pipeline.yml - release-pipeline.yml variables: vmImageName: 'ubuntu-latest' jobs: - job: Build pool: vmImage: $(vmImageName) steps: - script: | echo 'do some unit test' displayName: 'unit test' - script: | echo 'compile application' displayName: 'compile' - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(System.DefaultWorkingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip artifact: drop
3.Креата Новый трубопровод, указав выходу YAML и выберите «Build-Pipeline.yaml»
4. Запустить и посмотреть результат.
5. Он генерирует один артефакт.
6. Переименуйте трубопровод, чтобы это было легко увидеть, это построить трубопровод.
Далее создайте выпускной трубопровод, который будет вызван после сборки конвейера.
1. Добавьте релиз-трубопровод .Мим файл и обновите YAML.
# Explicitly set none for repositry trigger trigger: - none resources: pipelines: - pipeline: myappbuild # Name of the pipeline resource source: myapp-build-pipeline # Name of the triggering pipeline trigger: branches: - master variables: vmImageName: 'ubuntu-latest' jobs: - deployment: Deploy displayName: Deploy environment: dev pool: vmImage: $(vmImageName) strategy: runOnce: deploy: steps: - download: myappbuild artifact: drop - task: ExtractFiles@1 inputs: archiveFilePatterns: '$(PIPELINE.WORKSPACE)/myappbuild/drop/$(resources.pipeline.myappbuild.runID).zip' destinationFolder: '$(agent.builddirectory)' cleanDestinationFolder: false - script: | cat $(agent.builddirectory)/greatcode.txt
2. Создайте новый конвейер и выберите «Создать файл».
3. Сохранить трубопровод.
4. Нажмите Выполнить трубопровод и выберите «Ресурсы».
5. Выберите ресурс из сборки трубопровода.
6. Затем запустите трубопровод и посмотрите результат.
7. Переименуйте трубопровод, если хотите.
Теперь пришло время сделать тест CI/CD. Просто обновите CONTELTCODE.TEXT CONTELT и зафиксируйте мастеру.
Вы видите, что конвейер построится сначала, затем выпустите трубопроводные прогоны.
Здесь есть несколько вещей, чтобы отметить здесь.
Выпуск триггера
Я явно нажимаю на триггер, чтобы выбросить трубопровод не сработал в любых изменениях в ветвях.
# Explicitly set none for repositry trigger trigger: - none
Тогда я указываю ресурсы | трубопроводы. трубопровод Имя — это просто имя, которое я могу ссылаться позже. Источник где я указываю назовите построить имя трубопровода.
resources: pipelines: - pipeline: myappbuild # Name of the pipeline resource source: myapp-build-pipeline # Name of the triggering pipeline trigger: branches: - master
Затем я ссылаюсь на это во многих местах. Я использую Загрузить задачу для явного скачивания Drop Artifact. Это полезно при строительстве трубопровода публикует несколько артефактов, но освобождение трубопровода не нуждается в них всех.
- download: myappbuild artifact: drop
Скачанный артефакт может быть доступен с заранее определенной переменной.
$(PIPELINE.WORKSPACE)/myappbuild/drop
Я также другую предварительно определенную переменную для определения имени файла ZIP.
$(resources.pipeline.myappbuild.runID).zip
Я могу просто указать * .zip, но это полезно, когда мне нужна сборка. CytreatiD в выпуске трубопровода.
Есть несколько вещей, которые мне нужно знать заранее к автору трубопроводы, но как только я это знаю, это легко. Надеюсь, эта информация поможет вам.
Оригинал: «https://dev.to/kenakamu/azure-devops-yaml-release-pipeline-trigger-when-build-pipeline-completed-54d5»