부록 A: GitHub 버전 1 소스 액션 - AWS CodePipeline

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

부록 A: GitHub 버전 1 소스 액션

이 부록은 에 있는 작업의 버전 1에 대한 정보를 제공합니다. GitHub CodePipeline

참고

GitHub 버전 1 작업은 사용하지 않는 것이 좋지만 버전 1 작업이 포함된 기존 파이프라인은 아무런 영향 없이 계속 작동합니다. GitHub GitHub버전 1 작업이 있는 파이프라인의 경우 OAuth 기반 토큰을 CodePipeline 사용하여 GitHub 리포지토리에 연결합니다. 반대로 GitHub 작업 (버전 2) 은 연결 AWS 리소스를 사용하여 리소스를 GitHub 리포지토리에 연결합니다. 연결 리소스는 앱 기반 토큰을 사용하여 연결합니다. 파이프라인을 연결을 사용하는 권장 GitHub 작업으로 업데이트하는 방법에 대한 자세한 내용은 을 참조하십시오 GitHub 버전 1 소스 작업을 GitHub 버전 2 소스 작업으로 업데이트. 앱 GitHub 기반 액세스와 대조되는 OAuth 기반 GitHub 액세스에 대한 자세한 내용은 을 참조하십시오. https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps

와 통합하려면 GitHub 파이프라인용 GitHub OAuth 애플리케이션을 CodePipeline 사용합니다. CodePipeline웹후크를 사용하여 GitHub 버전 1 소스 액션으로 파이프라인의 변경 감지를 관리합니다.

참고

에서 GitHub AWS CloudFormation버전 2 소스 작업을 구성할 때는 GitHub 토큰 정보를 포함하거나 웹후크 리소스를 추가하지 않습니다. 사용 AWS CloudFormation 설명서의 AWS::CodeStarConnections: :Connection에 표시된 대로 연결 리소스를 구성합니다.

이 참조에는 GitHub 버전 1 작업에 대한 다음 섹션이 포함되어 있습니다.

중요

CodePipeline 웹후크를 생성할 때 자체 자격 증명을 사용하거나 여러 웹후크에 동일한 비밀 토큰을 재사용하지 마십시오. 최적의 보안을 위해 생성하는 각 웹후크에 대해 고유한 비밀 토큰을 생성하십시오. 보안 토큰은 사용자가 제공하는 임의의 문자열로, 웹후크 페이로드의 무결성과 신뢰성을 보호하기 위해 CodePipeline 전송되는 웹후크 페이로드를 계산하고 서명하는 데 GitHub 사용됩니다. 자체 자격 증명을 사용하거나 여러 웹후크에 동일한 토큰을 재사용하면 보안 취약성이 발생할 수 있습니다.

참고

비밀 토큰이 제공된 경우 응답 시 해당 토큰이 삭제됩니다.

GitHub 버전 1 소스 액션 추가

다음을 CodePipeline 기준으로 GitHub 버전 1 소스 작업을 추가합니다.

  • CodePipeline 콘솔 파이프라인 생성 마법사 (파이프라인 생성(콘솔)) 또는 편집 작업 페이지를 사용하여 GitHub제공자 옵션을 선택합니다. 콘솔은 소스가 변경될 때 파이프라인을 시작하는 웹후크를 생성합니다.

  • 를 CLI 사용하여 작업에 대한 작업 구성을 추가하고 다음과 같이 추가 리소스를 생성합니다. GitHub

    • GitHub 버전 1 소스 액션 레퍼런스GitHub 예제 작업 구성을 사용하여 파이프라인 생성 () CLI과 같이 작업을 생성합니다.

    • 변경 감지 방법은 기본적으로 소스를 폴링하여 파이프라인을 시작하기 때문에 정기적 확인을 비활성화하고 변경 감지를 수동으로 생성합니다. 폴링 파이프라인을 GitHub 버전 1 작업의 웹후크로 마이그레이션합니다.

GitHub 버전 1 소스 액션 레퍼런스

참고

