빌드 사양에서 GitHub 액션 구문 사용 AWS CodeBuild - AWS CodeBuild

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

빌드 사양에서 GitHub 액션 구문 사용 AWS CodeBuild

CodeBuild-managed 액션 러너를 사용하여 내에서 액션을 실행할 수 있습니다. GitHub CodeBuild 이 작업은 buildspec 파일의 아무 단계에나 steps를 추가하여 수행할 수 있습니다.

CodeBuild buildspec은 명령과는 별도의 단계에서 실행되는 순차적 GitHub 액션 단계 목록을 지원합니다. CodeBuild 이러한 GitHub 액션은 종속성 캐싱, 배치 빌드, 액세스 등을 포함하는 CodeBuild 의 기존 기능과 통합됩니다. AWS Secrets Manager

빌드 사양에서 GitHub Action을 사용하려면 어떻게 해야 하나요?

빌드 사양에서 GitHub 액션을 사용하는 상위 단계는 다음과 같습니다.

  1. 아직 연결하지 않았다면 프로젝트를 에 연결하세요. GitHub

    이렇게 하려면 다음 중 하나를 수행할 수 있습니다.

    참고

    다른 프로젝트에 연결하지 않은 경우에만 이 작업을 수행하면 됩니다. GitHub

  2. 프로젝트의 빌드스펙에서 각각 액션을 참조하는 것을 추가할 steps 수 있습니다. GitHub CodeBuild 콘솔이나 소스 리포지토리에서 편집할 수 있습니다. 각 빌드 단계는 명령 목록이나 단계 목록을 지원하지만 둘 다 같은 단계에서 사용할 수는 없습니다. 자세한 정보는 빌드 사양에서 GitHub 액션 구문 사용 AWS CodeBuild을 참조하세요.

빌드 사양에서 어떤 GitHub 액션을 사용할 수 있나요?

GitHub Marketplace에서 사용할 수 있는 작업 중 이러한 제한과 충돌하지 않는 모든 작업을 사용할 수 있습니다.

빌드스펙에서 GitHub 액션을 사용할 GitHub 때 말고 다른 소스 공급자를 사용할 수 있나요?

예. 하지만 Action을 사용하여 GitHub 인증하고 액세스하려면 여전히 GitHub 연결이 필요합니다. GitHub 자세한 정보는 GitHub 및 GitHub 엔터프라이즈 서버 액세스 토큰을 참조하세요.

빌드 사양에서 GitHub 액션을 사용하려면 소스 GitHub 공급자로 연결해야 하는 이유는 무엇입니까?

빌드 사양에서 GitHub Action을 사용하려면 소스를 빌드 컴퓨트에 다운로드해야 합니다. 익명 다운로드는 속도가 제한되므로 에 연결하면 일관된 액세스를 보장하는 데 도움이 될 수 있습니다. GitHub

빌드 사양에서 GitHub 액션을 사용하는 데 비용이 얼마나 드나요?

빌드 사양에서 GitHub 액션을 사용하는 것은 추가 비용 없이 지원됩니다.

내 빌드스펙에서 GitHub 액션을 사용할 수 있는 지역은 어디입니까?

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

빌드 사양에서 GitHub 액션을 사용하는 베스트 프랙티스

GitHub 액션은 오픈소스이며 커뮤니티에서 빌드하고 유지 관리합니다. 우리는 공동 책임 모델을 따르며 GitHub Actions 소스 코드를 귀하가 책임져야 하는 고객 데이터로 간주합니다. GitHub 액션에는 비밀, 리포지토리 토큰, 소스 코드, 계정 링크에 대한 액세스 권한을 부여할 수 있습니다. 실행하려는 GitHub 작업의 신뢰성과 보안에 확신이 있는지 확인하세요.

작업에 대한 보다 구체적인 지침 및 보안 모범 사례: GitHub

