이 페이지에서는 Google Cloud 콘솔, gcloud
명령줄 도구, Cloud Build API를 사용하여 Cloud Build 빌드 정보를 보는 방법을 설명합니다.
시작하기 전에
이 가이드의 명령줄 예시를 사용하려면 gcloud
명령줄 도구를 설치해야 합니다.
빌드 결과 보기
빌드 로그를 보려면 프로젝트 주 구성원에게 Cloud Build IAM 권한 외에도 다음 IAM 역할 중 하나가 필요합니다.
빌드 로그가 기본 Cloud Storage 버킷에 있으면 프로젝트 > 뷰어 역할을 부여합니다.
빌드 로그가 사용자가 지정한 Cloud Storage 버킷에 있으면 스토리지 객체 뷰어 역할을 부여합니다.
Cloud Build나 GitHub 또는 GitHub Enterprise에서 트리거를 만든 후 빌드 로그를 보는 데 필요한 권한에 대한 자세한 내용은 빌드 로그 보기를 참조하세요.
콘솔
Google Cloud Console에서 빌드 기록 메뉴는 빌드 상태(성공 또는 실패), 소스, 결과, 생성 시간, 이미지 등에 대한 정보를 보여줄 수 있습니다.
빌드 기록 메뉴를 보려면 Google Cloud Console에서 빌드 기록 페이지를 엽니다.
최근의 빌드 목록을 보여주는 빌드 기록 페이지가 표시됩니다.
리전별로 빌드를 필터링하려면 페이지 상단의 리전 드롭다운 메뉴를 사용하여 필터링할 리전을 선택합니다.
또한 페이지 상단의 빌드 필터링 텍스트 상자를 사용하거나 수동으로 쿼리를 입력하여 빌드를 필터링할 수도 있습니다.
트리거 설명, 아티팩트 등의 추가 열을 보려면 열 선택기
을 사용합니다.특정 빌드에 대한 세부정보를 보려면 빌드 기록으로 이동하여 특정 빌드를 클릭합니다. 빌드 세부정보 페이지에 빌드의 빌드 요약이 표시됩니다. 빌드 요약에는 다음 내용이 포함됩니다.
- 빌드 로그는 빌드의 로그입니다.
- 실행 세부정보는 환경 변수와 대체를 포함한 빌드의 세부정보입니다.
- 빌드 아티팩트는 컨테이너 이미지, 빌드 로그, 바이너리 등 빌드의 아티팩트입니다.
왼쪽의 단계 표에서 단계를 선택하면 빌드 단계별로 빌드 로그나 실행 세부정보를 볼 수 있습니다.
gcloud
gcloud builds list
명령어는 모든 빌드를 표시합니다.
빌드를 보려면 다음 명령어를 실행합니다.
gcloud builds list
다음과 비슷한 출력이 표시됩니다.
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
3a2055bc-ccbd-4101-9434-d376b88b8940 2018-02-16T18:33:26+00:00 23S gs://gcb-docs-project_cloudbuild/source/1518806004.25-db1e250a7b7f496eb8242bfee5ac308e.tgz us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more) SUCCESS
900704ca-7a0c-4569-ac08-884593c19aac 2018-02-16T18:32:32+00:00 gs://gcb-docs-project_cloudbuild/source/1518805951.23-03dd53d16f684c568fa2bb7ff7ebda06.tgz - FAILURE
021f9ede-ddaa-4cfb-8988-60142b015ebd 2018-02-14T15:48:44+00:00 10S gs://gcb-docs-project_cloudbuild/source/1518623322.56-9cd088ffc1e04f5aa6040728772d0c2a.tgz - SUCCESS
8126d538-3c43-4304-a14c-33aceec8cb97 2018-02-14T15:46:13+00:00 10S gs://gcb-docs-project_cloudbuild/source/1518623172.09-327c02585a4e44e782ac97dd80d5a5d5.tgz us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more) SUCCESS
특정 빌드에 대한 세부정보를 보려면 다음 명령어를 실행하세요.
gcloud builds describe [BUILD_ID]
여기서 [BUILD_ID]는 세부정보를 가져올 빌드의 ID입니다.
다음과 비슷한 출력이 표시됩니다.
createTime: '2018-02-22T14:49:54.066666971Z'
finishTime: '2018-02-22T14:50:05.463758Z'
id: bcdb9c48-d92c-4489-a3cb-08d0f0795a0b
images:
- us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
logUrl: https://console.cloud.google.com/cloud-build/builds/bcdb9c48-d92c-4489-a3cb-08d0f0795a0b?project=gcb-docs-project
logsBucket: gs://404889597380.cloudbuild-logs.googleusercontent.com
projectId: gcb-docs-project
results:
buildStepImages:
- sha256:a4363bc75a406c4f8c569b12acdd86ebcf18b6004b4f163e8e6293171462a79d
images:
- digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
pushTiming:
endTime: '2018-02-22T14:50:04.731919081Z'
startTime: '2018-02-22T14:50:00.874058710Z'
- digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image:latest
pushTiming:
endTime: '2018-02-22T14:50:04.731919081Z'
startTime: '2018-02-22T14:50:00.874058710Z'
source:
storageSource:
bucket: gcb-docs-project_cloudbuild
generation: '1519310993665963'
object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
sourceProvenance:
fileHashes:
gs://gcb-docs-project_cloudbuild/source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz#1519310993665963:
fileHash:
- value: -aRYrWp2mtfKhHSyWn6KNQ==
resolvedStorageSource:
bucket: gcb-docs-project_cloudbuild
generation: '1519310993665963'
object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
startTime: '2018-02-22T14:49:54.966308841Z'
status: SUCCESS
steps:
- args:
- build
- --no-cache
- -t
- us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
- .
name: gcr.io/cloud-builders/docker
status: SUCCESS
timing:
endTime: '2018-02-22T14:50:00.813257422Z'
startTime: '2018-02-22T14:50:00.102600442Z'
timeout: 600s
timing:
BUILD:
endTime: '2018-02-22T14:50:00.873604173Z'
startTime: '2018-02-22T14:50:00.102589403Z'
FETCHSOURCE:
endTime: '2018-02-22T14:50:00.087286880Z'
startTime: '2018-02-22T14:49:56.962717504Z'
PUSH:
endTime: '2018-02-22T14:50:04.731958202Z'
startTime: '2018-02-22T14:50:00.874057159Z'
단계 상태 및 빌드 상태
빌드가 완료되면 Cloud Build는 빌드의 전반적인 status
와 각 개별 빌드 단계의 status
를 제공합니다.
다음 표에는 빌드 또는 단계가 성공, 타임아웃 또는 실패할 때의 상태가 요약되어 있습니다.
이벤트 | 빌드 상태 | 단계 상태 |
---|---|---|
빌드 성공 | SUCCESS
| 모든 단계가 SUCCESS 로 표시됩니다. |
실패한 단계가 허용되어 빌드 성공 | SUCCESS
|
|
빌드 실패 | FAILURE
|
|
사용자가 빌드를 취소함 | CANCELLED
|
|
빌드 타임아웃 | TIMEOUT |
|
단계 타임아웃 | FAILED |
|
단계별 및 빌드 상태를 보려면 gcloud builds describe
명령어를 실행하세요.
gcloud builds describe [BUILD_ID]
여기서 [BUILD_ID]는 빌드의 ID입니다.
다음 스니펫은 타임아웃된 단계가 있는 빌드의 단계별 상태를 보여줍니다.
status: FAILURE
steps:
- args:
- sleep
- '60'
id: long sleep
name: alpine
status: CANCELLED
timing:
endTime: '2018-02-26T14:09:18.531368493Z'
startTime: '2018-02-26T14:09:11.023235026Z'
waitFor:
- '-'
- args:
- sleep
- '3'
id: shorty
name: alpine
status: SUCCESS
timeout: 60s
timing:
endTime: '2018-02-26T14:09:15.497724138Z'
startTime: '2018-02-26T14:09:11.023676903Z'
waitFor:
- '-'
- args:
- sleep
- '60'
name: alpine
status: TIMEOUT
timeout: 3s
timing:
endTime: '2018-02-26T14:09:18.527488475Z'
startTime: '2018-02-26T14:09:15.497736775Z'
waitFor:
- shorty
- args:
- 'false'
name: alpine
status: QUEUED
waitFor:
- long sleep
timeout: 60s
쿼리를 사용하여 빌드 결과 필터링
특정 기준에 맞는 빌드에 대한 정보를 찾으려면 Google Cloud 콘솔의 빌드 기록 페이지에 있는 빌드 필터링 필드에 쿼리 문자열을 입력합니다. 예를 들어 실패한 빌드(상태 필드 값이 FAILURE
), 특정 시간 이후에 생성된 빌드, 태그가 지정된 빌드, 기타 조건을 쿼리할 수 있습니다.
쿼리에 지원되는 필드
다음 필드의 값을 기반으로 빌드를 쿼리할 수 있습니다.
status
build_id
trigger_id
source.storage_source.bucket
source.storage_source.object
source.repo_source.repo_name
source.repo_source.branch_name
source.repo_source.tag_name
source.repo_source.commit_sha
source_provenance.resolved_repo_source.commit_sha
results.images.name
results.images.digest
options.requested_verify_option
tags
images
create_time
start_time
finish_time
점 표기법(.
)으로 표시된 필드는 하위 필드입니다.
쿼리 문자열 구성
쿼리 문자열은 일반적인 형식을 사용합니다.
field="value"
하위 필드를 지정하려면 점 표기법을 사용하세요(예: results.images.name
). 쿼리는 숫자 값이 있는 필드(예: create_time
)에 대해 =
및 !=
비교 연산자와 >
, >=
, <
, <=
를 지원합니다.
부울 AND
및 OR
표현식을 사용하여 복합 쿼리를 만들 수 있습니다.
일반적인 쿼리 예시
모든 성공적인 빌드를 쿼리하려면 다음을 사용하세요.
status="SUCCESS"
아직 완료되지 않은 모든 빌드를 쿼리하려면 다음을 사용하세요.
status="QUEUED" OR status="WORKING"
특정 결과 이미지 이름이 있는 빌드를 쿼리하려면 다음을 사용하세요.
(status="SUCCESS" OR status="FAILURE") AND \
results.images.name="us-east1-docker.pkg.dev/my-project/my-image"
"prod"
태그가 있는 모든 빌드를 쿼리하려면 다음을 사용하세요.
tags="prod"
확인된 것으로 표시된 빌드를 쿼리하려면 다음을 사용하세요.
options.requested_verify_option="VERIFIED"
Cloud Storage(Cloud Source Repository와 반대)의 소스에서 비롯된 빌드를 쿼리하려면 다음을 사용하세요.
source.storage_source.bucket!=""
특정 결과 다이제스트가 있는 빌드를 쿼리하려면 다음을 사용하세요.
results.images.digest="sha256:6c7147fe4c813845ac2a9aa6f937bb272b68784f647c4f64c7325723c7245c88"
특정 시간 이후에 시작되어 특정 시간(UTC 시간대) 이전에 완료된 빌드를 쿼리하려면 다음을 사용하세요.
create_time>"2016-10-12T18:43:49+00:00" AND finish_time<"2016-10-13T18:43:49+00:00"
태그를 사용하여 빌드 결과 필터링
구성 파일에 태그를 사용하여 빌드를 그룹별로 정리하고 빌드를 필터링할 수 있습니다. "prod"
또는 "test"
와 같은 태그에 문자열을 지정할 수 있습니다.
태그에는 다음과 같은 제한사항이 있습니다.
- 각 태그의 글자 수 제한은 128자입니다.
- 빌드당 최대 64개의 태그를 정의할 수 있습니다.
- 태그에는 문자열의 임의 위치에 문자, 숫자, 밑줄이 포함될 수 있습니다.
- 태그는 문자열의 첫 번째 위치를 제외하고 모든 위치에 마침표와 하이픈이 포함될 수 있습니다.
빌드에 태그를 추가하려면 다음 안내를 따르세요.
빌드 구성 파일에
tags
필드를 추가합니다.steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img', '.' ] images: - 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img' tags: - 'test1' - 'test2'
클러스터에서 태그가 지정된 빌드를 보려면
gcloud builds list
에--filter
옵션을 사용합니다. 단일 태그 또는 여러 태그를 지정하여 빌드를 필터링할 수 있습니다.단일 태그로 빌드를 필터링하려면
tags
필드에 문자열로 태그를 지정합니다. 다음 명령어는'test1'
태그가 지정된 모든 빌드를 나열합니다.gcloud builds list --filter "tags='test1'"
여러 태그를 사용하여 빌드를 필터링하려면 'AND', 'OR' 또는 'NOT'을 사용하여 태그를 나열합니다. 다음 명령어는
'test1'
또는'test2'
태그가 지정된 빌드와'test3'
태그가 지정된 빌드를 모두 나열합니다.gcloud builds list --filter "tags=('test1' OR 'test2') AND 'test3'"
다음 명령어를 실행하면 다음과 비슷한 출력이 표시됩니다.
ID CREATE_TIME DURATION SOURCE IMAGES STATUS d33a9895-... ... 1M45S gs://... us-east1-docker.pkg.dev/... SUCCESS
다음 단계
- 빌드 트리거의 빌드 결과를 보는 방법 알아보기
- 빌드 보안 통계를 보는 방법 알아보기
- 빌드 오류 문제 해결 방법 알아보기