Cette page explique comment transmettre des données entre les étapes de compilation. Si vous débutez avec Cloud Build, commencez par lire le Guide de démarrage rapide et la Présentation de la configuration de compilation.
Cloud Build exécute vos tâches sous la forme d'étapes de compilation, qui s'exécutent dans des environnements isolés et conteneurisés. Après chaque étape, le conteneur est supprimé. Cela vous permet de disposer d'outils et d'environnements complètement différents pour chaque étape et, par défaut, les données créées en une seule étape ne peuvent pas contaminer l'étape suivante. Toutefois, vous devrez peut-être conserver l'état d'une étape de compilation pour l'utiliser dans les étapes suivantes.
Dans ce cas, Cloud Build fournit des volumes, qui sont des chemins de fichiers en lecture-écriture que vous pouvez associer à n'importe quelle étape de compilation. Les volumes conservent leur contenu tout au long de la compilation. Vous pouvez définir votre propre volume ou utiliser /workspace, qui est le volume par défaut fourni par Cloud Build. Avant d'exécuter une compilation, Cloud Build extrait le code source dans /workspace. Tout ce qui est écrit dans un fichier volumes et /workspace seront disponibles pour les étapes suivantes.
Transmettre des données à l'aide d'espaces de travail
Pour transmettre des données entre les étapes de compilation, stockez les éléments produits par l'étape de compilation dans /workspace
. Ces éléments seront disponibles pour toutes les étapes de compilation suivantes.
Dans l'exemple de fichier de configuration de compilation suivant, la première étape de compilation stocke la chaîne "First Value" dans /workspace/first.txt
et la valeur 2
dans /workspace/second.txt
. La deuxième étape de compilation lit et affiche les valeurs de /workspace/first.txt
et /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"
]
}
]
}
Transmettre des données à l'aide de volumes spécifiés par l'utilisateur
Au lieu d'utiliser le volume /workspace
par défaut fourni par Cloud Build, vous pouvez définir votre propre volume pour conserver les données entre les étapes de compilation.
Pour définir et utiliser votre propre volume :
- Dans l'étape de compilation où vous souhaitez stocker les données :
- Ajoutez un bloc
volumes
et définissez les champs suivants :name
: définissez la valeur de ce champ sur le nom du volume souhaité.path
: définissez la valeur de ce champ sur le chemin d'accès au fichier pour stocker vos données.
- Stockez ls données dans le chemin de fichier spécifié dans
path
.
- Ajoutez un bloc
- À l'étape de compilation où vous souhaitez utiliser les données :
- Ajoutez un bloc
volumes
avec les valeurs pourname
etpath
. - Utilisez les données du chemin de fichier spécifié dans
path
.
- Ajoutez un bloc
Dans l'exemple de fichier de configuration de compilation suivant, la première étape de compilation définit un volume nommé myvolume
et stocke les données dans /persistent_volume/file
. La deuxième étape de compilation affiche la valeur stockée dans /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"
}
]
}
]
}
Étape suivante
- Découvrez comment démarrer une compilation manuellement.
- Découvrez comment automatiser les compilations à l'aide de déclencheurs.
- Découvrez comment exécuter des scripts bash dans les étapes de compilation.
- Découvrez comment configurer l'ordre des étapes de compilation.