빌드 사양에서 GitHub 액션을 사용할 때의 제한 사항 CodeBuild

  • GitHub 내부적으로 github컨텍스트를 사용하거나 pull 요청 및 issue와 같은 GitHub 특정 리소스를 참조하는 빌드 사양 내 액션은 에서 지원되지 않습니다. CodeBuild 예를 들어, 다음 액션은 다음에서는 작동하지 않습니다. CodeBuild

    • GitHub GitHub리소스를 추가, 변경 또는 업데이트하려는 작업 (예: pull 요청을 업데이트하거나 에서 GitHub 이슈를 생성하는 작업)

    참고

    https://github.com/actions 에 나열된 대부분의 공식 GitHub 조치는 github 상황에 따라 달라집니다. 대신 GitHub Marketplace에서 사용할 수 있는 작업을 사용하세요.

  • GitHub Docker 컨테이너 작업인 빌드 사양의 액션은 작동하지만 빌드 프로젝트는 권한 모드를 활성화하고 기본 Docker 사용자 (루트) 가 실행해야 합니다.

  • GitHub 빌드 사양의 액션은 Windows에서 실행되도록 구성된 CodeBuild 프로젝트에서는 지원되지 않습니다.

  • GitHub 빌드스펙의 액션 작업 (단계 그룹) 및 GitHub 액션 작업 속성은 지원되지 않습니다.

  • GitHub 빌드 스펙의 액션은 공개 Git 리포지토리의 웹후크에 의해 트리거되도록 구성된 CodeBuild 프로젝트에서는 지원되지 않습니다. 자세한 내용은 을 참조하십시오. git-credential-helper

  • 퍼블릭 인터넷 액세스가 없는 VPC 빌드는 빌드 사양에서 GitHub 액션을 실행할 수 없습니다.

  • 각 빌드 단계는 명령 목록이나 단계 목록을 지원하지만 둘 다 같은 단계에서 사용할 수는 없습니다. 예를 들어 다음 샘플에서는 사전 빌드 단계에서는 단계를 사용하여 GitHub 작업을 나열하고 빌드 단계에서는 명령을 사용하여 명령을 나열합니다. CodeBuild

    version: 0.2 phases: pre-build: steps: - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: 'true' DEFAULT_BRANCH: main build: commands: - echo "Building..." - npm run build

GitHub 액션 러너 빌드스펙 참조

이 항목에는 액션 러너 속성에 대한 buildspec 참조가 포함되어 있습니다. GitHub

단계(steps)

선택적 시퀀스. 단계는 에서 명령과 액션을 실행하는 데 사용됩니다. CodeBuild 자세한 정보는 빌드 사양에서 GitHub 액션 구문 사용 AWS CodeBuild을 참조하세요.

참고

각 빌드 단계는 commands 목록이나 steps 목록을 지원하지만 둘 다 같은 단계에서 사용할 수는 없습니다.

각 빌드 단계는 다음 속성을 포함합니다.

id

선택 사항입니다. 다른 컨텍스트의 단계를 참조하는 데 사용할 수 있는 단계의 식별자입니다.

if

선택 사항입니다. 조건이 충족되지 않으면 단계가 실행되지 않도록 하는 데 사용할 수 있는 조건문입니다. 이 명령문은 표현식뿐 아니라 에서 CodeBuild 환경 변수를 참조하는 등 지원되는 모든 컨텍스트를 사용할 수 있습니다.

이름

선택 사항입니다. 단계의 이름입니다. 이름을 지정하지 않으면 기본 이름은 run 명령에 지정된 텍스트입니다.

uses

단계에 대해 실행되는 작업입니다. 일부 작업에서는 with를 사용하여 입력을 설정해야 합니다. 작업의 README를 참조하여 필요한 입력을 확인합니다. 자세한 정보는 빌드 사양에서 어떤 GitHub 액션을 사용할 수 있나요?을 참조하세요.

빌드 단계에서 uses를 지정한 경우 run과 함께 사용할 수 없습니다.

참고

