Questa pagina spiega come trasferire i dati tra i passaggi della build. Se non hai mai utilizzato Cloud Build, consulta la guida rapida alla creazione e la panoramica della configurazione della build.
Cloud Build esegue le attività come una serie di passaggi di build, che eseguono in ambienti isolati e containerizzati. Dopo ogni passaggio, il container viene eliminato. In questo modo puoi avere strumenti e ambienti completamente diversi per ogni passaggio e, per impostazione predefinita, i dati creati in un passaggio non possono contaminare il passaggio successivo. Ma a volte potresti dover mantenere lo stato da un passaggio di una build per utilizzarlo in passaggi.
In questi casi, Cloud Build fornisce volumi, ovvero i volumi di lettura e scrittura percorsi di file da collegare a qualsiasi passaggio di build. I volumi mantengono i propri contenuti per tutta la durata della compilazione. Puoi definire il tuo volume o utilizzare /workspace, che è il volume predefinito fornito da Cloud Build. Prima di eseguire una build, Cloud Build estrae il codice sorgente in /workspace. Qualsiasi testo definito dall'utente i volumi e /workspace per ogni passaggio saranno disponibili per i passaggi successivi.
Trasmissione dei dati utilizzando gli spazi di lavoro
Per passare i dati tra i vari passi della build, memorizza gli asset prodotti dal passaggio in
/workspace
e questi asset saranno disponibili per tutti i passaggi di build successivi.
Nel file di configurazione di compilazione di esempio che segue, il primo passaggio di build archivia la
stringa "Primo valore" per /workspace/first.txt
e il valore 2
in
/workspace/second.txt
. Il secondo passaggio di build legge e stampa i valori in
/workspace/first.txt
e /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"
]
}
]
}
Trasferimento di dati tramite volumi specificati dall'utente
Anziché utilizzare il volume /workspace
predefinito fornito da Cloud Build,
puoi definire il tuo volume per mantenere i dati tra i passaggi di compilazione.
Per definire e utilizzare il tuo volume:
- Nel passaggio di compilazione in cui vuoi archiviare i dati:
- Aggiungi un blocco
volumes
e imposta i seguenti campi:name
: imposta il valore di questo campo sul nome del volume desiderato.path
: imposta il valore di questo campo sul percorso del file per archiviare i dati.
- Archivia i dati nel percorso file specificato in
path
.
- Aggiungi un blocco
- Nel passaggio di compilazione in cui vuoi utilizzare i dati:
- Aggiungi un blocco
volumes
con i valori pername
epath
. - Utilizza i dati del percorso file specificato in
path
.
- Aggiungi un blocco
Nel seguente file di configurazione di compilazione di esempio, il primo passaggio di build definisce un volume
denominato myvolume
e archivia i dati in /persistent_volume/file
. La seconda build
stampa il valore memorizzato in /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"
}
]
}
]
}
Passaggi successivi
- Scopri come avviare manualmente una build.
- Scopri come automatizzare le build utilizzando i trigger.
- Scopri come eseguire script bash all'interno di passaggi di compilazione.
- Scopri come configurare l'ordine dei passaggi di compilazione.