Meneruskan data di antara langkah-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 dalam container. Setelah setiap langkah, container akan dihapus. Hal ini memungkinkan Anda memiliki alat dan lingkungan yang benar-benar berbeda untuk setiap langkah. dan secara default, data apa pun yang dibuat dalam satu langkah tidak boleh mencemari langkah berikutnya. Namun, terkadang Anda mungkin perlu mempertahankan status dari satu langkah build untuk digunakan dalam langkah selanjutnya.

Untuk kasus semacam ini, 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 Anda sendiri atau menggunakan /workspace, yang merupakan volume default yang disediakan Cloud Build untuk Anda. Sebelum menjalankan build, Cloud Build akan mengekstrak kode sumber ke /workspace. Apa pun yang ditulis ke volume yang ditentukan pengguna dan /workspace oleh langkah apa pun akan tersedia untuk langkah berikutnya.

Meneruskan data menggunakan ruang kerja

Untuk meneruskan data di antara langkah-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 dalam /workspace/second.txt. Langkah build kedua membaca dan mencetak nilai dalam /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 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: Setel 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.
    • Menggunakan data dari jalur file yang ditentukan di path.

Dalam contoh file konfigurasi build berikut, langkah build pertama menentukan volume bernama myvolume dan menyimpan data dalam /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