Questa pagina spiega come archiviare gli artefatti della build in Cloud Storage.
Ti consigliamo di utilizzare Artifact Registry per archiviare gli artefatti della build. Artifact Registry è un prodotto Google Cloud che puoi integrare con Cloud Build per archiviare e gestire in modo sicuro i tuoi artefatti in repository privati o pubblici. L'archiviazione di artefatti in Artifact Registry ti consente di:
- Gestisci i metadati del container e cerca le vulnerabilità dei container con Artifact Analysis.
- Applica i criteri di deployment con Autorizzazione binaria.
- Utilizza il flusso di immagini in Google Kubernetes Engine, che è particolarmente utile per le immagini container di grandi dimensioni.
Per istruzioni sulla configurazione di Cloud Build per l'archiviazione di pacchetti e immagini dalle build in Artifact Registry, consulta la pagina relativa all'archiviazione di artefatti in Artifact Registry.
Archiviazione degli artefatti in Cloud Storage
Per archiviare gli artefatti non containerizzati in Cloud Storage, aggiungi un campo artifacts
nel file di configurazione della build con la posizione del bucket per archiviare l'elemento 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 dei bucket esistenti, consulta l'articolo Elencare i bucket o creare un nuovo bucket.[ARTIFACT_PATH]
: percorso verso uno o più elementi.[ARTIFACT_PATH]
è relativo alla directory di lavoro. Può essere/workspace
, ovvero 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 pagina Elenca bucket o Crea un nuovo bucket.[ARTIFACT_PATH]
: percorso verso uno o più elementi.[ARTIFACT_PATH]
è relativo alla directory di lavoro. Può essere/workspace
, ovvero la directory di lavoro predefinita di Cloud Build o la directory di lavoro impostata utilizzando il campodir
.
Tieni presente i seguenti aspetti relativi all'archiviazione di artefatti in Cloud Storage:
Puoi specificare un solo bucket per caricare gli artefatti. Inoltre, devi essere il proprietario del bucket. Puoi specificare un percorso della directory valido nel bucket.
Puoi caricare un numero qualsiasi di artefatti, ma puoi specificare massimo un centinaio di percorsi di artefatto.
Se carichi un artefatto in un bucket che ha già un artefatto con lo stesso nome, il nuovo artefatto sostituirà l'elemento esistente. Puoi abilitare il controllo delle versioni degli oggetti per il bucket se non vuoi che l'elemento più recente sostituisca un artefatto esistente con lo stesso nome.
Una volta completata correttamente la build, puoi trovare i risultati del caricamento nel file manifest JSON all'indirizzo [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 artefatto ed è in 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 e il valore di hash. Il tipo di hash è sempre 2, il che specifica che è stato eseguito l'hash MD5.
Esempi di artefatti
Gli esempi seguenti 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.
Caricare file e cartelle
Il file di configurazione della build di seguito carica helloworld.class
in
gs://[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 artefatto, specifica il percorso di ogni artefatto separato da una virgola. L'esempio seguente carica HelloWorld.java
, HelloWorld.class
e cloudbuild.yaml
su 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 artefatti in un percorso della directory valido nel bucket. Il seguente esempio 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 artefatto
Quando carichi più artefatti, puoi utilizzare i caratteri jolly gsutil in paths
per specificare più file.
Nell'esempio seguente viene utilizzato come argomento un file denominato classes
, che contiene i nomi dei file .java
da compilare. Quindi, carica 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 delle variabili di sostituzione nella località 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 artefatti in un percorso di Cloud Storage che include il nome del tuo progetto Google Cloud da cui è stata eseguita la build (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
Go
progetti. - Scopri come avviare una build manualmente e usare i trigger.
- Scopri come risolvere gli errori di build.