기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
트리거 및 필터링을 사용하여 시작 파이프라인 자동화
트리거를 사용하면 특정 브랜치 또는 풀 요청에 대한 변경 사항이 감지되는 경우와 같이 특정 이벤트 유형 또는 필터링된 이벤트 유형에서 시작하도록 파이프라인을 구성할 수 있습니다. 트리거는 GitHub, Bitbucket 및 GitLab과 같이 CodePipeline에서 CodeStarSourceConnection 작업을 사용하는 연결을 통해 소스 작업에 대해 구성할 수 있습니다. 연결을 사용하는 소스 작업에 대한 자세한 내용은 CodeConnections를 사용하여 파이프라인에 타사 소스 공급자 추가 섹션을 참조하세요.
CodeCommit 및 S3와 같은 소스 작업은 자동 변경 감지를 사용하여 변경 시 파이프라인을 시작합니다. 자세한 내용은 CodeCommit 소스 작업 및 EventBridge 단원을 참조하십시오.
콘솔 또는 CLI를 사용하여 트리거를 지정합니다.
다음과 같이 필터 유형을 지정합니다.
-
필터 없음
이 트리거 구성은 작업 구성의 일부로 지정된 기본 브랜치로 푸시할 때마다 파이프라인을 시작합니다.
-
필터 지정
코드 푸시의 브랜치 이름과 같은 특정 필터에서 파이프라인을 시작하고 정확한 커밋을 가져오는 필터를 추가합니다. 또한 변경 시 파이프라인이 자동으로 시작되지 않도록 구성합니다.
-
푸시
-
유효한 필터 조합은 다음과 같습니다.
-
Git 태그
Include 또는 exclude
-
브랜치
Include 또는 exclude
-
브랜치 + 파일 경로
Include 또는 exclude
-
-
-
풀 요청
-
유효한 필터 조합은 다음과 같습니다.
-
브랜치
Include 또는 exclude
-
브랜치 + 파일 경로
Include 또는 exclude
-
-
-
-
변경 사항을 감지하지 않음
이렇게 해도 트리거가 추가되지 않으며 파이프라인은 변경 시 자동으로 시작되지 않습니다.
다음 표에서는 각 이벤트 유형에 유효한 필터 옵션을 제공합니다. 이 표에는 작업 구성에서 자동 변경 감지를 위해 기본적으로 true 또는 false로 설정된 트리거 구성도 나와 있습니다.
| 트리거 구성 | 이벤트 유형 | 필터 옵션 | 변경 사항 감지 |
|---|---|---|---|
| 트리거 추가 - 필터 없음 | 없음 | 없음 | true |
| 트리거 추가 - 코드 푸시 필터링 | 푸시 이벤트 | Git 태그, 브랜치, 파일 경로 | false |
| 트리거 추가 - 풀 요청 필터링 | 풀 요청 | 브랜치, 파일 경로 | false |
| 트리거 없음 - 감지하지 않음 | 없음 | 없음 | false |
참고
이 트리거 유형은 자동 변경 감지를 사용합니다(Webhook 트리거 유형으로). 이 트리거 유형을 사용하는 소스 작업 제공자는 코드 푸시를 위해 구성된 연결(Bitbucket Cloud, GitHub, GitHub Enterprise Server, GitLab.com, 및 GitLab 자체 관리형)입니다.
트리거에 대한 필드 정의 및 추가 참조는 섹션을 참조하세요.
JSON 구조의 필드 정의 목록은 triggers 섹션을 참조하세요.
필터링의 경우 glob 형식의 정규식 패턴은 구문에서 glob 패턴 작업에 설명된 대로 지원됩니다.
참고
경우에 따라 파일 경로에서 필터링되는 트리거가 있는 파이프라인의 경우 파일 경로 필터가 있는 브랜치가 처음 생성될 때 파이프라인이 시작되지 않을 수 있습니다. 자세한 내용은 파일 경로별 트리거 필터링을 사용하는 연결이 있는 파이프라인은 브랜치 생성 시 시작되지 않을 수 있습니다. 단원을 참조하십시오.
트리거 필터 고려 사항
트리거 사용 시 다음 사항을 고려하세요.
-
소스 작업당 트리거를 한 개 이상 추가할 수 없습니다.
-
트리거에 여러 필터 유형을 추가할 수 있습니다. 예제는 4: 포함 및 제외 조건이 상충하는 두 개의 푸시 필터 유형을 가진 트리거 섹션을 참조하세요.
-
브랜치 및 파일 경로 필터가 있는 트리거의 경우 브랜치를 처음 푸시할 때 새로 생성된 브랜치에 대해 변경된 파일 목록에 액세스할 수 없으므로 파이프라인이 실행되지 않습니다.
-
풀 요청을 병합하면 푸시(브랜치 필터)와 풀 요청(브랜치 필터) 트리거 구성이 교차하는 경우 두 파이프라인 실행이 트리거될 수 있습니다.
-
풀 요청 이벤트에서 파이프라인을 트리거하는 필터의 경우 Closed 풀 요청 이벤트 유형의 경우 연결의 타사 리포지토리 공급자가 병합 이벤트에 대해 별도의 상태를 가질 수 있습니다. 예를 들어 Bitbucket에서 병합에 대한 Git 이벤트는 풀 요청 종료 이벤트가 아닙니다. 그러나 GitHub에서 풀 요청을 병합하는 것은 종료 이벤트입니다. 자세한 내용은 공급자별 트리거에 대한 풀 요청 이벤트 단원을 참조하십시오.
공급자별 트리거에 대한 풀 요청 이벤트
다음 테이블에는 풀 요청 종료와 같이 공급자별로 풀 요청 이벤트 유형을 생성하는 Git 이벤트의 요약이 나와 있습니다.
| 연결을 위한 리포지토리 공급자 | ||||
|---|---|---|---|---|
| 트리거에 대한 PR 이벤트 | Bitbucket | GitHub | GHES | GitLab |
| 열기 -이 옵션은 브랜치/파일 경로에 대한 풀 요청이 생성될 때 파이프라인을 트리거합니다. | 풀 요청을 생성하면 Opened Git 이벤트가 발생합니다. | 풀 요청을 생성하면 Opened Git 이벤트가 발생합니다. | 풀 요청을 생성하면 Opened Git 이벤트가 발생합니다. | 풀 요청을 생성하면 Opened Git 이벤트가 발생합니다. |
| 업데이트 -이 옵션은 브랜치/파일 경로에 대한 풀 요청 개정이 게시될 때 파이프라인을 트리거합니다. | 업데이트를 게시하면 Updated Git 이벤트가 업데이트됩니다. | 업데이트를 게시하면 Updated Git 이벤트가 업데이트됩니다. | 업데이트를 게시하면 Updated Git 이벤트가 업데이트됩니다. | 업데이트를 게시하면 Updated Git 이벤트가 업데이트됩니다. |
| Closed -이 옵션은 브랜치/파일 경로에 대한 풀 요청이 닫힐 때 파이프라인을 트리거합니다. | Bitbucket에서 풀 요청을 병합하면 Closed Git 이벤트가 발생합니다. 중요: 병합하지 않고 Bitbucket에서 풀 요청을 수동으로 닫으면 Closed Git 이벤트가 발생하지 않습니다. | 풀 요청을 병합하거나 수동으로 닫으면 Closed Git 이벤트가 발생합니다. | 풀 요청을 병합하거나 수동으로 닫으면 Closed Git 이벤트가 발생합니다. | 풀 요청을 병합하거나 수동으로 닫으면 Closed Git 이벤트가 발생합니다. |
트리거 필터의 예
푸시 및 풀 요청 이벤트 유형에 대한 필터가 있는 Git 구성의 경우 지정된 필터가 서로 충돌할 수 있습니다. 다음은 푸시 및 풀 요청 이벤트에 유효한 필터 조합의 예입니다. 트리거에는 트리거 구성의 두 푸시 필터 유형과 같은 여러 필터 유형이 포함될 수 있으며, 푸시 및 풀 요청 필터 유형은 둘 사이의 OR 연산을 사용합니다. 즉, 일치 항목이 파이프라인을 시작합니다. 마찬가지로 각 필터 유형에는 filePaths 및 브랜치와 같은 여러 필터가 포함될 수 있습니다. 이러한 필터는 AND 연산을 사용합니다. 즉, 전체 일치 항목만 파이프라인을 시작합니다. 각 필터 유형에는 포함 및 제외가 포함될 수 있으며, 이러한 필터 유형은 이들 간에 AND 연산을 사용합니다. 즉, 전체 일치 항목만 파이프라인을 시작합니다. 브랜치 이름과 같은 포함/제외 내의 이름은 OR 연산을 사용합니다. main 브랜치를 포함하는 푸시 필터와 브랜치를 제외하는 푸시 필터 사이와 같은 충돌이 발생할 경우, 기본적으로 제외 처리됩니다. 다음 목록에는 Git 구성 객체의 각 부분에 대한 작업이 요약되어 있습니다.
JSON 구조의 필드 정의 목록과 포함 및 제외에 대한 자세한 참조를 보려면 triggers 섹션을 참조하세요.
예 1: 브랜치 및 파일 경로에 대한 필터가 있는 필터 유형(AND 연산)
풀 요청과 같은 단일 필터 유형의 경우 필터를 결합할 수 있으며, 이러한 필터는 AND 연산을 사용합니다. 즉, 완전한 일치 시에만 파이프라인이 시작됩니다. 다음 예제는 두 개의 필터(filePaths 및 branches)가 있는 푸시 이벤트 유형에 대한 Git 구성을 보여줍니다. 다음 예제에서는 filePaths가 branches와 함께 AND가 됩니다.
{ "filePaths": { "includes": ["common/**/*.js"] }, "branches": { "includes": ["feature/**"] } }
위의 Git 구성으로 이 예제에서는 AND 작업이 성공하므로 파이프라인 실행이 시작되는 이벤트를 보여줍니다. 즉, 지정된 브랜치 refs/heads/feature/triggers 에 영향을 미치지 않았더라도, common/app.js라는 파일 경로가 필터에 포함되어 파이프라인을 AND로 시작합니다.
{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "common/app.js" ] ... } ] }
다음 예제는 위 구성의 트리거에 대한 이벤트를 보여줍니다. 이 이벤트에서는 브랜치는 필터링이 가능하지만 파일 경로는 필터링이 불가능하기 때문에 파이프라인 실행이 시작되지 않습니다.
{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "src/Main.java" ] ... } ] }
예 2: 브랜치는 포함과 제외 간에 AND 연산을 사용합니다.
트리거 필터(예: 단일 풀 요청 이벤트 유형 내 분기)는 포함 항목과 제외 항목 사이에 AND 연산을 사용합니다. 이렇게 하면 동일한 파이프라인에 대한 실행을 시작하도록 여러 트리거를 구성할 수 있습니다. 다음 예제는 푸시 이벤트에 대한 구성 객체에서 단일 필터 유형(branches)을 사용하는 트리거 구성을 보여줍니다. Includes 및 Excludes 작업은 AND 연산으로 처리됩니다. 즉, 브랜치가 제외 패턴(예제에서 feature-branch 등)과 일치하는 경우 포함 패턴도 일치하지 않으면 파이프라인이 트리거되지 않습니다. main 브랜치와 같은 포함 패턴이 일치하면 파이프라인이 트리거됩니다.
다음 예제 JSON의 경우:
-
main브랜치에 커밋을 푸시하면 파이프라인이 트리거됨 -
feature-branch브랜치에 커밋을 푸시해도 파이프라인이 트리거되지 않음
{ "branches": { "Includes": [ "main" ], "Excludes": [ "feature-branch" ] }
예 3: 푸시 및 풀 요청 필터 유형(OR 연산), 파일 경로 및 브랜치용 필터(AND 연산), 포함/제외(AND 연산)가 있는 트리거
푸시 이벤트 유형과 풀 요청 이벤트 유형을 모두 포함하는 트리거와 같은 트리거 구성 객체는 두 이벤트 유형 간에 OR 연산을 사용합니다. 다음 예제는 main 브랜치를 포함하는 푸시 이벤트 유형과 동일한 main 브랜치를 제외하는 풀 요청 이벤트 유형을 가진 트리거 구성을 보여줍니다. 또한 푸시 이벤트 유형에는 제외되는 파일 경로 LICENSE.txt 하나와 포함되는 파일 경로 README.MD 하나가 있습니다. 두 번째 이벤트 유형의 경우, feature-branch 브랜치(포함됨)에서 Closed 또는 Created인 풀 요청이 파이프라인을 시작하며, feature-branch-2 또는 main 브랜치(제외됨)에서 풀 요청을 생성하거나 닫을 때는 파이프라인이 시작되지 않습니다. Includes 및 Excludes 연산은 AND 연산으로 처리되며, 충돌 시 제외가 기본값으로 적용됩니다. 예를 들어, feature-branch 브랜치(풀 요청에 포함됨)에서 풀 요청 이벤트가 발생하고 feature-branch 브랜치가 푸시 이벤트 유형에 대해 제외된 경우, 기본값은 제외됩니다.
다음 예제를 살펴보겠습니다.
-
README.MD파일 경로(포함됨)에 대해main브랜치(포함됨)에 커밋을 푸시하면 파이프라인이 트리거됩니다. -
feature-branch브랜치(제외됨)에서 커밋을 푸시해도 파이프라인이 트리거되지 않습니다. -
포함된 브랜치에서
README.MD파일 경로(포함됨)를 편집하면 파이프라인이 트리거됩니다. -
포함된 브랜치에서
LICENSE.TXT파일 경로(제외됨)를 편집해도 파이프라인이 트리거되지 않습니다. -
feature-branch브랜치에서README.MD파일 경로(푸시 이벤트에 포함됨)에 대한 풀 요청을 닫는 것은 파이프라인을 트리거하지 않습니다. 푸시 이벤트 유형이feature-branch브랜치를 제외 대상으로 지정했기 때문에 충돌이 기본적으로 제외 처리되기 때문입니다.
다음 이미지는 해당 구성을 보여줍니다.
다음은 구성에 대한 JSON 예제입니다.
"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "branches": { "includes": [ "main" ], "excludes": [ "feature-branch", "feature-branch-2" ] }, "filePaths": { "includes": [ "README.md" ], "excludes": [ "LICENSE.txt" ] } } ], "pullRequest": [ { "events": [ "CLOSED", "OPEN" ], "branches": { "includes": [ "feature-branch" ], "excludes": [ "feature-branch-2", "main" ] } } ] } } ] },
예 4: 포함 및 제외 조건이 상충하는 두 개의 푸시 필터 유형을 가진 트리거
다음 이미지는 태그 release-1(포함됨)에서 필터링하도록 지정하는 푸시 필터 유형을 보여줍니다. 두 번째 푸시 필터 유형은 브랜치 main(포함)을 기준으로 필터링하고, feature*브랜치(제외)로의 푸시 시 시작하지 않도록 지정합니다.
다음 예제를 살펴보겠습니다.
-
태그
release-1(첫 번째 푸시 필터에 포함됨)에서feature-branch브랜치(두 번째 푸시 필터에서feature*로 제외됨)로 릴리스를 푸시하면 두 이벤트 유형이 AND 연산되므로 파이프라인이 트리거되지 않습니다. -
main브랜치(두 번째 푸시 필터에 포함됨)에서 릴리스를 푸시하면 파이프라인이 시작됩니다.
다음 편집 페이지 예제는 두 가지 푸시 필터 유형과 포함/제외 설정을 보여줍니다.
다음은 구성에 대한 JSON 예제입니다.
"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "release-1" ] } }, { "branches": { "includes": [ "main*" ], "excludes": [ "feature*" ] } } ] } } ] },
예 5: 수동 시작 시 기본 작업 구성 BranchName이 사용되도록 구성된 트리거
작업 구성의 기본 BranchName 필드는 파이프라인을 수동으로 시작할 때 사용될 단일 브랜치를 정의합니다. 반면 필터가 적용된 트리거는 지정한 하나 이상의 브랜치에 대해 사용할 수 있습니다.
다음은 BranchName 필드를 보여주는 작업 구성의 JSON 예제입니다.
{ "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "CodeStarSourceConnection", "version": "1" }, "runOrder": 1, "configuration": { "BranchName": "main", "ConnectionArn": "ARN", "DetectChanges": "false", "FullRepositoryId": "owner-name/my-bitbucket-repo", "OutputArtifactFormat": "CODE_ZIP" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "inputArtifacts": [], "region": "us-west-2", "namespace": "SourceVariables" } ],
다음 예제 작업 출력은 파이프라인이 수동으로 시작될 때 사용된 기본 브랜치 기본을 보여줍니다.
다음 예제 작업 출력은 풀 요청으로 필터링할 때 트리거에 사용된 풀 요청 및 브랜치를 보여줍니다.