GitHub 버전 1 작업은 사용하지 않는 것이 좋지만 버전 1 작업이 포함된 기존 파이프라인은 아무런 영향 없이 계속 작동합니다. GitHub GitHub GitHub 버전 1 소스 작업이 있는 파이프라인의 경우 OAuth 기반 토큰을 CodePipeline 사용하여 GitHub 리포지토리에 연결합니다. 반대로 새 GitHub 작업 (버전 2) 은 연결 AWS 리소스를 사용하여 리소스를 GitHub 리포지토리에 연결합니다. 연결 리소스는 앱 기반 토큰을 사용하여 연결합니다. 파이프라인을 연결을 사용하는 권장 GitHub 작업으로 업데이트하는 방법에 대한 자세한 내용은 을 참조하십시오 GitHub 버전 1 소스 작업을 GitHub 버전 2 소스 작업으로 업데이트.

구성된 GitHub 리포지토리와 브랜치에서 새 커밋이 이루어지면 파이프라인을 트리거합니다.

통합하려면 파이프라인의 OAuth 애플리케이션 또는 개인용 액세스 토큰을 CodePipeline 사용합니다. GitHub 콘솔을 사용하여 파이프라인을 만들거나 편집하는 경우 리포지토리가 변경될 때 파이프라인을 시작하는 GitHub 웹후크를 CodePipeline 생성합니다.

작업을 통해 파이프라인을 연결하기 전에 이미 GitHub 계정과 리포지토리를 생성했어야 합니다. GitHub

리포지토리에 대한 액세스 권한을 CodePipeline 제한하려면 GitHub 계정을 만들고 통합하려는 리포지토리에만 계정 액세스 권한을 부여하세요. CodePipeline 파이프라인의 소스 스테이지에 GitHub 리포지토리를 CodePipeline 사용하도록 구성할 때 이 계정을 사용하세요.

자세한 내용은 웹 사이트의 GitHub 개발자 설명서를 참조하십시오. GitHub

작업 유형

  • 범주: Source

  • 소유자: ThirdParty

  • 공급자: GitHub

  • 버전: 1

구성 파라미터

소유자

필수 여부: 예

GitHub리포지토리를 소유한 GitHub 사용자 또는 조직의 이름.

Repo

필수 여부: 예

소스 변경 사항을 감지할 리포지토리의 이름입니다.

브랜치

필수 여부: 예

소스 변경 사항을 감지할 분기의 이름입니다.

OAuthToken

필수 여부: 예

GitHub 저장소에서 작업을 수행할 수 CodePipeline 있는 GitHub 인증 토큰을 나타냅니다. 항목은 항상 네 개의 별표로 표시됩니다. 다음 값 중 하나를 나타냅니다.

  • 콘솔을 사용하여 파이프라인을 생성할 때 는 OAuth 토큰을 CodePipeline 사용하여 GitHub 연결을 등록합니다.

  • 를 사용하여 파이프라인을 생성할 때 이 필드에 GitHub 개인용 액세스 토큰을 전달할 수 있습니다. AWS CLI 별표 (****) 를 복사한 개인 액세스 토큰으로 바꾸십시오. GitHub 작업 구성을 보기 위해 get-pipeline을 실행하면 이 값에 대해 별표 4개 마스크가 표시됩니다.

  • AWS CloudFormation 템플릿을 사용하여 파이프라인을 생성할 때는 먼저 토큰을 비밀로 저장해야 합니다. AWS Secrets Manager이 필드의 값을 Secrets Manager에 저장된 보안 암호에 대한 동적 참조로 포함합니다(예: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}).

GitHub 범위에 대한 자세한 내용은 GitHub 웹 사이트의 GitHub 개발자 API 레퍼런스를 참조하십시오.

PollForSourceChanges

필수 여부: 아니요

PollForSourceChanges GitHub리포지토리를 CodePipeline 폴링하여 소스 변경 내용을 조사할지 여부를 제어합니다. 대신 웹후크를 사용하여 소스 변경 사항을 감지하는 것이 좋습니다. 웹후크 구성에 대한 자세한 내용은 폴링 파이프라인을 웹후크 (GitHub 버전 1 소스 액션) 로 마이그레이션 () CLI 또는 푸시 이벤트에 대한 파이프라인 업데이트 (GitHub 버전 1 소스 액션) (AWS CloudFormation 템플릿) 단원을 참조하십시오.

중요

웹후크를 구성하려는 경우 중복된 파이프라인 실행이 발생하지 않도록 PollForSourceChangesfalse로 설정해야 합니다.

