programing

YAML을 사용하여 파이프라인을 트리거하는 Azure 파이프라인

skycolor 2023. 4. 22. 09:12
반응형

YAML을 사용하여 파이프라인을 트리거하는 Azure 파이프라인

YAML을 사용하여 다른 파이프라인이 완료되었을 때 Azure 파이프라인을 트리거하려고 합니다.다음으로 파이프라인 리소스를 추가할 수 있음을 나타내는 문서가 있습니다.

resources:   # types: pipelines | builds | repositories | containers | packages
  pipelines:
  - pipeline: string  # identifier for the pipeline resource
    connection: string  # service connection for pipelines from other Azure DevOps organizations
    project: string # project for the source; optional for current project
    source: string  # source defintion of the pipeline
    version: string  # the pipeline run number to pick the artifact, defaults to Latest pipeline successful across all stages
    branch: string  # branch to pick the artiafct, optional; defaults to master branch
    tags: string # picks the artifacts on from the pipeline with given tag, optional; defaults to no tags

하지만 '소스'가 무슨 뜻인지 알 수 없었습니다.예를 들어 다음과 같은 파이프라인이 있습니다.myproject.myprogram:

resources:
  pipelines:
  - pipeline: myproject.myprogram
    source: XXXXXXXX

게다가, 이것을 바탕으로 어떻게 방아쇠를 당길 수 있을지는 불분명합니다.

Web-GUI에서 할 수 있는 것은 알고 있습니다만, YAML에서 할 수 있을 것입니다.

다른 푸른색 공식 문서에서 파이프라인 트리거에 대해 아래 솔루션을 제안합니다.즉, 파이프라인 트리거 사용

resources:
  pipelines:
  - pipeline: RELEASE_PIPELINE # any arbitrary name
    source: PIPELINE_NAME.    # name of the pipeline shown on azure UI portal
    trigger:
    branches:
      include:
        - dummy_branch        # name of branch on which pipeline need to trigger

하지만 실제로는 두 개의 파이프라인이 작동하게 됩니다.예를 들어 2개의 파이프라인 A와 B가 있으며 A가 종료되었을 때 B를 트리거한다고 가정합니다.따라서 이 시나리오에서 B는 커밋을 수행할 때(A와 병렬)와 A가 완료된 후 두 번째로 두 번 실행됩니다.

번의 파이프라인 실행 문제를 방지하려면 다음 해결책을 따르십시오.

trigger: none # add this trigger value to none 
resources:
  pipelines:
  - pipeline: RELEASE_PIPELINE # any arbitrary name
    source: PIPELINE_NAME.    # name of the pipeline shown on azure UI portal
    trigger:
    branches:
      include:
        - dummy_branch        # name of branch on which pipeline need to trigger

트리거 추가:none second 파이프라인은 시작 커밋 시 트리거되지 않으며 처음 작업을 마쳤을 때만 트리거됩니다.

도움이 되길 바랍니다.

Microsoft 의 메뉴얼에서는, YAML 가 권장되는 어프로치라고 기재되어 있습니다.따라서 빌드 트리거 옵션을 선택하는 대신 약간 혼란스러운 YAML 트리거에 대해 설명하겠습니다.다음 태그는 원래 질문에서 조금 더 쉬운 설명서에서 사용할 수 있습니다.

resources:
  pipelines:
  - pipeline: aUniqueNameHereForLocalReferenceCanBeAnything
    project: projectNameNOTtheGUID
    source: nameOfTheOtherPipelineNotTheDefinitionId
    trigger:
      branches:
        include:
        - master
        - AnyOtherBranch

Microsoft 의 메뉴얼은 혼란스럽고, ID도 다수입니다.프로젝트 GUID가 필요할 때도 있고 프로젝트 이름이 필요할 때도 있습니다.파이프라인 이름을 원할 때도 있고 파이프라인 정의 ID를 원할 때도 있습니다.그러나 변수(프로젝트 및 파이프라인)에는 동일한 이름을 사용합니다.게다가 시행착오 중 어떤 방법을 사용하는 것이 가장 좋은지 추측하기 어려운 문서를 작성합니다.

다른 장소에서의 혼란을 피하기 위해 파이프라인의 다른 장소를 예로 들겠습니다.다른 값을 가진 동일한 변수를 참조합니다.DownloadArtifact 태스크에서는 프로젝트 GUID와 파이프라인 정의 ID를 다음과 같이 사용해야 합니다.

- task: DownloadPipelineArtifact@2
      inputs:
        source: specific (a literal constant value not the pipeline name)
        project: projectGUIDNOTtheProjectName
        pipeline: numericDefinitionIdOfPipelineNotPipelineNameOrUniqueRef
        runVersion: 'latest'

같은 변수를 어떻게 다른 방식으로 사용했는지 보세요. 하지만 파이프라인과 제 경우 모두 정확히 같은 파이프라인입니다.그것은 혼란을 야기할 수 있고, 나는 다음 이슈로 넘어가는 것을 피하기 위해 여기에서 그것을 설명하겠습니다.

리소스가 빌드 완료 트리거에 대한 리소스가 아닙니다.문서에 따르면 빌드 완료 트리거는 아직 YAML 구문에서 지원되지 않습니다.

할 수 ([YAML ]를 클릭합니다).settings ★★★★★★★★★★★★★★★★★」variables트리거가 생성됩니다.

편집:

이제 "트리거"를 클릭해야 합니다.

여기에 이미지 설명 입력

그 후:

여기에 이미지 설명 입력

두 번째 편집:

Microsoft 에서는, 이 기능도 추가되어 YAML :) 를 참조해 주세요.

# this is being defined in app-ci pipeline
resources:
  pipelines:
  - pipeline: security-lib
    source: security-lib-ci
    trigger: 
      branches:
      - releases/*
      - master

위의 예에서는 app-ci와 security-lib-ci의 2개의 파이프라인이 있습니다.새로운 버전의 보안 라이브러리가 마스터 또는 릴리스 브랜치에 내장될 때마다 app-ci 파이프라인이 자동으로 실행되도록 합니다.

트리거 파이프라인에서 아티팩트를 게시하지 않으면 트리거된 파이프라인이 트리거되지 않습니다.

「」, 「」의 는,defaultBranch for manual and scheduled builds트리거된 파이프라인이 작동 중인 분기와 같지 않습니다. 트리거된 파이프라인이 트리거된 파이프라인 실행의 마지막에 시작되지 않습니다.

파이프라인 트리거를 위한 최소한의 실행 가능한 제품을 작성했으며, 이 답변에서 언급한 두 가지 문제를 더 잘 설명합니다.

언급URL : https://stackoverflow.com/questions/57304825/azure-pipeline-to-trigger-pipeline-using-yaml

반응형