에서 자체 호스팅 GitHub 액션 러너 설정 AWS CodeBuild - AWS CodeBuild

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

에서 자체 호스팅 GitHub 액션 러너 설정 AWS CodeBuild

CodeBuild 컨테이너에 자체 호스팅된 GitHub 액션 러너를 설정하여 액션 워크플로 작업을 처리하도록 프로젝트를 구성할 수 있습니다 GitHub . CodeBuild 프로젝트를 사용하여 웹후크를 설정하고 머신에서 호스팅되는 자체 호스팅 러너를 사용하도록 GitHub Actions 워크플로 YAML을 업데이트하면 됩니다. CodeBuild 자세한 내용은 자체 호스팅 러너 정보를 참조하십시오.

GitHub Actions 작업을 실행하도록 CodeBuild 프로젝트를 구성하는 상위 단계는 다음과 같습니다.

  1. 아직 만들지 않았다면 개인용 액세스 토큰을 만들거나 OAuth 앱으로 연결하여 프로젝트를 연결하세요. GitHub

  2. CodeBuild 콘솔로 이동하여 웹후크가 포함된 CodeBuild 프로젝트를 만들고 웹후크 필터를 설정합니다.

  3. 에서 GitHub 액션 워크플로 YAML을 GitHub 업데이트하여 빌드 환경을 구성하세요.

자세한 절차는 을 참조하십시오자습서: CodeBuild 자체 호스팅 Actions 러너 GitHub 구성.

이 기능을 사용하면 GitHub Actions 워크플로 작업이 기본적으로 통합되어 IAM AWS, 통합, AWS Secrets Manager Amazon VPC와 같은 기능을 통해 보안 및 편의성을 제공할 수 있습니다. AWS CloudTrail ARM 기반 인스턴스를 비롯한 최신 인스턴스 유형에 액세스할 수 있습니다.

자습서: CodeBuild 자체 호스팅 Actions 러너 GitHub 구성

이 가이드에서는 GitHub Actions 작업을 실행하도록 CodeBuild 프로젝트를 구성하는 방법을 보여줍니다.

필수 조건

이 자습서를 완료하려면 먼저 다음을 수행해야 합니다.

1단계: CodeBuild 웹후크를 사용하여 프로젝트 만들기

이 단계에서는 웹후크가 포함된 CodeBuild 프로젝트를 만들고 콘솔에서 검토합니다 GitHub .

웹후크가 있는 CodeBuild 프로젝트를 만들려면
  1. https://console.aws.amazon.com/codesuite/codebuild/home 에서 AWS CodeBuild 콘솔을 엽니다.

  2. 빌드 프로젝트를 생성합니다. 자세한 내용은 빌드 프로젝트 만들기(콘솔)빌드 실행(콘솔) 섹션을 참조하세요.

    • 소스에서 다음과 같이 합니다.

      • 소스 제공자의 경우 선택하십시오 GitHub.

      • 리포지토리의 경우 내 GitHub 계정의 리포지토리를 선택합니다.

      • 리포지토리 URLhttps://github.com/user-name/repository-name을 입력합니다.

    • 기본 소스 웹후크 이벤트에서:

      • Webhook - 선택 사항의 경우 코드 변경 사항이 이 리포지토리로 푸시될 때마다 재구축을 선택합니다.

      • 이벤트 유형으로는 WORKFLOW_JOB_QUEUED을 선택합니다. 이 기능을 활성화하면 작업 워크플로 작업 이벤트에 의해서만 빌드가 트리거됩니다. GitHub

        참고

        CodeBuild 웹후크에 WORKFLOW_JOB_QUEUED 이벤트 필터가 포함된 필터 그룹이 있는 경우에만 작업 워크플로 작업 이벤트를 처리합니다 GitHub .

    • 환경에서 다음과 같이 합니다.

      • 지원되는 환경 이미지를 선택하고 컴퓨팅하십시오. 참고로 GitHub Actions 워크플로 YAML에는 라벨을 사용하여 이미지 및 인스턴스 설정을 재정의할 수 있는 옵션이 있습니다. 자세한 내용은 2단계: GitHub 액션 워크플로 YAML 업데이트단원을 참조하세요.

    • Buildspec에서 다음과 같이 합니다.

      • 참고로 빌드스펙은 무시됩니다. 대신 자체 CodeBuild 호스팅 러너를 설정하는 명령을 사용하도록 오버라이드합니다. 이 프로젝트의 주요 책임은 Actions 워크플로 작업을 실행하도록 자체 호스팅 러너를 설정하는 CodeBuild 것입니다. GitHub

  3. 기본값을 계속 사용하고 빌드 프로젝트 만들기를 선택합니다.

  4. 에서 GitHub https://github.com/user-name/repository-name/settings/hooks 콘솔을 열어 웹후크가 생성되었고 Workflow 작업 이벤트를 전달할 수 있도록 활성화되었는지 확인합니다.

