빌드 단계 간 데이터 전달

이 페이지에서는 빌드 단계 간에 데이터를 전달하는 방법을 설명합니다. Cloud Build를 처음 사용한다면 빌드 빠른 시작빌드 구성 개요를 먼저 읽어보세요.

Cloud Build는 격리된 컨테이너 환경에서 일련의 빌드 단계에 따라 태스크를 실행합니다. 각 단계가 후에는 컨테이너가 제거됩니다. 이를 통해 각 단계마다 완전히 다른 도구 및 환경을 포함할 수 있으며 기본적으로 한 단계에서 생성된 모든 데이터는 다음 단계를 오염시킬 수 없습니다. 그러나 경우에 따라 빌드의 한 단계에서 상태를 계속 유지하여 후속 단계에서 사용해야 할 수도 있습니다

이러한 경우 Cloud Build는 모든 빌드 단계에 연결할 수 있는 읽기-쓰기 파일 경로인 볼륨을 제공합니다. 볼륨은 빌드 기간 동안 콘텐츠를 유지합니다. 자체 볼륨을 정의하거나 Cloud Build가 제공하는 기본 볼륨인 /workspace를 사용할 수 있습니다. 빌드를 실행하기 전에 Cloud Build는 소스 코드를 /workspace에 추출합니다. 사용자 정의 볼륨 및 /workspace에 기록된 모든 내용은 후속 단계에서 사용할 수 있습니다.

작업공간을 사용하여 데이터 전달

빌드 단계 사이에 데이터를 전달하려면 빌드 단계에서 생성된 애셋을 /workspace에 저장하세요. 그러면 이후에 생성된 빌드 단계에서 이 애셋을 사용할 수 있습니다.

다음 빌드 구성 파일 예시에서 첫 번째 빌드 단계는 /workspace/first.txt에 'First Value' 문자열을 저장하고 /workspace/second.txt에 값 2를 저장합니다. 두 번째 빌드 단계는 /workspace/first.txt/workspace/second.txt의 값을 읽고 출력합니다.

YAML

steps:
- id: "Store Values"
  name: ubuntu
  entrypoint: bash
  args:
    - -c
    - |
      # Save a value to persistent volume mount: "/workspace"
      echo "First Value" > /workspace/first.txt &&
      # Save another
      expr 1 + 1 > /workspace/second.txt
# In the next step, everything in the environment is discarded
# EXCEPT items in "/workspace"
- id: "Read Values"
  name: ubuntu
  entrypoint: bash
  args:
    - -c
    - |
      # Read from "/workspace"
      echo "First we saved " $(cat /workspace/first.txt) &&
      echo "Then we saved " $(cat /workspace/second.txt)

JSON

{
  "steps": [
  {
    "id": "Store Values",
    "name": "ubuntu",
    "entrypoint": "bash",
    "args": [
      "-c",
      "echo \"First Value\" > /workspace/first.txt &&\nexpr 1 + 1 > /workspace/second.txt\n"
    ]
    },
    {
      "id": "Read Values",
      "name": "ubuntu",
      "entrypoint": "bash",
      "args": [
        "-c",
        "echo \"First we saved \" $(cat /workspace/first.txt) &&\necho \"Then we saved \" $(cat /workspace/second.txt)\n"
      ]
    }
    ]
}

사용자 지정 볼륨을 사용하여 데이터 전달

Cloud Build에서 제공되는 기본 /workspace 볼륨을 사용하는 대신 빌드 단계 간에 데이터를 유지하기 위해 사용자가 자체 볼륨을 정의할 수 있습니다.

자체 볼륨을 정의하고 사용하려면 다음 단계별 안내를 따르세요.

  • 데이터를 저장할 빌드 단계에서 다음을 수행합니다.
    • volumes 블록을 추가하고 다음 필드를 설정합니다.
      • name: 이 필드의 값을 원하는 볼륨 이름으로 설정합니다.
      • path: 이 필드의 값을 데이터를 저장할 파일 경로로 설정합니다.
    • path에 지정된 파일 경로에 데이터를 저장하세요.
  • 데이터를 사용할 빌드 단계에서 다음을 수행합니다.
    • namepath 값을 사용하여 volumes 블록을 추가합니다.
    • path에 지정된 파일 경로의 데이터를 사용합니다.

다음 예시의 빌드 구성 파일에서는 첫 번째 빌드 단계에서 myvolume이라는 볼륨을 정의하고 /persistent_volume/file에 데이터를 저장합니다. 두 번째 빌드 단계는 /persistent_volume/file에 저장된 값을 출력합니다.

YAML

steps:
- name: 'ubuntu'
  entrypoint: 'bash'
  args:
    - '-c'
    - |
      echo "Hello, world!" > /persistent_volume/file
  volumes:
  - name: 'myvolume'
    path: '/persistent_volume'
- name: 'ubuntu'
  entrypoint: 'bash'
  args:
    - '-c'
    - |
      cat /persistent_volume/file
  volumes:
  - name: 'myvolume'
    path: '/persistent_volume'

JSON

{
  "steps": [
  {
    "name": "ubuntu",
    "entrypoint": "bash",
    "args": [
      "-c",
      "echo \"Hello, world!\" > /persistent_volume/file\n"
     ],
     "volumes": [
     {
       "name": "myvolume",
       "path": "/persistent_volume"
     }
     ]
  },
  {
    "name": "ubuntu",
    "entrypoint": "bash",
    "args": [
      "-c",
      "cat /persistent_volume/file\n"
    ],
    "volumes": [
    {
      "name": "myvolume",
      "path": "/persistent_volume"
    }
    ]
  }
]
}

다음 단계