빌드 로그 저장 및 보기

빌드를 실행하면 Cloud Build가 빌드 로그를 수집하고 저장합니다. 이 페이지에서는 빌드 로그를 저장, 확인, 삭제하는 방법을 설명합니다.

빌드 로그를 전송할 위치 선택

Cloud Storage의 버킷, Cloud Logging의 버킷 또는 둘 다에 빌드 로그를 전송하도록 Cloud Build를 구성할 수 있습니다.

  • 저장된 빌드 로그의 보관 기간을 제어하려면 Cloud Logging으로 전송하세요. Cloud Logging은 버킷에서 특정 빌드 로그를 검색할 수 있는 더 많은 옵션도 제공합니다.

  • 빌드 로그가 생성될 때와 Logging이 빌드 로그를 수신할 때 사이에 지연이 발생하는 경우가 있습니다. 빌드 로그를 Cloud Storage의 버킷으로 전송하면 지연 시간을 줄일 수 있습니다.

Cloud Storage와 Logging 모두 Google에서 만든 기본 버킷 또는 사용자가 만든 맞춤 버킷에 로그를 저장할 수 있습니다. 기본 버킷을 사용하면 버킷에 저장된 로그를 볼 수 있지만 버킷에 관한 사항은 변경할 수 없습니다. 빌드 로그 저장에 사용하는 버킷에 대한 전체 제어 권한이 필요한 경우 로그를 사용자가 만든 버킷으로 전송하세요.

기본 버킷에 빌드 로그 저장

Cloud Logging과 Cloud Storage 모두 빌드 로그를 저장할 수 있는 기본 버킷이 있습니다. 이러한 버킷은 Google에서 생성하고 소유하며 여러 리전의 로그를 수신할 수 있습니다. 이러한 버킷 중 하나에 빌드 로그를 전송하려면 빌드 구성 파일의 LoggingMode을 다음 값 중 하나로 구성하세요.

  • GCS_ONLY: 로그가 기본 Cloud Storage 버킷에 저장됩니다.

  • CLOUD_LOGGING_ONLY: 로그가 기본 로깅 버킷에 저장됩니다.

  • LEGACY: 로그가 기본 버킷에 모두 저장됩니다.

기본 로깅 버킷에는 저장된 로그에 대한 30일 보관 정책이 있습니다. Logging에 저장된 빌드 로그에 대해 맞춤 보관 정책을 설정하려면 빌드 로그를 맞춤 버킷에 저장하세요.

기본 Cloud Storage 버킷에 보관 정책이 없습니다.

사용자가 소유하고 리전별 Cloud Storage 버킷에 빌드 로그 저장

빌드 로그를 기본 Cloud Storage 버킷으로 전송하면 Cloud Build가 Google에서 지정한 리전(빌드를 실행하는 위치와 다를 수 있음)에 로그를 저장합니다. 하지만 빌드를 실행하는 것과 동일한 리전에 있는 사용자 소유 Cloud Storage 버킷으로 빌드 로그를 전송하도록 빌드를 구성할 수도 있습니다. 이렇게 구성하면 빌드 로그 데이터 위치를 보다 세부적으로 제어할 수 있으므로 데이터 상주 요구사항을 준수하는 데 도움이 됩니다.

IAM 권한 부여:

Cloud Storage 버킷과 Cloud Build가 동일한 Google Cloud 프로젝트에 있고 Cloud Build 기존 서비스 계정을 사용하는 경우 해당 서비스 계정에는 기본적으로 필요한 IAM 권한이 있습니다. 추가 권한을 부여할 필요가 없습니다. 그렇지 않은 경우에는 다음 단계를 따라야 합니다.

사용자가 소유하고 리전이 지정된 버킷에 빌드 로그를 저장하는 데 필요한 권한을 얻으려면 관리자에게 빌드에 사용되는 서비스 계정에 대한 스토리지 관리자 (roles/storage.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

지역별 Cloud Storage 버킷 구성:

  1. 빌드 구성 파일에 defaultLogsBucketBehavior 옵션을 추가하고 값을 REGIONAL_USER_OWNED_BUCKET으로 설정합니다.

    YAML

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
    options:
      defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
            "."
          ]
        }
        ],
        "options": {
          "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
        }
    }
    
  2. 빌드 구성 파일을 사용하여 명령줄, API 또는 트리거를 사용해 빌드를 시작합니다.

    빌드를 실행하면 Cloud Build가 빌드를 실행하는 리전에 새 버킷을 만들고 이 버킷에 빌드 로그를 저장합니다. REGIONAL_USER_OWNED_BUCKET가 활성 상태인 한 동일한 프로젝트 및 리전의 후속 빌드는 기존 버킷을 사용합니다. 이 버킷은 사용자 소유이므로 사용자가 만든 버킷인 것처럼 구성할 수 있습니다.

