Passaggio di dati tra i vari passi della build

Questa pagina spiega come trasferire i dati tra i passaggi della build. Se non hai mai utilizzato Cloud Build, consulta la guida rapida alla creazione e la panoramica della configurazione della build.

Cloud Build esegue le attività come una serie di passaggi di build, che eseguono 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. Ma a volte potresti dover mantenere lo stato da un passaggio di una build per utilizzarlo in passaggi.

In questi casi, Cloud Build fornisce volumi, ovvero i volumi di lettura e scrittura percorsi di file da collegare a qualsiasi passaggio di build. 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. Qualsiasi testo definito dall'utente i volumi e /workspace per ogni passaggio saranno disponibili per i passaggi successivi.

Trasmissione dei dati utilizzando 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 file di configurazione di compilazione di esempio che segue, il primo passaggio di build archivia la stringa "Primo valore" per /workspace/first.txt e il valore 2 in /workspace/second.txt. Il secondo passaggio di build 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 tramite 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 per archiviare i dati.
    • Archivia i dati nel percorso file specificato in path.
  • Nel passaggio di compilazione in cui vuoi utilizzare i dati:
    • Aggiungi un blocco volumes con i valori per name e path.
    • Utilizza i dati del percorso file specificato in path.

Nel seguente file di configurazione di compilazione di esempio, il primo passaggio di build definisce un volume denominato myvolume e archivia i dati in /persistent_volume/file. La seconda 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