2단계: GitHub 액션 워크플로 YAML 업데이트

이 단계에서는 GitHub Actions 워크플로 YAML 파일을 GitHub업데이트하여 빌드 환경을 구성하고 에서 GitHub Actions 자체 호스팅 러너를 사용합니다. CodeBuild 자세한 내용은 자체 호스팅 러너에서 레이블 사용을 참조하세요.

GitHub 액션 워크플로 YAML을 업데이트하세요.

GitHub Actions 워크플로 YAML에서 runs-on설정을 GitHub탐색하고 업데이트하여 빌드 환경을 구성하세요. 이렇게 하려면 다음 중 하나를 수행할 수 있습니다.

  • 프로젝트 이름과 실행 ID를 지정할 수 있습니다. 이 경우 빌드는 컴퓨팅, 이미지, 이미지 버전, 인스턴스 크기에 기존 프로젝트 구성을 사용합니다. GitHub Actions 작업의 AWS관련 설정을 특정 CodeBuild 프로젝트에 연결하려면 프로젝트 이름이 필요합니다. YAML에 프로젝트 이름을 포함하면 올바른 프로젝트 설정으로 작업을 호출할 수 있습니다. CodeBuild 실행 ID를 CodeBuild 제공하면 빌드를 특정 워크플로 실행에 매핑하고 워크플로 실행이 취소되면 빌드를 중지합니다. 자세한 내용은 github컨텍스트를 참조하십시오.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    참고

    가 <project-name>이전 단계에서 만든 프로젝트의 이름과 일치하는지 확인하세요. 일치하지 않으면 CodeBuild 웹후크를 처리하지 않고 GitHub 액션 워크플로가 중단될 수 있습니다.

    다음은 GitHub 액션 워크플로 YAML의 예입니다.

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • 라벨의 이미지와 컴퓨팅 유형을 재정의할 수도 있습니다. 이렇게 하면 프로젝트의 환경 설정이 재정의됩니다. Amazon EC2 컴퓨팅 빌드의 환경 설정을 재정의하려면 다음 구문을 사용하십시오.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>

    Lambda 컴퓨팅 빌드의 환경 설정을 재정의하려면 다음 구문을 사용하십시오.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<runtime-version>-<instance-size>

    다음은 GitHub 액션 워크플로 YAML의 예시입니다.

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-small steps: - run: echo "Hello World!"
참고

CodeBuild 환경에서 GitHub -hosted runners에서 제공하는 종속성을 사용할 수 없는 경우 워크플로 실행의 Actions를 사용하여 GitHub 종속성을 설치할 수 있습니다. 예를 들어 setup-python작업을 사용하여 빌드 환경에 Python을 설치할 수 있습니다.

지원되는 컴퓨팅 이미지

레이블에서 처음 세 열의 값을 사용하여 Amazon EC2 환경 설정을 재정의할 수 있습니다. CodeBuild 는 다음과 같은 Amazon EC2 컴퓨팅 이미지를 제공합니다.

이미지 이미지 버전 인스턴스 크기 플랫폼 이미지 식별자 정의

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 N/A

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 N/A

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 N/A

또한 다음 값을 사용하여 Lambda 환경 설정을 재정의할 수 있습니다. CodeBuild Lambda 컴퓨팅에 대한 자세한 내용은 사용을 참조하십시오. AWS Lambda 컴퓨트 인에서 작업하기 AWS CodeBuild CodeBuild 다음과 같은 Lambda 컴퓨팅 이미지를 지원합니다.

환경 유형 실행 시간 버전 인스턴스 크기

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

자세한 내용은 빌드 환경 컴퓨팅 모드 및 유형Docker 이미지 제공: CodeBuild 섹션을 참조하세요.

3단계: 결과 검토

