Questa pagina spiega come archiviare gli elementi delle build in Cloud Storage.
Ti consigliamo di utilizzare Artifact Registry per archiviare gli elementi di compilazione. Artifact Registry è un prodottoGoogle Cloud che puoi integrare con Cloud Build per archiviare e gestire in modo sicuro i tuoi artefatti in repository privati o pubblici. La memorizzazione degli artefatti in Artifact Registry ti consente di:
- Gestisci i metadati dei container e cerca le vulnerabilità dei container con Artifact Analysis.
- Applica i criteri di deployment con Autorizzazione binaria.
- Utilizza lo streaming di immagini in Google Kubernetes Engine, che è particolarmente utile per le immagini container di grandi dimensioni.
Per istruzioni su come configurare Cloud Build per archiviare pacchetti e immagini dalle tue build in Artifact Registry, consulta Archiviare gli artefatti in Artifact Registry.
Archiviazione degli elementi in Cloud Storage
Per archiviare gli artefatti non contenitore in Cloud Storage, aggiungi un campo artifacts
nel file di configurazione di compilazione con la posizione del bucket in cui archiviare
l'artefatto e il percorso di uno o più artefatti:
YAML
artifacts:
objects:
location: [STORAGE_LOCATION]
paths: [[ARTIFACT_PATH],[ARTIFACT_PATH], ...]
Dove,
[STORAGE_LOCATION]
: un bucket Cloud Storage o una cartella all'interno del bucket in cui Cloud Build deve archiviare l'elemento, ad esempiogs://mybucket
ogs://mybucket/myproject/builds
. Per trovare i nomi degli bucket esistenti, consulta elencare i bucket o creare un nuovo bucket.[ARTIFACT_PATH]
: percorso di uno o più elementi.[ARTIFACT_PATH]
è relativo alla tua directory di lavoro. Può essere/workspace
, che è la directory di lavoro predefinita di Cloud Build o la directory di lavoro impostata utilizzando il campodir
.
JSON
{
"artifacts": {
"objects": {
"location": [
"[STORAGE_LOCATION]"
],
"paths": [
[
"[ARTIFACT_PATH]"
],
[
"[ARTIFACT_PATH]"
],
"..."
]
}
}
}
Dove,
[STORAGE_LOCATION]
: un bucket Cloud Storage o una cartella all'interno del bucket in cui Cloud Build deve archiviare l'elemento, ad esempiogs://mybucket
ogs://mybucket/myproject/builds
. Per trovare i nomi dei bucket esistenti, consulta la sezione su come elencare i bucket o su come creare un nuovo bucket.[ARTIFACT_PATH]
: percorso di uno o più elementi.[ARTIFACT_PATH]
è relativo alla tua directory di lavoro. Può essere/workspace
, che è la directory di lavoro predefinita di Cloud Build o la directory di lavoro impostata utilizzando il campodir
.
Tieni presente i seguenti accorgimenti quando archivi gli elementi in Cloud Storage:
Puoi specificare un solo bucket per caricare gli elementi e devi essere il proprietario del bucket. Puoi specificare un percorso di directory valido nel bucket.
Puoi caricare un numero qualsiasi di elementi, ma puoi specificare fino a cento percorsi degli elementi.
Se carichi un elemento in un bucket che contiene già un elemento con lo stesso nome, il nuovo elemento sostituirà quello esistente. Puoi attivare il controllo delle versioni degli oggetti per il tuo bucket se non vuoi che l'elemento più recente sostituisca un elemento esistente con lo stesso nome.
Al termine della compilazione, puoi trovare i risultati del caricamento nel
file manifest JSON in [STORAGE_LOCATION]/artifacts-$BUILD_ID.json
.
Il file manifest JSON contiene i seguenti campi:
location
: specifica la posizione in Cloud Storage in cui è archiviato un elemento e ha il formatogs://[STORAGE_LOCATION]/[FILE_NAME]#[GENERATION_NUMBER]
. Puoi utilizzare il numero di generazione per identificare in modo univoco una versione dei dati nel bucket Cloud Storage.file_hash
: specifica il tipo di hash e il valore. Il tipo di hash è sempre 2, il che specifica che è stato eseguito l'hash MD5.
Esempi di artefatti
Gli esempi riportati di seguito mostrano come utilizzare il campo Artifacts
in un file di configurazione della build. In tutti questi esempi, sostituisci [VALUES_IN_BRACKETS]
con i valori appropriati.
Caricamento di file e cartelle
Il file di configurazione di build riportato di seguito carica helloworld.class
ings://[STORAGE_LOCATION]/
:
YAML
steps:
- name: 'gcr.io/cloud-builders/javac'
args: ['HelloWorld.java']
artifacts:
objects:
location: 'gs://[STORAGE_LOCATION]/'
paths: ['HelloWorld.class']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/javac",
"args": [
"HelloWorld.java"
]
}
],
"artifacts": {
"objects": {
"location": "gs://[STORAGE_LOCATION]/",
"paths": [
"HelloWorld.class"
]
}
}
}
Per caricare più di un elemento, specifica il percorso di ciascun elemento separato da una virgola. Il seguente esempio carica HelloWorld.java
, HelloWorld.class
e cloudbuild.yaml
in gs://[STORAGE_LOCATION]/
:
YAML
steps:
- name: 'gcr.io/cloud-builders/javac'
args: ['HelloWorld.java']
artifacts:
objects:
location: 'gs://[STORAGE_LOCATION]/'
paths: ['HelloWorld.java', 'HelloWorld.class', 'cloudbuild.yaml']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/javac",
"args": [
"HelloWorld.java"
]
}
],
"artifacts": {
"objects": {
"location": "gs://[STORAGE_LOCATION]/",
"paths": [
"HelloWorld.java",
"HelloWorld.class",
"cloudbuild.yaml"
]
}
}
}
Puoi anche caricare gli elementi in un percorso di directory valido nel bucket. L'esempio seguente carica HelloWorld.java
e HelloWorld.class
in gs://[BUCKET_NAME]/[FOLDER_NAME]
:
YAML
steps:
- name: 'gcr.io/cloud-builders/javac'
args: ['HelloWorld.java']
artifacts:
objects:
location: 'gs://[BUCKET_NAME]/[FOLDER_NAME]'
paths: ['HelloWorld.java', 'HelloWorld.class']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/javac",
"args": [
"HelloWorld.java"
]
}
],
"artifacts": {
"objects": {
"location": "gs://[BUCKET_NAME]/[FOLDER_NAME]",
"paths": [
"HelloWorld.java",
"HelloWorld.class"
]
}
}
}
Utilizzo di caratteri jolly per caricare più di un elemento
Quando carichi più elementi, puoi utilizzare
caratteri jolly in paths
per specificare più
file.
L'esempio seguente prende come argomento un file denominato classes
, che contiene i nomi dei file .java
da compilare. Carica quindi qualsiasi file .class
nel bucket Cloud Storage specificato:
YAML
steps:
- name: 'gcr.io/cloud-builders/javac'
args: ['@classes']
artifacts:
objects:
location: 'gs://[STORAGE_LOCATION]/'
paths: ['*.class']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/javac",
"args": [
"@classes"
]
}
],
"artifacts": {
"objects": {
"location": "gs://[STORAGE_LOCATION]/",
"paths": [
"*.class"
]
}
}
}
Utilizzo di variabili di sostituzione nella posizione del bucket
Puoi utilizzare le variabili di sostituzione per specificare una cartella all'interno del bucket Cloud Storage. Se la cartella specificata non esiste, Cloud Build la creerà per te.
L'esempio seguente carica gli elementi in un percorso Cloud Storage che include il nome del progetto Google Cloud da cui è stata eseguita la compilazione (ad esempio gs://mybucket/myproject/):
YAML
steps:
- name: 'gcr.io/cloud-builders/javac'
args: ['@classes']
artifacts:
objects:
location: 'gs://[BUCKET_NAME]/$PROJECT_ID'
paths: ['helloworld.class']
JSON
{
"steps": [
{
"name": "gcr.io/cloud-builders/javac",
"args": [
"@classes"
]
}
],
"artifacts": {
"objects": {
"location": "gs://[BUCKET_NAME]/$PROJECT_ID",
"paths": [
"helloworld.class"
]
}
}
}
Passaggi successivi
- Scopri come creare progetti
Go
. - Scopri come avviare una build manualmente e utilizzando gli trigger.
- Scopri come risolvere gli errori di compilazione.