파이프라인을 트리거하는 이벤트 지정

Azure DevOps 서비스 | Azure DevOps Server | Azure DevOps Server 2022

파이프라인 트리거는 파이프라인을 실행할 시기를 알려줍니다. 일정에 따라 또는 끌어오기 요청 생성과 같은 이벤트에 대한 응답으로 파이프라인을 실행하도록 트리거를 구성할 수 있습니다. Azure Pipelines 다음과 같은 유형의 트리거를 지원합니다.

  • 연속 통합 트리거(CI 트리거)는 브랜치에 코드를 푸시할 때 파이프라인을 실행합니다.
  • 풀 리퀘스트 트리거(PR 트리거)는 PR을 만들거나 열려 있는 PR의 소스 브랜치에 코드를 푸시할 때 파이프라인을 실행합니다. GitHub 리포지토리는 열려 있는 끌어오기 요청에 주석을 추가할 때 파이프라인을 실행하는 주석 트리거를 지원합니다.
  • 예약된 트리거는 미리 정의된 일정에 따라 파이프라인을 실행합니다.
  • 파이프라인 완료 트리거는 다른 파이프라인이 완료될 때 파이프라인을 실행합니다.

이 문서에서는 YAML 파이프라인 트리거 및 클래식 빌드 파이프라인 트리거에 대한 개요를 제공합니다. 클래식 릴리스 파이프라인 에는 이전 목록에 설명된 유사한 버전의 트리거가 있습니다. 자세한 내용은 클래식 릴리스 파이프라인 트리거를 참조하세요.

CI 트리거

CI 트리거는 트리거에서 정의한 조건을 충족하는 브랜치에 푸시가 이루어지면 파이프라인을 실행합니다. 키워드를 trigger 사용하여 CI 트리거를 구성합니다. 예를 들어 main 브랜치에 푸시할 때 파이프라인을 실행하려면 다음 트리거를 지정합니다.

trigger:
- main

파이프라인을 명시적으로 구성하지 않으면 암시적 CI 트리거 사용 안 함이 설정되어 있거나 UI 설정이 YAML 트리거를 재정의하도록 설정된 경우가 아닌 한, 모든 분기에 대해 CI 트리거가 기본적으로 사용 설정됩니다.

파이프라인을 명시적으로 구성하지 않으면 암시적 CI 트리거 사용 안 함이 설정되어 있거나 UI 설정이 YAML 트리거를 재정의하도록 설정된 경우가 아닌 한, 모든 분기에 대해 CI 트리거가 기본적으로 사용 설정됩니다.

참고

암시적 CI 트리거 사용 안 함은 Azure DevOps Server 2022.2 이상에서만 사용할 수 있습니다. Azure DevOps Server 2022 및 2022.1에서는 명시적으로 구성되지 않은 경우 기본적으로 CI 트리거가 사용하도록 설정됩니다.

파이프라인에서 CI 트리거를 사용하지 않도록 설정하려면 다음 구문을 사용합니다.

trigger: none

YAML 파이프라인은 다음 리포지토리 유형에 대한 CI 트리거를 지원합니다. 특정 리포지토리 유형에서 CI 트리거를 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

CI 트리거에 사용할 수 있는 전체 YAML 트리거 구문 및 옵션에 대한 자세한 내용은 트리거 정의를 참조하세요.

Important

Git의 경로는 CI 및 PR 트리거 경로 필터를 포함하여 대/소문자를 구분합니다.

PR 트리거

끌어오기 요청(PR) 트리거는 끌어오기 요청을 열거나 끌어오기 요청의 원본 분기에 변경 내용을 푸시할 때마다 파이프라인이 실행되도록 합니다. 키워드를 pr 사용하여 PR 트리거를 구성합니다. 예를 들어 PR이 main 브랜치에 대해 생성될 때 파이프라인을 실행하려면 다음 트리거를 지정하세요.

pr:
- main

