부록 A: GitHub 버전 1 소스 작업 - AWS CodePipeline

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

부록 A: GitHub 버전 1 소스 작업

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

참고

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

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

참고

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

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

중요

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

참고

보안 암호 토큰이 제공된 경우 응답에서 해당 토큰이 수정됩니다.

GitHub 버전 1 소스 작업 추가

GitHub 버전 1 소스 작업을 에 추가하는 CodePipeline 방법:

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

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

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

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

GitHub 버전 1 소스 작업 참조

참고

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

구성된 리 GitHub 포지토리 및 브랜치에서 새 커밋이 생성될 때 파이프라인을 트리거합니다.

와 통합하려면 파이프라인에 애플리케이션 OAuth 또는 개인 액세스 토큰을 GitHub CodePipeline 사용합니다. 콘솔을 사용하여 파이프라인을 생성하거나 편집하는 경우 는 리포지토리에서 변경 사항이 발생할 때 파이프라인을 시작하는 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 연결을 등록합니다.

  • AWS CLI 를 사용하여 파이프라인을 생성할 때 이 필드에 GitHub 개인 액세스 토큰을 전달할 수 있습니다. 별표(****)를 에서 복사한 개인 액세스 토큰으로 바꿉니다 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

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

CommitterDate

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

작업 선언(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.

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