Рубрики
Uncategorized

Потребляйте артефакты из дистанционного трубопровода проекта DEVOPS

Дежол — трубопроводы — потребляйте удаленный артефакт. Теги с учебником, Azure, производительностью, дежопами.

Azure DEVOPS Трубопровод/Ресурсы YAML

Трубопроводы Azure DevOps обеспечивают очень полезное Ресурсы Мы можем определить в нашем трубопроводе в одном месте и быть употребленным в любом месте нашего трубопровода.

Ресурс — это все, что используется трубопроводом, который живет за пределами трубопровода. Ресурсы трубопроводов включают в себя:

  • CI/CD трубопроводы, которые производят артефакты (лазурные трубопроводы, дженкинс и т. Д.)
  • Репозитории кода (Azure Reppos Git Reppos, Github, Github Enterprise, Bitbucket Cloud)
  • Регистрация контейнеров изображений (реестр Azure Container, Docker Hub и т. Д.)
  • Пакетные каналы (пакеты GitTub)

Сегодня мы посмотрим на Трубопроводы ресурса В частности, мы рассмотрим, как мы можем использовать этот ресурс в трубопроводе, чтобы потреблять артефакт, который был произведен в другом трубопроводе в совершенно другом проекте. Наш трубопровод также будет также автоматически вызвать автоматически с помощью исходного трубопровода после создания и опубликованного артефакта.

Потреблять удаленные трубопроводные артефакты

В моей организации DevOps я создал два проекта, а именно Проект и Projectb Отказ Я также создал два трубопровода YAML для каждого соответствующего проекта по имени Pipelinea. и Трубопровод . Трубопроводы Будет мой запуск/исходный трубопровод, который создаст артефакт под названием Артефакты . Pipelineb Будет мой трубопровод, который будет содержать ресурс трубопровода для Pipelinea. и будет потреблять Артефакты .

В Проект Я также создал репозиторий под названием Репо который содержит файл под названием Myconfig.txt Отказ

Я также создал следующий код в Pipelinea.yml Отказ

## code/PipelineA.yml

trigger: none

stages:
- stage: Build_Artifact
  displayName: Build Artifact A

  jobs:
  - job: Build
    displayName: Build
    pool:
      name: Azure Pipelines
      vmImage: windows-2019

    steps:
    - task: CopyFiles@2
      displayName: 'Copy myConfig to Staging'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)'
        Contents: 'MyConfig.txt'
        TargetFolder: '$(Build.ArtifactStagingDirectory)/drop'

    - task: PublishPipelineArtifact@1
      displayName: 'Publish Artifact to Pipeline'
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/drop'
        artifactName: ArtifactA

ЗАМЕТКА: Важно отметить, что когда мы создаем вышеуказанный трубопровод в нашем исходном проекте, мы должны переименовать трубопровод к тому же названию, что и что мы будем ссылаться на него в нашем ресурсе трубопровода на Pipelineb Отказ В моем случае я ссылаюсь на это как Pipelinea Отказ

Вышеуказанный трубопровод YAML возьмет файл Myconfig.text и создать трубопровод артефакт, содержащий файл под названием Артефакты Отказ

В Проект У меня есть Pipelielyb.yml.yml. Содержит ресурс трубопровода для Pipelinea и будет вызван один раз Pipelinea завершится, и мы будем использовать задачу загрузки, чтобы также потреблять артефакт, который был произведен Pipelinea. .

## code/PipelineB.yml

trigger: none
pr: none

# ------ This is our Pipeline Resource ------
resources:
  pipelines:
  - pipeline: PipelineA  # identifier for the resource used in pipeline resource variables.
    project: ProjectA    # project for the source; optional for current project.
    source: PipelineA    # name of the pipeline that produces an artifact.
    trigger:             # triggers are not enabled by default unless you add trigger section to the resource.
      branches:          # branch conditions to filter the events, optional; Defaults to all branches.
        include:         # branches to consider the trigger events, optional; Defaults to all branches.
        - main
# ------------------------------------------

stages:
- stage: Consume_Artifact
  displayName: Consume Artifact A

  jobs:
  - job: Consume
    displayName: Consume
    pool:
      name: Azure Pipelines
      vmImage: windows-2019

    steps:
    - task: PowerShell@2
      displayName: 'Information'
      inputs:
        targetType: inline
        script: |
          Write-output "This pipeline has been triggered by: $(resources.pipeline.PipelineA.pipelineName)"

    - download: PipelineA
      artifact: 'ArtifactA'

    - task: PowerShell@2
      displayName: 'Get-Content MyConfig.txt'
      inputs:
        targetType: inline
        script: |
          Get-Content -path $(Pipeline.Workspace)/PipelineA/ArtifactA/MyConfig.txt

ЗАМЕТКА: Важно отметить, что мы должны настроить Projectb Настройки трубопроводов позволяют ему подключиться к Проект Для того, чтобы скачать артефакт, который был произведен.

Метаданные для ресурса трубопровода, доступны как предопределенные переменные, которые мы можем ссылаться, как вы можете увидеть из нашего Pipelyb.yml В следующем фрагменте кода:

## code/PipelineB.yml#L29-L30
script: |
  Write-output "This pipeline has been triggered by: $(resources.pipeline.PipelineA.pipelineName)"

Предопределенные переменные трубопроводных ресурсов:

resources.pipeline..projectID
resources.pipeline..pipelineName
resources.pipeline..pipelineID
resources.pipeline..runName
resources.pipeline..runID
resources.pipeline..runURI
resources.pipeline..sourceBranch
resources.pipeline..sourceCommit
resources.pipeline..sourceProvider
resources.pipeline..requestedFor
resources.pipeline..requestedForID

Теперь, когда мы запускаем и запуску Pipelinea в Проект , он автоматически создаст наш Артефакты а также после завершения Pipelineb в Projectb будет автоматически вызван, а также скачать и потреблять Артефакты Это было создано в Проект .

Также обратите внимание, что триггеры для ресурсов создаются на основе конфигурации ветви по умолчанию нашего YAML, которая является мастером. Однако, если мы хотим настроить триггеры ресурсов из другого ветви, нам нужно будет изменить ветку по умолчанию для трубопровода. Для получения дополнительной информации посмотрите на Ветвь по умолчанию для триггеров Отказ

Я надеюсь, что вы наслаждались этим постом и узнали что-то новое. Вы также можете найти образцы кода, используемые в этом сообщении в блоге, на моем Github страница. ❤ ️

Автор

Вроде, поделиться, следуй за мной: 🐙 Github |. 🐧 Twitter |. 👾 Linkedin.

Марсель Легов

Оригинал: «https://dev.to/pwd9000/consume-artifacts-from-a-remote-devops-project-pipeline-2f3a»