Questa pagina spiega come passare i dati tra i vari passi della build. Se non hai mai utilizzato Cloud Build, leggi prima la guida rapida alla compilazione e la panoramica della configurazione di compilazione.
Cloud Build esegue le attività come una serie di passaggi di build, che vengono eseguiti in ambienti isolati e containerizzati. Dopo ogni passaggio, il contenitore 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. Tuttavia, talvolta potresti dover mantenere lo stato di un passaggio di una compilazione per utilizzarlo nei passaggi successivi.
In questi casi, Cloud Build fornisce volumi, ovvero percorsi di file di lettura/scrittura che puoi collegare a qualsiasi passaggio di compilazione. 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. Tutto ciò che viene scritto nei volumi e in /workspace definiti dall'utente in qualsiasi passaggio sarà disponibile per i passaggi successivi.
Trasmissione dei dati tramite 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 seguente file di configurazione di build di esempio, il primo passaggio di compilazione memorizza la stringa "Primo valore" in /workspace/first.txt
e il valore 2
in /workspace/second.txt
. Il secondo passaggio di compilazione legge e stampa i valori in /workspace/first.txt
e /workspace/second.txt
.
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)
{
"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"
]
}
]
}
Trasmissione dei dati utilizzando 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 in cui memorizzare i dati.
- Memorizza i dati nel percorso del 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 dal percorso del file specificato in
path
.
- Aggiungi un blocco
Nel seguente esempio di file di configurazione di compilazione, il primo passaggio di compilazione definisce un volume chiamato myvolume
e memorizza i dati in /persistent_volume/file
. Il secondo
passaggio di compilazione stampa il valore memorizzato in /persistent_volume/file
.
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'
{
"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 una build manualmente.
- 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.