En esta página, se explica cómo pasar datos entre los pasos de la compilación. Si eres nuevo en Cloud Build, lee la Guía de inicio rápido de compilación y primero en la descripción general de la configuración de compilación.
Cloud Build ejecuta tus tareas como una serie de pasos de compilación, que se ejecutan en entornos aislados y alojados en contenedores. Después de cada paso, el contenedor se descarta. Esto te permite tener herramientas y entornos completamente diferentes para cada paso y, de forma predeterminada, cualquier dato creado en un paso no puede contaminar el siguiente paso. Sin embargo, es posible que, a veces, debas conservar el estado de un paso de una compilación para usarlo en pasos posteriores.
Para estos casos, Cloud Build proporciona volúmenes, que son rutas de acceso de archivo de lectura y escritura que puedes adjuntar a cualquier paso de compilación. Los volúmenes retienen el contenido durante la compilación. Puedes definir tu propio volumen o usar /workspace, que es el volumen predeterminado que Cloud Build te proporciona. Antes de ejecutar una compilación, Cloud Build extrae el código fuente a /workspace. Todo lo que se escriba en recursos definidos por el usuario Volumes y /workspace en cualquier paso estarán disponibles en los pasos posteriores.
Pasa datos con espacios de trabajo
Para pasar datos entre los pasos de la compilación, almacena los recursos generados en el paso de compilación en /workspace
y estos recursos estarán disponibles para cualquier paso de compilación posterior.
En el siguiente archivo de configuración de compilación de ejemplo, el primer paso de compilación almacena la string “First Value” en /workspace/first.txt
y el valor 2
en /workspace/second.txt
. En el segundo paso de compilación, se leen y, luego, imprimen los valores en /workspace/first.txt
y /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"
]
}
]
}
Pasa datos con volúmenes especificados por el usuario
En lugar de usar el volumen /workspace
predeterminado que proporciona Cloud Build, puedes definir tu propio volumen para conservar datos entre los pasos de la compilación.
Para definir y usar tu propio volumen, sigue estos pasos:
- En el paso de compilación en el que deseas almacenar los datos, haz lo siguiente:
- Agrega un bloque
volumes
y configura los siguientes campos:name
: Configura el valor de este campo con el nombre de volumen deseado.path
: Establece el valor de este campo en la ruta de acceso del archivo para almacenar tus datos.
- Almacena los datos en la ruta de acceso del archivo especificada en
path
.
- Agrega un bloque
- En el paso de compilación en el que deseas consumir los datos, haz lo siguiente:
- Agrega un bloque
volumes
con los valores dename
ypath
. - Consume los datos de la ruta de acceso del archivo especificada en
path
.
- Agrega un bloque
En el siguiente archivo de configuración de compilación de ejemplo, en el primer paso de compilación, se define un volumen llamado myvolume
y se almacenan datos en /persistent_volume/file
. En el segundo paso de compilación, se imprime el valor almacenado en /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"
}
]
}
]
}
¿Qué sigue?
- Obtén más información para iniciar una compilación de forma manual.
- Aprende a automatizar compilaciones con activadores.
- Aprende a ejecutar secuencias de comandos de bash dentro de los pasos de compilación.
- Obtén más información para configurar el orden de los pasos de compilación.