REGIONAL_USER_OWNED_BUCKET 옵션을 설정한 다음 여러 리전에 빌드를 만들면 Cloud Build가 빌드 로그용 버킷을 여러 개 만듭니다.

리전별 기본 Cloud Storage 버킷에는 보관 정책이 없습니다. 하지만 객체 수명 주기 규칙을 구성하여 버킷에서 빌드 로그 삭제를 자동화할 수 있습니다.

사용자가 만든 버킷에 빌드 로그 저장

사용자가 만든 버킷을 사용하면 로그 버킷을 관리하고 구성하는 데 더 많은 제어 기능을 사용할 수 있습니다.

사용자가 만든 Cloud Logging 버킷에 빌드 로그 저장

사용자가 만든 로깅 버킷을 사용하면 저장된 빌드 로그의 보관 기간을 조정할 수 있습니다. Logging의 사용자가 만든 버킷에 빌드 로그를 저장하려면 다음 단계를 따르세요.

IAM 권한 부여:

사용자가 만든 Cloud Logging 버킷에 빌드 로그를 저장하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 로그 구성 작성자 (roles/logging.configWriter) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Logging 버킷 구성:

  1. 버킷을 만들고 보관 기간 필드의 값을 설정합니다.

  2. 빌드 로그를 새 버킷으로 라우팅하는 싱크를 만듭니다.

    1. 싱크의 빌드 포함 필터에 다음을 입력합니다.

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

      PROJECT-ID를 Google Cloud 프로젝트 ID로 바꿉니다.

    2. (선택사항) 로그가 기본 로깅 버킷으로 이동하지 않도록 하려면 로그 버킷에 로그 항목 저장 중지의 예를 따르세요.

사용자가 만든 Cloud Storage 버킷에 빌드 로그 저장

사용자가 만든 Cloud Storage 버킷에 빌드 로그를 저장하려면 다음을 실행하세요.

IAM 권한 부여:

Cloud Storage 버킷과 Cloud Build가 동일한 Google Cloud 프로젝트에 있고 Cloud Build 기존 서비스 계정을 사용하는 경우 Cloud Build 기존 서비스 계정에 기본적으로 필요한 IAM 권한이 있습니다. 추가 권한을 부여할 필요가 없습니다. 그렇지 않은 경우에는 다음 단계를 따라야 합니다.

사용자가 만든 Cloud Storage 버킷에 빌드 로그를 저장하는 데 필요한 권한을 얻으려면 관리자에게 빌드에 사용되는 서비스 계정에 대한 스토리지 관리자 (roles/storage.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Cloud Storage 버킷 구성:

  1. Google Cloud 프로젝트에서 빌드 로그를 저장하도록 보관 정책을 설정하지 않은 상태에서 Cloud Storage 버킷을 생성합니다.

  2. 빌드 구성 파일에서 빌드 로그를 저장하기 위해 만든 Cloud Storage 버킷을 가리키는 logsBucket 필드를 추가합니다. 다음 예시의 빌드 구성 파일에는 컨테이너 이미지를 빌드하고 빌드 로그를 이름이 mylogsbucket인 버킷에 저장하는 지침이 포함되어 있습니다.

    YAML

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ]
        logsBucket: 'gs://mylogsbucket'
        options:
          logging: GCS_ONLY
    

    JSON

        {
          "steps": [
           {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
               "build",
               "-t",
               "us-east1-docker.pkg.dev/myproject/myimage",
               "."
             ]
           }
           ],
           "logsBucket": "gs://mylogsbucket",
           "options": {
             "logging": "GCS_ONLY"
           }
        }
    
  3. 빌드 구성 파일을 사용하여 명령줄, API 또는 트리거를 사용해 빌드를 시작합니다.

빌드가 완료되면 Cloud Build가 빌드 구성 파일에 지정된 Cloud Storage 버킷에 로그를 저장합니다.

로그 설정 간의 우선순위

logsBucket에서 사용자가 만든 Cloud Storage 버킷을 정의하면 Cloud Build는 기본 Cloud Storage 버킷 대신 사용자가 만든 버킷으로 빌드 로그를 전송합니다.

기존 빌드 구성 파일에 defaultLogsBucketBehavior 옵션을 추가하고 이전에 logging 또는 logsBucket 옵션을 구성한 경우 설정 간에 충돌을 방지하기 위해 해당 설정을 삭제하는 것이 좋습니다. 특히 다음을 구성한 경우에는 defaultLogsBucketBehavior가 작동하지 않습니다.

  • logging: CLOUD_LOGGING_ONLY: 빌드 로그를 Cloud Logging에 저장합니다.
  • logging: NONE: 로깅을 중지합니다.

