Questa pagina spiega come utilizzare Cloud Build per creare, testare e containerizzare applicazioni basate su Java, caricare le immagini container su Artifact Registry, generare la provenienza della build.
Prima di iniziare
- Acquisisci familiarità con la creazione di applicazioni basate su Java.
- Tieni a portata di mano il tuo progetto Java, incluso un
Dockerfile
. - Hai un repository Docker in Artifact Registry o crea un nuovo repository.
- Conosci come scrivere un file di configurazione di Cloud Build.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI.
Utilizzo dell'immagine maven
o gradle
Puoi configurare Cloud Build per creare applicazioni Java utilizzando
l'immagine maven
o l'immagine gradle
da Docker Hub.
Per eseguire le attività nell'immagine maven
o gradle
, specifica l'URL dell'immagine e la versione con tag dell'immagine nel campo name
del file di configurazione della build. Se non specifichi il tag immagine, Cloud Build utilizza l'immagine latest
per impostazione predefinita. Cloud Build avvia l'immagine specificata in name
utilizzando il punto di ingresso predefinito dell'immagine. Per eseguire l'override del
punto di ingresso predefinito e richiamare maven
o gradle
come punto di ingresso, specifica
mvn
o gradle
nel campo entrypoint
.
Il seguente file di configurazione di compilazione specifica entrypoint
per l'immagine maven
o gradle
e stampa la versione dello strumento di compilazione:
esperto
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
steps:
- name: gradle:5.6.2-jdk8
entrypoint: gradle
args: ['--version']
Configurazione di Java
build in corso...
Nella directory principale del progetto, crea un file di configurazione della build denominato
cloudbuild.yaml
.Esegui test:
maven
egradle
fornisconomaven test
egradle test
, che scarica le dipendenze, crea le applicazioni ed esegue eventuali test specificati nel codice sorgente. Il campoargs
di un passaggio di build prende un elenco di argomenti e li passa all'immagine a cui fa riferimento il camponame
.Nel file di configurazione della build, aggiungi
test
al campoargs
per richiamaretest
all'interno dimaven
egradle
:esperto
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['test']
Applicazione del pacchetto: per pacchettizzare l'applicazione in un file JAR per l'immagine
maven
, specifica il comandopackage
nel campoargs
. Il comandopackage
crea un file JAR in/workspace/target/
.Per pacchettizzare l'applicazione in un file JAR per l'immagine
gradle
, specifica il comandoassemble
nel campoargs
. Il comandoassemble
crea un file JAR inworkspace/build/libs
.Il seguente passaggio di build pacchettizza la tua applicazione Java:
esperto
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['assemble']
Containerizzare l'applicazione: Cloud Build fornisce un'immagine Docker predefinita che puoi utilizzare per containerizzare la tua applicazione Java. Per containerizzare la tua applicazione Java, nel file di configurazione della build:
- Aggiungi un campo
name
e specifica l'immagine Docker predefinita ingcr.io/cloud-builders/docker
. - Aggiungi un campo
args
e specifica gli argomentibuild
, tra cui il nome dell'immagine container da creare e il percorso dell'artefatto di build. - Aggiungi un campo
images
per eseguire il push dell'immagine container creata ad Artifact Registry e generare informazioni sulla provenienza della build. Se non utilizzi il campoimages
, Cloud Build non registrerà le informazioni sulla provenienza. Ad esempio, se utilizzi un passaggio di builddocker push
per caricare immagini in Artifact Registry, alla tua build non saranno associate informazioni sulla provenienza.
Il seguente passaggio di build containerizza la tua applicazione ed esegue il push dell'immagine container ad Artifact Registry, generando informazioni sulla provenienza delle build.
esperto
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=target/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
gradle
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=build/libs/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
Dove:
- location: la località a livello di una o più regioni del repository.
- project-id: l'ID del progetto Google Cloud.
- repository: il nome del tuo repository Artifact Registry.
- image: il nome dell'immagine container.
- build-artifact: il nome del file JAR creato dal passaggio di build.
- Aggiungi un campo
(Facoltativo) Attiva la provenienza per le build a livello di regione
Se utilizzi una build a livello di regione, aggiungi il campo
requestedVerifyOption
inoptions
del file di configurazione della build. Imposta il valore suVERIFIED
per attivare la generazione dei metadati di provenienza. Se non aggiungirequestedVerifyOption: VERIFIED
, Cloud Build genera la provenienza solo per le build globali.options: requestedVerifyOption: VERIFIED
Avvia la build: quando il file di configurazione della build è pronto, avvia la build inserendo il seguente comando nel terminale:
gcloud builds submit --region=REGION --config config-file-path source-directory
Dove:
- config-file-path: il percorso del file di configurazione della build. In questo esempio, il file di configurazione della build è denominato
cloudbuild.yaml
. - source-directory: il percorso o l'URL del codice sorgente.
REGION
: una delle regioni di build supportate.
Se non specifichi config-file-path e source-directory nel comando
gcloud builds submit
, Cloud Build presume che il file di configurazione e il codice sorgente si trovino nella directory di lavoro attuale.Una volta completata la build, puoi visualizzare i dettagli del repository in Artifact Registry.
Per proteggere la catena di fornitura del software, puoi anche visualizzare i metadati di provenienza della build e convalidare la provenienza.
- config-file-path: il percorso del file di configurazione della build. In questo esempio, il file di configurazione della build è denominato
Esempi di codice
Di seguito sono riportati alcuni repository di esempio che puoi utilizzare per creare app Java, ciascuno dei quali contiene un'applicazione di esempio e un file di configurazione di compilazione per creare e testare l'applicazione:
- maven-example: un'app Java e un file di configurazione di compilazione di esempio per creare e testare l'app con
mvn
. - gradle-example: un'app Java e un file di configurazione di compilazione di esempio per creare e testare l'app con
gradle
.
Passaggi successivi
- Scopri come visualizzare i risultati della build.
- Scopri come salvaguardare le build.
- Scopri come creare applicazioni Java autonome.
- Scopri come eseguire il deployment di un'applicazione su Cloud Run.
- Scopri come eseguire il deployment di un'applicazione su GKE.
- Scopri come risolvere gli errori di generazione.