Questa pagina spiega come passare i dati tra i passaggi di build. Se non hai mai utilizzato Cloud Build, leggi prima la guida rapida di Build 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 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. Tuttavia, a volte potrebbe essere necessario mantenere lo stato di un passaggio di una build 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 build. I volumi mantengono i loro contenuti per tutta la durata della build. Puoi definire un volume personalizzato 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 elemento scritto nei volumi definiti dall'utente e in /workspace da qualsiasi passaggio sarà disponibile per i passaggi successivi.
Trasferire dati utilizzando gli spazi di lavoro
Per passare i dati tra i passaggi di build, memorizza gli asset prodotti dal passaggio di build in
/workspace e questi asset saranno disponibili per tutti i passaggi di build successivi.
Nel seguente file di configurazione della build di esempio, il primo passaggio della build memorizza la stringa "First Value" 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.
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 utilizzando volumi specificati dall'utente
Anziché utilizzare il volume /workspace predefinito fornito da Cloud Build,
puoi definire un volume personalizzato per rendere persistenti i dati tra i passaggi di build.
Per definire e utilizzare il tuo volume:
- Nel passaggio di compilazione in cui vuoi archiviare i dati:
- Aggiungi un blocco
volumese imposta i seguenti campi:name: imposta il valore di questo campo sul nome del volume che preferisci.path: imposta il valore di questo campo sul percorso del file in cui archiviare i dati.
- Archivia i dati nel percorso del file specificato in
path.
- Aggiungi un blocco
- Nel passaggio di creazione in cui vuoi utilizzare i dati:
- Aggiungi un blocco
volumescon i valori pernameepath. - Utilizza i dati dal percorso del file specificato in
path.
- Aggiungi un blocco
Nel seguente file di configurazione della build di esempio, il primo passaggio di build definisce un volume
denominato myvolume e archivia i dati in /persistent_volume/file. Il secondo passaggio
di 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 una build manualmente.
- Scopri come automatizzare le build utilizzando i trigger.
- Scopri come eseguire script bash all'interno dei passaggi di build.
- Scopri come configurare l'ordine dei passaggi di build.