빌드 로그 저장 및 관리

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

빌드 로그 저장 위치 선택

Cloud Build 구성 파일logging 필드를 포함하여 Cloud Build에서 Cloud Logging이나 Cloud Storage에 빌드 로그를 저장하도록 구성할 수 있습니다. 빌드 구성 파일에 logging 필드를 지정하지 않으면 Cloud Build에서 Logging과 Cloud Storage 모두에 빌드 로그를 저장합니다.

다음 단계에서는 Logging에만 빌드 로그를 저장합니다.

  1. 빌드 구성 파일에서 logging 값을 CLOUD_LOGGING_ONLY로 설정합니다.

    YAML

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

    JSON

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

Google에서 만든 기본 버킷에 빌드 로그 저장

기본적으로 Cloud Build는 Google에서 만든 Cloud Storage 버킷에 빌드 로그를 저장합니다. Google에서 만든 Cloud Storage 버킷에 저장된 빌드 로그를 볼 수 있지만 변경할 수는 없습니다. 로그 버킷에 대한 전체 제어 권한이 필요하면 로그를 사용자가 만든 Cloud Storage 버킷에 저장합니다.

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

IAM 권한:

고유 Cloud Storage 버킷에 빌드 로그를 저장하려면 먼저 Cloud Build 서비스 계정 또는 사용자 지정 서비스 계정에 대해 필요한 IAM 권한을 부여해야 합니다.

  • Cloud Storage 버킷과 Cloud Build가 같은 Google Cloud 프로젝트에 있고 Cloud Build 서비스 계정을 사용하고 있으면 Cloud Build 서비스 계정에 기본적으로 필요한 IAM 권한이 있습니다. 추가 권한은 부여할 필요가 없습니다.

  • Cloud Storage 버킷과 Cloud Build가 동일한 Google Cloud 프로젝트에 있고 사용자 지정 서비스 계정을 사용하는 경우 스토리지 관리자 역할을 서비스 계정에 부여합니다. 서비스 계정에 역할을 부여하는 방법은 프로젝트에 대한 역할 부여를 참조하세요.

  • Cloud Storage 버킷과 Cloud Build가 다른 Google Cloud 프로젝트에 있는 경우 Cloud Build 서비스 계정스토리지 관리자 역할을 부여합니다.

    1. IAM 페이지 열기:

      IAM 페이지 열기

    2. Cloud Build를 사용하여 빌드를 실행하는 프로젝트를 선택합니다.

    3. 권한 테이블에서 @cloudbuild.gserviceaccount.com으로 끝나는 이메일 주소를 찾아서 기록해 둡니다. 이것이 사용자의 Cloud Build 서비스 계정입니다.

    4. Cloud Storage 버킷이 있는 프로젝트에서 IAM 페이지를 엽니다.

      IAM 페이지 열기

    5. 액세스 권한 부여를 클릭합니다.

    6. Cloud Build 서비스 계정의 이메일 주소를 입력합니다.

    7. Cloud Storage > 스토리지 관리자를 선택합니다.

    8. 저장을 클릭합니다.

빌드 로그 저장을 위해 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 버킷에 로그를 저장합니다.

사용자가 소유하고 리전화된 버킷에 빌드 로그 저장

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

자체 프로젝트에 로그를 저장하는 데 비용이 발생합니다. 가격 책정의 자세한 내용은 Cloud Storage 가격 책정을 참조하세요.

