Auf dieser Seite wird erläutert, wie Daten zwischen Build-Schritten übergeben werden. Wenn Sie Cloud Build noch nicht kennen, lesen Sie zuerst die Build-Kurzanleitung und die Übersicht über die Build-Konfiguration.
Cloud Build führt Ihre Aufgaben als eine Reihe von Build-Schritten aus, die in isolierten und containerisierten Umgebungen ausgeführt werden. Nach jedem Schritt wird der Container verworfen. So können Sie für jeden Schritt völlig unterschiedliche Tools und Umgebungen verwenden, und standardmäßig können die in einem Schritt erstellten Daten den nächsten Schritt nicht beeinträchtigen. Manchmal müssen Sie jedoch den Status aus einem Build-Schritt beibehalten, um ihn in den nachfolgenden Schritten zu verwenden.
In solchen Fällen bietet Cloud Build Volumes, d. h. schreibgeschützte Dateipfade, die Sie an jeden Build-Schritt anhängen können. Volumes behalten ihren Inhalt während der gesamten Dauer des Builds bei. Sie können Ihr eigenes Volume definieren oder /workspace verwenden. Dies ist das Standard-Volume, das Cloud Build für Sie bereitstellt. Vor der Ausführung eines Builds extrahiert Cloud Build den Quellcode in /workspace. Alles, was in „Benutzerdefiniert“ geschrieben wird. und /workspace nach jedem Schritt für die nachfolgenden Schritte verfügbar sind.
Daten mit Arbeitsbereichen übergeben
Speichern Sie die im Build-Schritt erzeugten Assets in /workspace
, um Daten zwischen Build-Schritten zu übergeben. Diese Assets sind für alle nachfolgenden Build-Schritte verfügbar.
In der folgenden Build-Konfigurationsdatei wird im ersten Build-Schritt der String "First Value" in /workspace/first.txt
und der Wert 2
in /workspace/second.txt
gespeichert. Der zweite Build-Schritt liest und gibt die Werte in /workspace/first.txt
und /workspace/second.txt
aus.
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"
]
}
]
}
Daten mit benutzerdefinierten Volumes übergeben
Anstatt das von Cloud Build bereitgestellte Standard-Volume /workspace
zu verwenden, können Sie ein eigenes Volume definieren, um Daten zwischen Build-Schritten beizubehalten.
So definieren und verwenden Sie Ihr eigenes Volume:
- Im Build-Schritt, in dem Sie die Daten speichern möchten:
- Fügen Sie den Block
volumes
hinzu und legen Sie die folgenden Felder fest:name
: Legen Sie den Wert dieses Felds auf den gewünschten Volume-Namen fest.path
: Legen Sie den Wert dieses Felds auf den Dateipfad zum Speichern Ihrer Daten fest.
- Speichern Sie die Daten im Dateipfad, der in
path
angegeben ist.
- Fügen Sie den Block
- Im Build-Schritt, in dem Sie die Daten nutzen möchten:
- Fügen Sie den Block
volumes
mit den Werten fürname
undpath
hinzu. - Verarbeiten Sie die Daten aus dem in
path
angegebenen Dateipfad.
- Fügen Sie den Block
In der folgenden Build-Konfigurationsdatei wird mit dem ersten Build-Schritt ein Volume mit dem Namen myvolume
definiert und Daten werden in /persistent_volume/file
gespeichert. Der zweite Build-Schritt gibt den in /persistent_volume/file
gespeicherten Wert aus.
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"
}
]
}
]
}
Nächste Schritte
- Build manuell starten
- Builds mit Build-Triggern automatisieren
- Bash-Skripts in Build-Schritten ausführen
- Reihenfolge der Build-Schritte konfigurieren