사용 중인 작업의 버전을 포함하는 것이 좋습니다. 이 작업은 Git ref, SHA 또는 Docker 태그를 지정하여 수행할 수 있습니다. 자세한 내용은 steps.uses 구문을 참조하세요.

run

명령줄 프로그램을 실행하는 명령입니다. 이것은 한 줄 명령일 수도 있고 여러 줄 명령일 수도 있습니다. 기본적으로 이러한 명령은 비로그인 쉘을 사용하여 실행됩니다. 다른 쉘을 선택하려면 shell을 사용합니다.

빌드 단계에서 run를 지정한 경우 uses과 함께 사용할 수 없습니다.

shell

선택 사항입니다. 이 시퀀스에 지정된 쉘입니다. 지원되는 쉘 파라미터는 steps.shell을 참조하세요. 지정하지 않은 경우 사용되는 쉘은 bash입니다. bash를 사용할 수 없는 경우 sh가 사용됩니다.

with

선택 사항입니다. 작업에 의해 정의된 입력 파라미터의 맵입니다. 각 파라미터는 키/값 페어로 구성됩니다.

with.args

선택 사항입니다. Docker 컨테이너의 입력을 정의하는 문자열입니다.

with.entrypoint

선택 사항입니다. Dockerfile에 지정된 Docker 진입점입니다.

env

선택 사항입니다. 환경에서 사용할 단계에 대해 지정된 변수입니다.

continue-on-error

선택 사항입니다. 이 단계 시퀀스의 실패를 무시할 수 있는지 여부를 나타내는 부울 값입니다.

false

기본값입니다. 이 단계 시퀀스가 실패하면 빌드가 실패합니다.

true

이 단계 시퀀스가 실패하더라도 빌드는 여전히 성공할 수 있습니다.

timeout-minutes

선택 사항입니다. 단계가 종료되기 전에 실행할 수 있는 최대 시간(분)입니다. 기본값은 제한 시간 없음입니다. 단계 제한 시간이 빌드 제한 시간을 초과하는 경우 빌드 제한 시간에 도달하면 단계가 중지됩니다.

다음은 슈퍼 GitHub 린터 액션을 사용한 예제입니다.

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true USE_FIND_ALGORITHM: true FILTER_REGEX_INCLUDE: '/github/workspace/buildspec.yml'

GitHub 다음과 같은 액션 구문 샘플 AWS CodeBuild

이 샘플 그룹을 사용하여 빌드스펙의 GitHub 액션을 실험해 볼 수 있습니다. CodeBuild

슈퍼 린터 액션 샘플 GitHub

이 샘플은 프로젝트에 수퍼 GitHub 린터 액션을 추가하는 방법을 보여줍니다. CodeBuild Super-Linter 액션은 코드를 검사하고 코드에 오류가 있는 영역, 형식 지정 문제, 의심스러운 구문을 찾아 결과를 콘솔에 출력합니다. CodeBuild

buildspec 파일의 단계 섹션을 업데이트하여 CodeBuild 프로젝트에 슈퍼 린터 GitHub 액션을 추가할 수 있습니다.

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true

다음과 비슷한 Super-Linter 로그가 표시됩니다.

/github/workspace/hello-world/app.js:3:13: Extra semicolon. /github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed. /github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found. /github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4. /github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.

배치 빌드 그래프 샘플

다음 예제는 종속성 체인을 생성하고 steps를 사용하여 명령을 실행하는 빌드 그래프를 정의합니다. 이 예제에서는 종속성이 없으므로 build1이 먼저 실행됩니다. build2에는 build1에 대한 종속 관계가 있으므로 build1이 완료된 후에 build2가 실행됩니다. 자세한 내용은 빌드 그래프을 참조하세요.

version: 0.2 batch: fast-fail: false build-graph: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 env: variables: BUILD_ID: build2 depend-on: - build1 phases: build: steps: - run: echo $BUILD_ID

아마존 CodeGuru 리뷰어 샘플

