Cloud Build와 통합

이 페이지에서는 Artifact Registry 저장소에 빌드된 아티팩트를 저장하도록 Cloud Build를 구성하는 방법을 설명합니다.

시작하기 전에

  1. 대상 저장소가 없으면 새 저장소를 만듭니다.
  2. 기본 Cloud Build 서비스 계정에는 동일한 프로젝트의 저장소에 업로드하고 다운로드할 수 있는 권한이 있습니다. Cloud Build가 저장소와 다른 프로젝트에 있으면 저장소가 있는 프로젝트의 Cloud Build 서비스 계정에 권한을 부여해야 합니다.

Docker 빌드 구성

대상 저장소에 대한 권한을 부여했으면 Docker를 구성하여 패키지를 인증하고 저장소에 내보낼 수 있습니다. Cloud Build 서비스 계정을 사용하여 통합하는 것이 좋습니다.

Docker를 구성하려면 다음 안내를 따르세요.

  1. Docker를 위한 인증을 설정합니다.

  2. 빌드 구성 파일에 이미지를 빌드하고 내보내는 단계를 추가합니다.

    다음 예시에서는 빌드 구성 파일과 동일한 디렉터리에 있는 이미지의 다음 값을 사용합니다.

    • 저장소 위치 us-central1
    • 빌드의 프로젝트 ID는 기본 대체 $PROJECT_ID로 확인됩니다.
    • 저장소 이름 my-repo
    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ]
    images:
    - 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
    

    변수 ${_REPOSITORY}${_IMAGE}는 빌드 시 커스텀 Cloud Build 대체 항목을 사용하여 빌드 시 바꿀 수 있도록 저장소 이름과 커스텀 이미지의 이름에 사용합니다.

    이 방식은 동일한 빌드 구성 파일을 사용하여 테스트, 스테이징 또는 프로덕션과 같은 다양한 환경의 저장소에 이미지를 내보내려는 경우에 유용합니다.

    예를 들어 이 명령어는 저장소 이름으로 my-repo를, 이미지 이름으로 my-image를 대체합니다.

    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_REPOSITORY="my-repo",_IMAGE="my-image" .
    

Maven 빌드 구성

대상 저장소에 대한 권한을 부여했으면 이제 Maven을 구성하여 패키지를 인증하고 저장소에 내보낼 수 있습니다. Cloud Build 서비스 계정을 사용하여 통합하는 것이 좋습니다.

Maven을 구성하려면 다음 안내를 따르세요.

  1. Maven의 인증을 설정합니다. pom.xml 파일에 올바른 대상 프로젝트 및 저장소를 지정해야 합니다.

  2. Cloud Build 빌드 구성 파일에 Maven으로 패키지를 업로드하는 단계를 추가합니다.

    steps:
    - name: gcr.io/cloud-builders/mvn
      args: ['deploy']
    

npm 빌드 구성

대상 저장소에 대한 권한을 부여했으면 npm을 구성하여 패키지를 인증하고 저장소로 내보낼 수 있습니다. Cloud Build 서비스 계정을 사용하여 통합하는 것이 좋습니다.

npm을 구성하려면 다음 안내를 따르세요.

  1. npm의 인증을 설정합니다. .npmrc 파일에 올바른 대상 프로젝트 및 저장소를 지정해야 합니다.

  2. Cloud Build가 인증 설정을 찾을 수 있도록 Cloud Build 빌드 구성 파일과 동일한 디렉터리에 .npmrc 파일을 배치합니다.

  3. 빌드 구성 파일에 패키지를 저장소에 업로드하는 단계를 추가합니다.

    steps:
    - name: gcr.io/cloud-builders/npm
      args: ['publish', ${_PACKAGE}]
    

    변수 ${_PACKAGE}은 패키지를 나타냅니다. 빌드 시 이 커스텀 Cloud Build 대체 항목은 패키지, 폴더 또는 package.json과 패키지의 다른 파일이 포함된 gzip으로 압축한 tarball의 위치로 바꿉니다.

    예를 들어 이 명령어는 .npmrc 파일 및 빌드 구성 파일과 동일한 디렉터리에 있는 src 디렉터리의 패키지를 업로드합니다.

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_PACKAGE="src" .