Meneruskan data antar-langkah build

Halaman ini menjelaskan cara meneruskan data di antara langkah-langkah build. Jika Anda baru menggunakan Cloud Build, baca Panduan memulai build dan Ringkasan konfigurasi build terlebih dahulu.

Cloud Build menjalankan tugas Anda sebagai serangkaian langkah build, yang dijalankan di lingkungan yang terisolasi dan di-container. Setelah setiap langkah, penampung akan dihapus. Hal ini memungkinkan Anda memiliki alat dan lingkungan yang sama sekali berbeda untuk setiap langkah, dan secara default, data apa pun yang dibuat dalam satu langkah tidak dapat mencemari langkah berikutnya. Namun, terkadang Anda mungkin perlu mempertahankan status dari satu langkah build untuk digunakan di langkah berikutnya.

Untuk kasus tersebut, Cloud Build menyediakan volume, yang merupakan jalur file baca-tulis yang dapat Anda lampirkan ke langkah build apa pun. Volume mempertahankan kontennya selama durasi build. Anda dapat menentukan volume sendiri atau menggunakan /workspace, yang merupakan volume default yang disediakan Cloud Build untuk Anda. Sebelum menjalankan build, Cloud Build mengekstrak kode sumber ke /workspace. Apa pun yang ditulis ke volume dan /workspace yang ditentukan pengguna oleh langkah apa pun akan tersedia untuk langkah berikutnya.

Meneruskan data menggunakan ruang kerja

Untuk meneruskan data antar-langkah build, simpan aset yang dihasilkan oleh langkah build di /workspace dan aset ini akan tersedia untuk langkah build berikutnya.

Dalam contoh file konfigurasi build berikut, langkah build pertama menyimpan string "First Value" di /workspace/first.txt dan nilai 2 di /workspace/second.txt. Langkah build kedua membaca dan mencetak nilai di /workspace/first.txt dan /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"
      ]
    }
    ]
}

Meneruskan data menggunakan volume yang ditentukan pengguna

Daripada menggunakan volume /workspace default yang disediakan oleh Cloud Build, Anda dapat menentukan volume Anda sendiri untuk mempertahankan data di antara langkah-langkah build.

Untuk menentukan dan menggunakan volume Anda sendiri:

  • Pada langkah build tempat Anda ingin menyimpan data:
    • Tambahkan blok volumes dan tetapkan kolom berikut:
      • name: Tetapkan nilai kolom ini ke nama volume yang diinginkan.
      • path: Tetapkan nilai kolom ini ke jalur file untuk menyimpan data Anda.
    • Simpan data di jalur file yang ditentukan di path.
  • Pada langkah build tempat Anda ingin menggunakan data:
    • Tambahkan blok volumes dengan nilai untuk name dan path.
    • Gunakan data dari jalur file yang ditentukan di path.

Dalam contoh file konfigurasi build berikut, langkah build pertama menentukan volume bernama myvolume dan menyimpan data di /persistent_volume/file. Langkah build kedua mencetak nilai yang disimpan di /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"
    }
    ]
  }
]
}

Langkah selanjutnya