이 파라미터에 유효한 값은 다음과 같습니다.

  • True: 설정된 경우 리포지토리를 CodePipeline 폴링하여 소스 변경 내용을 확인합니다.

    참고

    생략하면 PollForSourceChanges CodePipeline 기본적으로 리포지토리를 폴링하여 소스 변경 내용을 확인합니다. 이러한 동작은 PollForSourceChangestrue로 설정된 경우와 똑같습니다.

  • False: 설정하면 저장소에서 소스 CodePipeline 변경 내용을 폴링하지 않습니다. 소스 변경 사항을 감지하도록 웹후크를 구성하려면 이 설정을 사용합니다.

입력 아티팩트

  • 아티팩트 수: 0

  • 설명: 이 작업 유형에는 입력 아티팩트가 적용되지 않습니다.

출력 아티팩트

  • 아티팩트 수: 1

  • 설명: 이 작업의 출력 아티팩트는 파이프라인 실행의 소스 수정으로 지정된 커밋에 구성된 리포지토리 및 브랜치의 콘텐츠가 들어 있는 ZIP 파일입니다. 리포지토리에서 생성된 아티팩트는 작업에 대한 출력 아티팩트입니다. GitHub 소스 코드 커밋 ID는 트리거된 CodePipeline 파이프라인 실행의 소스 수정 버전으로 표시됩니다.

출력 변수

이 작업을 구성하면 파이프라인에서 다운스트림 작업의 작업 구성에서 참조할 수 있는 변수가 생성됩니다. 이 작업은 작업에 네임스페이스가 없는 경우에도 출력 변수로 볼 수 있는 변수를 생성합니다. 이러한 변수를 다운스트림 작업 구성에서 사용할 수 있도록 네임스페이스를 사용하여 작업을 구성합니다.

의 변수에 대한 자세한 내용은 CodePipeline 을 참조하십시오변수 레퍼런스.

CommitId

파이프라인 실행을 트리거한 GitHub 커밋 ID. IDs커밋이 전체 SHA 커밋입니다.

CommitMessage

파이프라인 실행을 트리거한 커밋과 연관된 설명 메시지입니다(존재하는 경우).

CommitUrl

파이프라인을 트리거한 커밋의 URL 주소.

RepositoryName

파이프라인을 트리거한 커밋이 만들어진 GitHub 리포지토리의 이름.

BranchName

소스가 변경된 GitHub 리포지토리의 브랜치 이름.

AuthorDate

커밋이 작성된 날짜입니다(타임스탬프 형식).

Git의 작성자와 커미터의 차이점에 대한 자세한 내용은 Scott Chacon과 Ben Straub가 작성한 Pro Git의 커밋 기록 보기를 참조하십시오.

CommitterDate

커밋이 수행된 날짜입니다(타임스탬프 형식).

Git의 작성자와 커미터의 차이점에 대한 자세한 내용은 Scott Chacon과 Ben Straub가 작성한 Pro Git의 커밋 기록 보기를 참조하십시오.

작업 선언(GitHub 예)

YAML
Name: Source Actions: - InputArtifacts: [] ActionTypeId: Version: '1' Owner: ThirdParty Category: Source Provider: GitHub OutputArtifacts: - Name: SourceArtifact RunOrder: 1 Configuration: Owner: MyGitHubAccountName Repo: MyGitHubRepositoryName PollForSourceChanges: 'false' Branch: main OAuthToken: '{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}' Name: ApplicationSource
JSON
{ "Name": "Source", "Actions": [ { "InputArtifacts": [], "ActionTypeId": { "Version": "1", "Owner": "ThirdParty", "Category": "Source", "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceArtifact" } ], "RunOrder": 1, "Configuration": { "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Name": "ApplicationSource" } ] },

GitHub (OAuth) 에 연결

콘솔을 사용하여 파이프라인에 리포지토리를 처음 추가할 때 GitHub 리포지토리에 CodePipeline 대한 액세스를 승인하라는 메시지가 표시됩니다. 토큰에는 다음과 같은 범위가 필요합니다. GitHub

  • repo 범위(퍼블릭 및 프라이빗 리포지토리에서 파이프라인으로 아티팩트를 읽고 가져올 수 있도록 완전히 제어하는 데 사용됨).

  • admin:repo_hook 범위(리포지토리 후크를 완전히 제어하는 데 사용됨).

CLI또는 AWS CloudFormation 템플릿을 사용할 때는 에서 GitHub 이미 만든 개인용 액세스 토큰의 값을 제공해야 합니다.

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.