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
.
- Tambahkan blok
- Pada langkah build tempat Anda ingin menggunakan data:
- Tambahkan blok
volumes
dengan nilai untukname
danpath
. - Menggunakan data dari jalur file yang ditentukan di
path
.
- Tambahkan blok
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
- Pelajari cara memulai build secara manual.
- Pelajari cara mengotomatiskan build menggunakan pemicu.
- Pelajari cara menjalankan skrip bash dalam langkah-langkah build.
- Pelajari cara mengonfigurasi urutan langkah build.