Questa pagina descrive come configurare Cloud Build in modo da archiviare gli artefatti che crei in un repository Artifact Registry.
Prima di iniziare
- Se il repository di destinazione non esiste in Artifact Registry, crea un nuovo repository.
Se Cloud Build e il repository si trovano in progetti diversi o se utilizzi un account di servizio specificato dall'utente per eseguire build, concedi il ruolo Writer Artifact Registry all'account di servizio di build nel progetto con i repository.
L'account di servizio Cloud Build predefinito ha accesso per eseguire le seguenti azioni con un repository nello stesso progetto Google Cloud:
- Caricare e scaricare elementi
- Crea repository gcr.io in Artifact Registry
Configura una build Docker
Dopo aver concesso le autorizzazioni al repository di destinazione, puoi configurare la build.
Per configurare la build:
Nel file di configurazione della build, aggiungi il passaggio per creare e taggare l'immagine.
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ] images: - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
Questo snippet utilizza le sostituzioni di Cloud Build. Questo approccio è utile se Vuoi utilizzare lo stesso file di configurazione di compilazione per eseguire il push delle immagini ai repository per diversi ambienti, come test, gestione temporanea o produzione.
${_LOCATION}
,${_REPOSITORY}
e${_IMAGE}
sono sostituzione definita dall'utente per la posizione, il nome e l'immagine del repository. Specifica i valori per queste variabili al momento della compilazione.$PROJECT_ID
è una sostituzione predefinita che Cloud Build risolve con l'ID progetto Google Cloud per la compilazione.- Se esegui il comando
gcloud builds submit
, Cloud Build utilizza l'ID progetto attivo nella sessione gcloud. - Se usi un trigger di build, Cloud Build utilizza l'ID in cui è in esecuzione Cloud Build.
In alternativa, puoi utilizzare una sostituzione definita dall'utente anziché
$PROJECT_ID
per poter specificare un ID progetto in fase di creazione.- Se esegui il comando
Quando è tutto pronto per eseguire la build, specifica i valori per il campo definito dall'utente le sostituzioni. Ad esempio, questo comando sostituisce:
us-east1
per la posizione del repositorymy-repo
per il nome del repositorymy-image
per il nome dell'immagine
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_IMAGE="my-image" .
Configura una build Go
Dopo aver concesso le autorizzazioni al repository di destinazione, puoi configurare la build. Le istruzioni riportate di seguito descrivono la configurazione della build per caricare un modulo Go in un repository Go.
Per configurare la build:
Per caricare un modulo Go nel repository Go nella tua build, aggiungi quanto segue passaggi al file di configurazione della build:
steps: - name: gcr.io/cloud-builders/gcloud args: - 'artifacts' - 'go' - 'upload' - '--project=$PROJECT_ID' - '--location=${_LOCATION}' - '--repository=${_REPOSITORY}' - '--module-path=${_MODULE_PATH}' - '--version=$TAG_NAME'
Il file di configurazione della build include le sostituzione di Cloud Build. Questo approccio è utile se vuoi usa lo stesso file di configurazione di compilazione per caricare pacchetti nei repository, in ambienti diversi, come test, gestione temporanea o produzione.
${_LOCATION}
,${_REPOSITORY}
e${_MODULE_PATH}
sono sostituzioni predefinite dall'utente per la posizione del repository, il nome del repository e il percorso del modulo. Puoi specificare i valori di queste variabili al momento della creazione.$PROJECT_ID
e$TAG_NAME
sono sostituzione predefinite che Cloud Build sostituisce con quanto segue:$PROJECT_ID
viene sostituito con l'ID del progetto Google Cloud per la compilazione.- Se esegui il comando
gcloud builds submit
, Cloud Build utilizza l'ID progetto attivo nella sessione gcloud. - Se usi un trigger di build, Cloud Build utilizza l'ID in cui è in esecuzione Cloud Build.
In alternativa, puoi utilizzare una sostituzione definita dall'utente anziché
$PROJECT_ID
in modo da poter specificare un ID progetto in fase di compilazione.- Se esegui il comando
$TAG_NAME
viene sostituito con il nome del tag per supportare la convenzione Go di utilizzare i tag Git come numeri di versione.
Per installare il pacchetto dal repository Go, aggiungi i seguenti passaggi al file di configurazione di build per:
- Aggiungi un endpoint Artifact Registry a livello di regione nel tuo repository
posizione del file
.netrc
. - Esegui lo strumento di assistenza per le credenziali per aggiornare i token OAuth.
- Esegui il comando
go run
. Puoi anche impostare il valore sugo build
per compilare il modulo,go test
per eseguire i test ogo mod tidy
per scaricare le dipendenze.
Per il passaggio del comando
go
,GOPROXY
è impostato sul repository Artifact Registry che ospita le dipendenze private. Puoi aggiungi il proxy pubblico all'elencoGOPROXY
separato da virgole se il modulo ha dipendenze pubbliche.steps: - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'add-locations', '--locations=${_LOCATION}'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'refresh'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', '.'] env: - 'GOPROXY=https://${_LOCATION}-go.pkg.dev/${_PROJECT_ID}/${_REPOSITORY}' options: env: # Disable GO sumdb checks for private modules. - 'GONOSUMDB=${_MODULE_PATH}'
- Aggiungi un endpoint Artifact Registry a livello di regione nel tuo repository
posizione del file
Quando è tutto pronto per eseguire la compilazione, specifica i valori per le sostituzione predefinite dall'utente. Ad esempio, questo comando sostituisce:
us-east1
per la posizione del repositorymy-project
per l'ID progettomy-repo
per il nome del repositoryexample.com/greetings
per il percorso del modulo
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_PROJECT_ID="my-project",_REPOSITORY="my-repo",_MODULE_PATH="example.com/greetings" .
Configura una build Java
Dopo aver concesso le autorizzazioni al repository di destinazione, è tutto pronto per e configurare la build. Le istruzioni riportate di seguito descrivono la configurazione della build per caricare un pacchetto Java in un Repository Maven.
Per configurare la build:
Configura l'autenticazione per Maven. Ensure di specificare il progetto e il repository di destinazione corretti in
pom.xml
.Nel file di configurazione della build di Cloud Build, aggiungi il passaggio da caricare il pacchetto con Maven:
steps: - name: gcr.io/cloud-builders/mvn args: ['deploy']
Quando il file di configurazione della build è pronto, avvia la build con il seguente comando:
gcloud builds submit
Configurare una compilazione Node.js
Dopo aver concesso le autorizzazioni al repository di destinazione, puoi configurare la build. Le istruzioni riportate di seguito descrivono la configurazione della build per caricare un pacchetto Node.js in un repository npm.
Per configurare la build:
Aggiungi il tuo repository Artifact Registry al file
.npmrc
in Node.js progetto. Il file si trova nella directory con il tuo filepackage.json
.@SCOPE:registry=https://LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY //LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY/:always-auth=true
- SCOPE-NAME è il nome dell'ambito npm da associare al repository. L'utilizzo degli ambiti ti consente di pubblicare e installare sempre i pacchetti dal repository corretto.
- PROJECT_ID è l'ID del tuo progetto Google Cloud.
- LOCATION è la posizione regionale o multiregionale del repository.
- REPOSITORY è il nome del repository.
Aggiungi uno script al file
package.json
del progetto che aggiorna il token di accesso per l'autenticazione con il repository."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Nel file di configurazione di compilazione, aggiungi il passaggio per caricare il pacchetto nel repository.
steps: - name: gcr.io/cloud-builders/npm args: ['run', 'artifactregistry-login'] - name: gcr.io/cloud-builders/npm args: ['publish', '${_PACKAGE}']
${_PACKAGE}
è una sostituzioni Cloud Build che rappresenta la directory del progetto Node.js. Puoi specificare la directory quando esegui il comando creare.Ad esempio, questo comando carica il pacchetto da una directory denominata
src
:gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_PACKAGE="src" .
Configurare una compilazione Python
Dopo aver concesso le autorizzazioni al repository di destinazione, è tutto pronto per e configurare la build. Le istruzioni riportate di seguito descrivono la configurazione della build per caricare un pacchetto Python in un repository Python e installare il pacchetto utilizzando pip.
Per compilare e conteinerizzare un'applicazione Python ed eseguirne il push in un repository Docker, consulta la sezione Creazione di applicazioni Python nella documentazione di Cloud Build.
Per configurare la build:
Nella directory con il file di configurazione della build di Cloud Build, crea un file denominato
requirements.txt
con le seguenti dipendenze:twine keyrings.google-artifactregistry-auth
- Twine è per caricare pacchetti in Artifact Registry.
- keyrings.google-artifactregistry-auth è il backend del keyring di Artifact Registry che gestisce l'autenticazione con Artifact Registry per pip e Twine.
Per caricare un pacchetto Python nel repository Python nella tua build, aggiungi il token segui questi passaggi al file di configurazione della build:
steps: - name: python entrypoint: pip args: ["install", "-r", "requirements.txt", "--user"] - name: python entrypoint: python args: - '-m' - 'twine' - 'upload' - '--repository-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/' - 'dist/*'
In questo snippet, il primo passaggio installa Twine e il backend del keyring di Artifact Registry. Il secondo passaggio carica i file Python creati Sottodirectory
dist
. Modifica i percorsi arequirements.txt
e ai file Python compilati se non corrispondono allo snippet.Il percorso del repository include Cloud Build sostituzioni. Questo approccio è utile se vuoi utilizzare lo stesso file di configurazione di compilazione per caricare i pacchetti nei repository per ambienti diversi, ad esempio di test, di gestione temporanea o di produzione.
${_LOCATION}
e${_REPOSITORY}
sono sostituzioni definite dall'utente per la posizione del repository, il nome del repository e il nome del pacchetto. Specifica i valori di queste variabili in fase di compilazione.$PROJECT_ID
è una sostituzione predefinita che Cloud Build risolve con l'ID progetto Google Cloud per la build.- Se esegui il comando
gcloud builds submit
, Cloud Build utilizza l'ID progetto attivo nella sessione gcloud. - Se usi un trigger di build, Cloud Build utilizza l'ID in cui è in esecuzione Cloud Build.
In alternativa, puoi utilizzare una sostituzione definita dall'utente anziché
$PROJECT_ID
per poter specificare un ID progetto in fase di creazione.- Se esegui il comando
Per installare il pacchetto dal repository Python, aggiungi un passaggio al file di configurazione di compilazione che esegue il comando
pip install
.steps: - name: python entrypoint: pip args: - 'install' - '--index-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/' - '${_PACKAGE}' - '--verbose'
Questo snippet include un'ulteriore sostituzione
${_PACKAGE}
per il valore il nome del pacchetto.Quando è tutto pronto per eseguire la build, specifica i valori per il campo definito dall'utente le sostituzioni. Ad esempio, questo comando sostituisce:
us-east1
per la posizione del repositorymy-repo
per il nome del repositorymy-package
per il nome del pacchetto
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_PACKAGE="my-package" .