이 페이지에서는 Cloud Build에서 빌드를 시작하는 데 사용할 수 있는 빌드 구성 파일 작성 방법을 설명합니다.
빌드 구성 파일은 Cloud Build가 작업을 수행하는 데 필요한 필드를 정의합니다. gcloud
명령줄 도구 또는 빌드 트리거를 사용하여 빌드를 시작하려면 빌드 구성 파일이 필요합니다. 빌드 구성 파일은 YAML 또는 JSON 구문을 사용하여 작성할 수 있습니다.
시작하기 전에
빌드 구성 개요를 읽고 빌드 구성 파일에 포함할 수 있는 필드에 대해 알아보세요.
빌드 구성 만들기
다음 단계에서는 기본 빌드 구성 파일을 만드는 방법을 설명합니다. 빌드 구성 파일의 각 필드는 수행하려는 작업의 일부를 정의합니다. 빌드 구성 파일의 유일한 필수 필드는 단계의 name
필드입니다. 다른 입력란은 선택사항입니다.
YAML
빌드 구성 파일을 만듭니다. 프로젝트 루트 디렉터리에
cloudbuild.yaml
이라는 파일을 만듭니다. 이는 Cloud Build 구성 파일입니다.단계 필드를 추가합니다. 빌드 구성 파일의
steps
섹션에는 Cloud Build에서 수행할 빌드 단계가 포함되어 있습니다.steps:
첫 번째 단계를 추가합니다.
steps:
아래에name
필드를 추가하고 작업을 실행할 컨테이너 이미지를 가리키도록 지정합니다. Cloud Build와 개발자 커뮤니티는 일반적인 도구와 언어가 설치된 몇 가지 컨테이너 이미지를 제공합니다. 빌드 단계에서 이러한 이미지(Cloud 빌더라고도 함) 또는 공개적으로 사용 가능한 이미지를 사용할 수 있습니다. 빌드 단계에서 사용할 수 있는 다양한 유형의 컨테이너 이미지에 대한 자세한 내용은 Cloud 빌더를 참조하세요.다음 스니펫은 Docker를 실행하는 컨테이너 이미지인
docker
빌더gcr.io/cloud-builders/docker
가 있는 빌드 단계를 보여줍니다.steps: - name: 'gcr.io/cloud-builders/docker'
단계 인수를 추가합니다. 단계의
args
필드는 인수 목록을 가져오고name
필드로 참조되는 빌더에 전달합니다.name
필드의 빌더에 진입점이 있으면 목록의args
가 해당 진입점에 액세스하는 데 사용됩니다.name
필드의 빌더에 진입점이 없으면args
의 첫 번째 요소가 진입점으로 사용됩니다.아래 예시를 참조하세요.
build
는 Docker 클라우드 빌더의 진입점입니다.-t
는 Docker 태그입니다.us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
는 Artifact Registry에 빌드할 이미지의 이름입니다. 빌드 단계는 프로젝트 ID의 기본 대체를 사용하므로 이 값은 빌드 시간에 자동으로 대체됩니다..
는 소스 코드가 현재 작업 디렉터리에 있음을 나타내는 소스 코드 위치입니다.steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
단계를 더 추가합니다. 추가
name
필드를 포함하고 Cloud 빌더를 가리키도록 지정하여 빌드 구성 파일에 원하는 수의 빌드 단계를 추가할 수 있습니다.다음 스니펫에는 빌드 구성 파일에 대한 두 가지 추가 단계가 포함되어 있습니다.
docker push
명령어를 호출하고 이전 단계의 이미지 빌드를 Artifact Registry에 푸시하는 docker 빌드 단계gcloud
진입점이 지정된 Google Cloud SDK 명령어의 빌드 단계: Artifact Registry의 컨테이너 이미지에서 Compute Engine 인스턴스를 만듭니다. Compute Engine 영역과 리전을 지정하기 위해env
필드가 포함됩니다.- name: 'gcr.io/cloud-builders/docker' args: ['push', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
추가 빌드 구성 필드를 포함합니다.
machineType
,tags
또는timeout
과 같은 필드를 포함하여 빌드를 추가로 구성할 수 있습니다. 빌드 구성 파일에 포함할 수 있는 필드의 전체 목록은 빌드 구성 개요를 참조하세요.다음 예시에서
gcr.io/google.com/cloudsdktool/cloud-sdk
빌드 단계는 240초 후에 타임아웃됩니다.- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' timeout: 240s args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
기본 빌드 구성 파일의 전체 예시는 다음 스니펫을 참조하세요.
이 예시에서는 컨테이너 이미지가 Artifact Registry에 저장됩니다. 빌드가 컨테이너가 아닌 아티팩트를 생성하면
artifacts
필드를 사용하여 Cloud Storage에 저장할 수 있습니다. 이 작업을 수행하는 방법에 대한 지침은 이미지 및 아티팩트 저장을 참조하세요.
JSON
빌드 구성 파일을 만듭니다. 프로젝트 루트 디렉터리에
cloudbuild.json
이라는 파일을 만듭니다. 이는 Cloud Build 구성 파일입니다.단계 필드를 추가합니다. 빌드 구성 파일의
steps
섹션에는 Cloud Build에서 수행할 빌드 단계가 포함되어 있습니다.{ "steps": }
첫 번째 단계를 추가합니다.
steps:
아래에name
필드를 추가하고 작업을 실행할 컨테이너 이미지를 가리키도록 지정합니다. Cloud Build와 개발자 커뮤니티는 일반적인 도구와 언어가 설치된 몇 가지 컨테이너 이미지를 제공합니다. 빌드 단계에서 이러한 이미지(Cloud 빌더라고도 함) 또는 공개적으로 사용 가능한 이미지를 사용할 수 있습니다. 빌드 단계에서 사용할 수 있는 다양한 유형의 컨테이너 이미지에 대한 자세한 내용은 Cloud 빌더를 참조하세요.다음 스니펫은 Docker를 실행하는 컨테이너 이미지인
docker
빌더gcr.io/cloud-builders/docker
가 있는 빌드 단계를 보여줍니다.{ "steps": [ { "name": "gcr.io/cloud-builders/docker" } ] }
단계 인수를 추가합니다. 단계의
args
필드는 인수 목록을 가져오고name
필드로 참조되는 빌더에 전달합니다.name
필드의 빌더에 진입점이 있으면 목록의args
가 해당 진입점에 액세스하는 데 사용됩니다.name
필드의 빌더에 진입점이 없으면args
의 첫 번째 요소가 진입점으로 사용됩니다.아래 예시를 참조하세요.
build
는 Docker 클라우드 빌더의 진입점입니다.-t
는 Docker 태그입니다.us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
는 Artifact Registry에 빌드할 이미지의 이름입니다. 빌드 단계는 프로젝트 ID의 기본 대체를 사용하므로 이 값은 빌드 시간에 자동으로 대체됩니다..
는 소스 코드가 현재 작업 디렉터리에 있음을 나타내는 소스 코드 위치입니다.{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage", "." ] } ] }
단계를 더 추가합니다. 추가
name
필드를 포함하고 Cloud 빌더를 가리키도록 지정하여 빌드 구성 파일에 원하는 수의 빌드 단계를 추가할 수 있습니다.다음 스니펫에는 빌드 구성 파일에 대한 두 가지 추가 단계가 포함되어 있습니다.
docker push
명령어를 호출하고 이전 단계의 이미지 빌드를 Artifact Registry에 푸시하는 docker 빌드 단계gcloud
진입점이 지정된 Google Cloud SDK 명령어의 빌드 단계: Artifact Registry의 컨테이너 이미지에서 Compute Engine 인스턴스를 만듭니다. Compute Engine 영역과 리전을 지정하기 위해env
필드가 포함됩니다.{ "name": "gcr.io/cloud-builders/docker", "args": [ "push", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ] }, { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
추가 빌드 구성 필드를 포함합니다.
machineType
,tags
또는timeout
과 같은 필드를 포함하여 빌드를 추가로 구성할 수 있습니다. 빌드 구성 파일에 포함할 수 있는 필드의 전체 목록은 빌드 구성 개요를 참조하세요.다음 예시에서
gcr.io/google.com/cloudsdktool/cloud-sdk
빌드 단계는 240초 후에 타임아웃됩니다.{ "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "timeout": "240s", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
기본 빌드 구성 파일의 전체 예시는 다음 스니펫을 참조하세요.
이 예시에서는 컨테이너 이미지가 Artifact Registry에 저장됩니다. 빌드가 컨테이너가 아닌 아티팩트를 생성하면
artifacts
필드를 사용하여 Cloud Storage에 저장할 수 있습니다. 이 작업을 수행하는 방법에 대한 지침은 이미지 및 아티팩트 저장을 참조하세요.
다음 단계
- 빌드 구성 파일에서 트리거를 사용하여 수동으로 빌드를 실행하는 방법 알아보기
- 종속 항목을 포함하고 아티팩트를 빌드, 테스트, 배포하도록 빌드 구성을 작성하는 방법 알아보기