파이프라인에서 PR 트리거를 명시적으로 구성하지 않으면, UI 설정이 YAML 트리거를 재정의하는 경우를 제외하면 기본적으로 사용하도록 설정됩니다. 모든 브랜치에 대한 풀 리퀘스트는 파이프라인 실행을 트리거합니다. 파이프라인에서 PR 트리거를 사용하지 않도록 설정하려면 다음 구문을 사용합니다.

pr: none

YAML PR 트리거는 GitHub 및 Bitbucket Cloud에 대해 지원됩니다. 이러한 유형의 리포지토리에서 PR 트리거를 사용하는 방법에 대한 자세한 내용은 GitHub의 PR 트리거Bitbucket Cloud의 PR 트리거를 참조하세요. 전체 YAML PR 트리거 구문에 대한 자세한 내용은 pr 정의를 참조하세요.

Azure Repos Git은 분기 정책을 사용하여 PR 트리거를 구현합니다. 자세한 내용은 Azure Repos Git의 PR 트리거를 참조하세요.

댓글 트리거

댓글 트리거는 기여자가 /azp run와 같은 풀 리퀘스트 명령이 포함된 풀 리퀘스트 댓글을 작성하면 파이프라인이 실행되도록 구성합니다. 주석 트리거는 GitHub 리포지토리에 대해서만 지원됩니다. 자세한 내용은 GitHub 리포지토리 주석 트리거 참조하세요.

예약된 실행 조건

예약된 트리거는 미리 정의된 일정에 따라 파이프라인을 실행합니다. YAML 파이프라인을 지원하는 모든 리포지토리 형식은 YAML 파이프라인 에서 예약된 트리거를 지원합니다. 이러한 리포지토리 유형에는 Azure Repos Git, GitHub, GitHub Enterprise Server 및 Bitbucket Cloud가 포함됩니다.

YAML에서 예약된 트리거를 정의하려면 키워드를 schedules 사용하고 cron 구문을 사용하여 일정을 정의합니다. 다음 예제에서는 매일 자정에 실행되는 일정을 구성합니다.

# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

자세한 내용 및 예제는 예약된 트리거, 일정 정의 및 schedules.cron 정의를 참조 하세요.

파이프라인 완료 트리거

YAML 파이프라인의 파이프라인 트리거 및 클래식 빌드 파이프라인의 빌드 완료 트리거 를 사용하면 다른 파이프라인이 완료될 때 하나의 파이프라인을 트리거할 수 있습니다.

파이프라인에서 파이프라인 리소스 트리거를 설정하여 원본 파이프라인이 실행을 완료할 때 파이프라인 실행을 시작합니다.

resources:
  pipelines:
  - pipeline: sourcePipelineResource # Label for this pipeline resource; used when referring to it elsewhere in the pipeline.
    source: source-pipeline # The name of the pipeline referenced by this pipeline resource.
    project: FabrikamProject # Required only if the source pipeline is in another project
    trigger: true # Run this pipeline when any run of source-pipeline completes

파이프라인에 여러 파이프라인 리소스를 추가할 수 있습니다. 원본 파이프라인의 모든 버전이 완료될 때 실행되도록 트리거를 구성하거나 특정 분기로 제한할 수 있습니다.

자세한 내용 및 예제는 파이프라인 완료 트리거를 참조하세요.

전체 구문 및 트리거 옵션은 resources.pipelines.pipeline 정의를 참조하세요.

YAML 파이프라인의 트리거에 대한 분기 고려 사항

YAML 파이프라인은 서로 다른 분기에 서로 다른 버전의 파이프라인을 가질 수 있으며, 이는 평가되는 파이프라인 트리거의 버전과 실행해야 하는 파이프라인 버전에 영향을 줄 수 있습니다.