빌드 구성 파일에 로깅 옵션을 설정하지 않고 빌드를 실행하면 Cloud Build가 logging: LEGACY를 설정하고 기본 Cloud Storage 버킷에 빌드 로그를 저장합니다. defaultLogsBucketBehaviorREGIONAL_USER_OWNED_BUCKET로 설정하면 logging: LEGACY가 재정의됩니다.

빌드 로그 보기

빌드 로그를 보려면 다음 단계를 따르세요.

IAM 권한 부여:

Cloud Storage 또는 Logging에서 빌드 로그를 보는 데 필요한 권한을 얻으려면 관리자에게 빌드에 사용되는 서비스 계정에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 사용자가 만들거나 사용자가 소유한 Cloud Storage 버킷에서 빌드 로그를 확인합니다.
    • 스토리지 객체 뷰어 (roles/storage.objectViewer): 빌드 로그를 보려는 주 구성원
    • 로그 뷰 접근자 (roles/logging.viewAccessor) - 빌드 로그를 보려는 주 구성원
  • 기본 Cloud Storage 버킷에서 빌드 로그 보기: 뷰어 (roles/viewer) - 빌드가 구성된 프로젝트
  • Logging에서 빌드 로그 보기: 로그 뷰어 (roles/logging.viewer) - 빌드 로그를 보려는 주 구성원

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Google Cloud에서 빌드 로그 보기:

콘솔

  1. Google Cloud 콘솔에서 Cloud Build 페이지를 엽니다.

    Cloud Build 페이지 열기

  2. 프로젝트를 선택하고 열기를 클릭합니다.

  3. 리전 드롭다운 메뉴에서 빌드에 대해 리전을 선택합니다.

  4. 빌드 기록 페이지에서 특정 빌드를 선택합니다.

  5. 빌드 세부정보 페이지의 단계 아래에서 빌드 요약을 클릭하여 전체 빌드에 대한 빌드 로그를 보거나 빌드 단계를 선택하여 해당 단계에 대한 빌드 로그를 볼 수 있습니다.

  6. 로그가 Logging에 저장되어 있으면 빌드 로그 패널에서 아이콘을 클릭하여 로그 탐색기에서 로그를 확인합니다.

gcloud

gcloud builds log 명령어를 실행합니다. 여기서 build-id는 빌드 로그를 가져오려는 빌드의 ID입니다. 빌드 ID는 gcloud builds submit을 실행할 때 빌드 제출 프로세스의 마지막에 또는 gcloud builds list를 실행할 때 ID 열에 표시됩니다.

gcloud builds log build-id

GitHub 및 GitHub Enterprise에서 빌드 로그 보기:

gcloud CLI 또는 Cloud Build API를 사용하여 GitHub 또는 GitHub Enterprise 트리거를 만들고 --include-logs-with-status를 옵션으로 지정하면 GitHub 및 GitHub Enterprise에서 빌드 로그를 볼 수 있습니다.

GitHub 및 GitHub Enterprise에서 빌드 로그를 보려면 다음 단계를 따르세요.

  1. 트리거와 연결된 저장소로 이동합니다.

  2. 커밋 목록으로 이동합니다.

  3. 빌드 로그를 보려는 커밋의 행을 찾습니다.

  4. 커밋 행에서 결과 아이콘을 클릭합니다.

    커밋과 연결된 검사 목록이 표시됩니다.

  5. 빌드 로그를 보려는 행의 세부정보를 클릭합니다.

    커밋과 연결된 요약 페이지가 표시됩니다. --include-logs-with-status 플래그를 사용하여 트리거를 만든 경우 페이지의 세부정보 섹션 아래에 빌드 로그가 표시됩니다.

빌드 로그 및 버킷 삭제

Cloud Storage에서 빌드 로그와 버킷을 삭제하는 데 필요한 권한을 얻으려면 관리자에게 빌드에 사용되는 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 사용자가 만들거나 사용자가 소유한 Cloud Storage 버킷의 빌드 로그를 삭제합니다. 스토리지 관리자 (roles/storage.admin): 빌드 로그를 삭제하는 사용자 또는 서비스 계정
  • 사용자가 만들거나 소유한 Cloud Storage 버킷을 삭제합니다. 스토리지 관리자 (roles/storage.admin) - 버킷을 삭제하는 사용자 또는 서비스 계정
  • 사용자가 만든 로깅 버킷 삭제: 로그 구성 작성자 (roles/logging.configWriter) - 프로젝트

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

사용자가 만들거나 사용자가 소유한 Cloud Storage 버킷에서 빌드 로그를 삭제하려면 Cloud Storage 문서의 객체 삭제 안내를 따르세요.

사용자가 만들거나 사용자가 소유한 Cloud Storage 버킷을 삭제하려면 Cloud Storage 문서의 버킷 삭제 안내를 따르세요.

사용자가 만든 로깅 버킷을 삭제하려면 로깅 문서의 버킷 삭제 안내를 따르세요.

다음 단계