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