트리거 유형 파이프라인 YAML 버전
CI 트리거(trigger) 푸시된 분기의 파이프라인 버전이 사용됩니다.
PR 트리거 (pr) 끌어오기 요청에 대한 원본 분기의 파이프라인 버전이 사용됩니다.
GitHub 풀 리퀘스트 댓글 트리거 끌어오기 요청에 대한 원본 분기의 파이프라인 버전이 사용됩니다.
예약된 실행 조건 예약된 트리거에 대한 분기 고려 사항을 참조하세요.
파이프라인 완료 트리거 파이프라인 완료 트리거에 대한 분기 관련 고려 사항을(를) 참조하세요.

YAML 파이프라인에 대한 리소스 트리거

리포지토리 리소스 트리거를 사용하면 변경 내용이 리소스로 정의된 리포지토리에 있을 때 파이프라인을 repositories 시작할 수 있습니다. 외부 Azure Repos Git, GitHub, GitHub Enterprise 또는 Bitbucket Cloud 리포지토리에서 커밋 또는 PR이 현재 파이프라인의 실행을 시작할 수 있도록 리소스에 대한 CI 스타일 trigger 필터를 구성합니다.

Azure Pipelines 다른 리소스 종류에서 유사한 이벤트 기반 트리거를 지원합니다.

  • pipelines: 업스트림 CI 파이프라인 완료 시(선택적 분기, 태그 및 스테이지 필터 포함)
  • builds: Jenkins와 같은 외부 CI 시스템의 새 아티팩트에서
  • containers: Azure Container Registry 새 이미지 태그
  • packages: 새 NuGet 또는 npm GitHub 패키지 버전
  • webhooks: 들어오는 웹후크 서비스 연결을 통해 GitHub, Nexus 또는 Artifactory와 같은 외부 서비스의 임의 이벤트에 대해

자세한 내용은 YAML 파이프라인의 리소스를 참조하세요.

YAML 파이프라인에 대한 일반 웹후크 기반 트리거

YAML 파이프라인의 웹후크 트리거 지원을 사용하면 웹후크를 통해 외부 서비스(예: GitHub, GitHub Enterprise, Nexus 또는 Artifactory)의 이벤트를 구독하고 파이프라인을 자동으로 트리거할 수 있습니다. 이 기능은 파이프라인, 컨테이너, 빌드 및 패키지와 같은 기본 제공 리소스를 넘어 자동화된 트리거를 확장합니다. 파이프라인 자동화를 모든 외부 서비스와 통합할 수 있습니다.

이 기능을 사용하려면 YAML 파이프라인에서 resources.webhooks 리소스를 webhook 정의하고 이벤트를 구독하는 들어오는 웹후크 서비스 연결을 가리킵니다. JSON 페이로드에 대한 필터를 추가하여 각 파이프라인이 실행될 때 미세 조정하고 작업에서 변수로 페이로드 값에 액세스할 수 있습니다.

resources:
  webhooks:
    - webhook: MyWebhookTrigger          ### Webhook alias
      connection: MyWebhookConnection    ### Incoming webhook service connection
      filters:
        - path: repositoryName      ### JSON path in the payload
          value: maven-releases     ### Expected value in the path provided
        - path: action
          value: CREATED
steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    ### JSON payload data is available in the form of ${{ parameters.<WebhookAlias>.<JSONPath>}}
    script: |
      Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
      Write-Host ${{ parameters.MyWebhookTrigger.component.group}}

자세한 내용은 YAML 파이프라인 및 resources.webhooks.webhook 정의에 대한 일반웹후크 기반 트리거를 참조하세요.

클래식 릴리스 파이프라인

연속 배포 트리거는 클래식 빌드 또는 YAML 파이프라인이 완료된 후 클래식 릴리스를 시작하는 데 도움이 됩니다.

예약된 릴리스 트리거를 사용하면 일정에 따라 릴리스 파이프라인을 실행할 수 있습니다.

끌어오기 요청 릴리스 트리거는 클래식 릴리스를 사용하여 직접 끌어오기 요청을 배포하는 데 사용됩니다.

클래식 릴리스의 스테이지 트리거는 클래식 릴리스 의 각 단계가 트리거되는 방식을 구성하는 데 사용됩니다.