Amazon CodeGuru Reviewer는 Java 및 Python 코드에서 문제를 발견하고 해결 방법을 권장합니다. 다음 예제는 CodeGuru Reviewer를 사용하여 전체 리포지토리 분석 코드 검토를 제공합니다. 이러한 코드 검토는 지정된 분기의 모든 코드를 스캔합니다. 자세한 내용은 Amazon CodeGuru Reviewer 사용 설명서의 GitHub 작업을 사용하여 코드 리뷰 생성을 참조하십시오.

version: 0.2 phases: build: steps: - name: Amazon CodeGuru Reviewer Scanner if: ${{ always() }} uses: aws-actions/codeguru-reviewer@v1.1 with: s3_bucket: codeguru-reviewer-user artifacts: files: - codeguru-results.sarif.json
참고

Amazon S3 버킷은 codeguru-reviewer- 접두사로 시작해야 합니다.

다음과 비슷한 로그가 표시됩니다.

INFO CodeReview created with arn=arn:aws:codeguru-reviewer:region:account-id:association:id:code-review:RepositoryAnalysis-job for job=job INFO SARIF persisted to /github/workspace/codeguru-results.sarif.json INFO Amazon CodeGuru Reviewer job execution completed

Amazon CodeGuru Reviewer 작업이 완료되면 사리프 보고서가 아티팩트로 CodeBuild 생성됩니다. 자세한 내용은 Amazon CodeGuru Reviewer 사용 설명서의 전체 리포지토리 분석을 참조하십시오.

AWS Secrets Manager 샘플

AWS Secrets Manager 수명 주기 전반에 걸쳐 데이터베이스 자격 증명, 애플리케이션 자격 증명, OAuth 토큰, API 키 및 기타 비밀을 관리, 검색 및 교체하는 데 도움이 됩니다. 다음 예제에서는 Secrets Manager를 사용하여 비밀을 정의하고 steps를 사용하여 명령을 실행합니다. 자세한 내용은 무엇입니까를 참조하십시오. AWS Secrets Manager AWS Secrets Manager 사용 설명서에서.

version: 0.2 env: secrets-manager: SECRET_VALUE: "arn:aws:secretsmanager:us-east-1:xxxx:secret:/secret-l3IJg9:my_super_secret_key" phases: build: steps: - run: echo $SECRET_VALUE

다음과 비슷한 로그가 표시됩니다.

echo $SECRET_VALUE env: SECRET_VALUE: *** ***

환경 변수 샘플

다음 예제에서는 env 시퀀스에 따라 환경 변수를 정의합니다. S3_BUCKET 변수는 buildspec에서 정의되고 해당 값으로 <bucket-name>이 할당됩니다. 이 변수는 if 조건부에서 일반 환경 변수처럼 달러 기호 ($) 를 사용하여 GitHub Action env 컨텍스트에 액세스하는 방식으로 참조됩니다. 자세한 내용은 env 시퀀스를 참조하세요.

version: 0.2 env: variables: S3_BUCKET: "<bucket-name>" phases: build: steps: - if: ${{ env.S3_BUCKET == '<bucket-name>' }} run: echo "S3 bucket is $S3_BUCKET"

다음과 비슷한 로그가 표시됩니다.

echo "S3 bucket is $S3_BUCKET" env: S3_BUCKET: my-s3-bucket S3 bucket is my-s3-bucket

내보낸 환경 변수 샘플

내보낸 환경 변수는 과 함께 CodePipeline 사용하여 현재 빌드 단계에서 파이프라인의 후속 단계로 환경 변수를 내보내는 데 사용됩니다. 다음 예제에서는 내보낸 환경 변수를 MY_VARIABLE이라는 env 시퀀스에 따라 정의하고 GITHUB_ENV 환경 파일에 씁니다.

version: 0.2 env: exported-variables: - MY_VARIABLE phases: build: steps: - run: echo "MY_VARIABLE=my-value" >> $GITHUB_ENV

자세한 내용은 AWS CodeBuild API ExportedEnvironmentVariable참조를 참조하십시오.