GitHub Actions 워크플로가 CodeBuild 실행될 때마다 웹후크를 통해 워크플로 작업 이벤트를 수신합니다. 워크플로의 각 작업에 대해 임시 GitHub 액션 러너를 실행하기 위한 빌드를 CodeBuild 시작합니다. 러너는 단일 워크플로 작업 실행을 담당합니다. 작업이 완료되면 러너 및 관련 빌드 프로세스가 즉시 종료됩니다.

워크플로 작업 로그를 보려면 의 GitHub 저장소로 이동하여 작업을 선택하고 원하는 워크플로를 선택한 다음 로그를 검토하려는 특정 작업을 선택합니다.

자체 호스팅 실행자가 작업을 선택하기를 기다리는 동안 로그에서 요청된 레이블을 검토할 수 있습니다. CodeBuild

작업이 완료되면 작업 로그를 볼 수 있습니다.

CodeBuild-호스트 GitHub 액션 러너에 대한 정보

라벨에 이미지와 인스턴스 오버라이드를 언제 포함해야 하나요?

각 Actions 워크플로 작업에 대해 서로 다른 빌드 환경을 지정하기 위해 라벨에 이미지 및 인스턴스 오버라이드를 포함할 수 있습니다 GitHub . 여러 CodeBuild 프로젝트나 웹훅을 만들 필요 없이 이 작업을 수행할 수 있습니다. 예를 들어 워크플로 작업에 매트릭스를 사용해야 할 때 유용합니다.

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
참고

GitHub 작업 runs-on 컨텍스트가 포함된 레이블이 여러 개 있는 경우 따옴표가 필요할 수 있습니다.

이 기능에 AWS CloudFormation 사용할 수 있나요?

예. 프로젝트 웹후크의 GitHub Actions 워크플로 작업 이벤트 필터를 지정하는 필터 그룹을 AWS CloudFormation 템플릿에 포함할 수 있습니다.

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

자세한 정보는 GitHub 웹후크 이벤트 필터링 ()AWS CloudFormation을 참조하세요.

AWS CloudFormation 템플릿에서 프로젝트 자격 증명을 설정하는 데 도움이 필요한 경우 자세한 내용은 AWS CloudFormation 사용 설명서를 참조하십시오 AWS::CodeBuild::SourceCredential.

CodeBuild-hosted GitHub Actions 러너 사용을 지원하는 지역은 어디입니까?

CodeBuild-호스트 GitHub 액션 러너는 모든 지역에서 지원됩니다. CodeBuild 사용 가능한 AWS 리전 위치에 CodeBuild 대한 자세한 내용은 지역별AWS 서비스를 참조하십시오.

CodeBuild-호스트 GitHub 액션 러너 사용을 지원하는 플랫폼은 무엇입니까?

CodeBuild-호스팅 GitHub 액션 러너는 Amazon AWS LambdaEC2와 컴퓨팅 모두에서 지원됩니다. 다음 플랫폼을 사용할 수 있습니다: 아마존 리눅스 2, 아마존 리눅스 2023, 우분투, 윈도우 서버 코어 2019. 자세한 내용은 EC2 컴퓨팅 이미지Lambda 컴퓨팅 이미지 섹션을 참조하세요.

문제 해결: 웹훅이 작동하지 않는 경우 문제를 해결하려면 어떻게 해야 합니까?

문제: 웹후크가 작동하지 않거나 워크플로 작업이 중단되고 있습니다. GitHub

가능한 원인: 웹후크 워크플로 작업 이벤트가 빌드를 트리거하지 못할 수 있습니다. 응답 로그를 검토하여 응답 또는 오류 메시지를 확인하세요.

권장 해결 방법: 이 오류를 디버깅하려면 다음 지침을 사용하십시오.

  1. 에서 GitHub https://github.com/user-name/repository-name/settings/hooks 콘솔을 열어 리포지토리의 웹후크 설정을 확인하십시오. 이 페이지에서는 리포지토리용으로 생성된 웹후크를 볼 수 있습니다.

  2. 편집을 선택하고 웹후크가 Workflow jobs 이벤트를 전송할 수 있도록 활성화되었는지 확인합니다.

  3. 최근 배송 탭으로 이동하여 해당 workflow_job.queued 이벤트를 찾고 이벤트를 확장하십시오.

  4. 페이로드의 레이블 필드를 검토하여 예상한 대로인지 확인하십시오.

  5. 마지막으로 Response 탭을 검토하세요. Response 탭에는 에서 CodeBuild 반환된 응답 또는 오류 메시지가 포함되어 있습니다.