리전화된 사용자 소유 로그를 사용하도록 Cloud Build 구성

  1. 필요한 IAM 권한을 부여합니다.

    • Cloud Build 서비스 계정을 사용하는 경우 Cloud Build 서비스 계정에 기본적으로 필요한 IAM 권한이 있습니다. 추가 권한은 부여할 필요가 없습니다.

    • 사용자 지정 서비스 계정을 사용하는 경우에는 스토리지 관리자 역할을 서비스 계정에 부여합니다. 서비스 계정에 역할을 부여하는 방법은 프로젝트에 대한 역할 부여를 참조하세요.

  2. 빌드 구성에 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"
        }
    }
    
  3. 빌드 구성 파일을 사용하여 명령줄, API 또는 트리거를 사용해 빌드를 시작합니다.

    빌드를 실행하면 Cloud Build가 빌드를 실행하는 리전에 새 로그 버킷을 만들고 이 버킷에 빌드 로그를 저장합니다. 동일한 프로젝트 및 리전의 후속 빌드에는 기본적으로 기존 버킷이 사용됩니다.

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

자체 프로젝트에 저장된 리전화된 빌드 로그에는 보관 정책이 없습니다. 이 설정은 변경할 수 없습니다.

로그 설정 간의 우선순위

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

특히 다음과 같이 구성한 경우 defaultLogsBucketBehavior가 작동하지 않습니다.

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

빌드 구성에 로깅 옵션을 설정하지 않고 빌드를 실행하면 Cloud Build가 logging: LEGACY를 설정하고 Google에서 만든 기본 Cloud Storage 버킷에 로그를 저장합니다. defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET을 추가하면 이 옵션이 logging: LEGACY를 재정의합니다.

빌드 로그 보기

IAM 권한:

  • 빌드 로그가 Logging에 있으면 빌드 로그를 보려는 주 구성원에 대해 빌드가 구성된 프로젝트에서 로그 뷰어 역할을 부여합니다.

    1. IAM 페이지 열기:

      IAM 페이지 열기

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

    3. 권한 테이블에서 주 구성원의 이메일 ID를 찾고 연필 아이콘을 클릭합니다.

    4. Logging > 로그 뷰어 역할을 선택합니다.

    5. 저장을 클릭합니다.

  • 빌드 로그가 Google에서 만든 기본 Cloud Storage 버킷에 있으면 빌드가 구성된 프로젝트에 대한 프로젝트 뷰어 역할을 빌드 로그를 보려는 주 구성원에게 부여합니다.

    1. IAM 페이지 열기:

      IAM 페이지 열기

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

    3. 권한 테이블에서 주 구성원의 이메일 ID를 찾고 연필 아이콘을 클릭합니다.

    4. 프로젝트 > 뷰어 역할을 선택합니다.

    5. 저장을 클릭합니다.

    빌드 로그가 사용자가 만들거나 사용자가 소유한 Cloud Storage 버킷에 있으면 빌드 로그를 보려는 주 구성원에게 스토리지 객체 뷰어 역할을 부여합니다.

    1. IAM 페이지 열기:

      IAM 페이지 열기

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

    3. 권한 테이블에서 주 구성원의 이메일 ID를 찾고 연필 아이콘을 클릭합니다.

    4. Cloud Storage > 스토리지 객체 뷰어 역할을 선택합니다.

    5. 저장을 클릭합니다.

Cloud Build에서 빌드 로그를 보려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 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에서 빌드 로그를 보려면 다음 안내를 따르세요.

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

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

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

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

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

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

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

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

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

빌드 로그 삭제

Google에서 만든 로그 버킷의 빌드 로그는 삭제할 수 없습니다.

사용자가 만든 로그 버킷의 빌드 로그를 삭제하려면 다음 안내를 따르세요.

  1. 스토리지 객체 관리자 역할을 로그를 삭제할 사용자 또는 서비스 계정에 부여합니다.

  2. Cloud Storage 객체를 삭제하려면 객체 삭제의 안내에 따라 빌드 로그를 삭제합니다.

사용자가 만든 로그 버킷을 삭제하려면 다음 안내를 따르세요.

  1. 로그 버킷을 삭제하는 사용자 또는 서비스 계정에 스토리지 관리자 역할을 부여합니다.

  2. 버킷을 삭제하려면 버킷 삭제의 안내에 따라 로그 버킷을 삭제합니다.

다음 단계