Questa pagina spiega come utilizzare Cloud Build per creare, testare e containerizzare applicazioni basate su Java, caricare le immagini container in Artifact Registry e generare la provenienza della build.
Prima di iniziare
- Acquisisci familiarità con la creazione di applicazioni basate su Java.
- Prepara il progetto Java, incluso un
Dockerfile. - Crea un repository Docker in Artifact Registry o creane uno nuovo.
- Acquisisci familiarità con la scrittura di un file di configurazione di Cloud Build.
- Per eseguire i
gcloudcomandi in questa pagina, installa la Google Cloud CLI.
Utilizzare l'immagine maven o gradle
Puoi configurare Cloud Build per creare applicazioni Java utilizzando l'
maven immagine
o l'immagine gradle
da Docker Hub.
maven
Per eseguire le attività nell'immagine maven, aggiungi un passaggio alla configurazione della build con i seguenti campi:
name: imposta il valore di questo campo sumavenomaven:<tag>, dove il tag rappresenta la versione. Se non specifichi il tag dell'immagine, Cloud Build utilizza l'immaginelatestper impostazione predefinita.entrypoint: l'impostazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui fa riferimentoname. Imposta il valore di questo campo sumvnper richiamaremvncome punto di ingresso del passaggio di build ed eseguire i comandimvn.args: il campoargsdi un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il camponame.
Il seguente passaggio di build specifica entrypoint per l'immagine maven con tag 3.3-jdk-8 e stampa la versione dello strumento di build:
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
Per eseguire le attività nell'immagine gradle, aggiungi un passaggio alla configurazione della build con i seguenti campi:
name: imposta il valore di questo campo sugradleogradle:<tag>, dove il tag rappresenta la versione. Se non specifichi il tag dell'immagine, Cloud Build utilizza l'immaginelatestper impostazione predefinita.entrypoint: l'impostazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui fa riferimentoname. Imposta il valore di questo campo sugradleper richiamaregradlecome punto di ingresso del passaggio di build ed eseguire i comandigradle.args: il campoargsdi un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il camponame.
Il seguente passaggio di build specifica entrypoint per l'immagine gradle con tag 5.6.2-jdk8 e stampa la versione dello strumento di build:
steps:
- name: gradle:5.6.2-jdk8
entrypoint: gradle
args: ['--version']
Configurare le build Java
Nella directory principale del progetto, crea un file di configurazione della build denominato
cloudbuild.yaml.Esegui test:
mavenegradlefornisconomaven testegradle test, che scaricano le dipendenze, creano le applicazioni ed eseguono tutti i test specificati nel codice sorgente. Il campoargsdi un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il camponame.Nel file di configurazione della build, aggiungi
testal campoargsper richiamaretestall'interno dimavenegradle:maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['test']Pacchettizza l'applicazione: per pacchettizzare l'applicazione in un file JAR per l'immagine
maven, specifica il comandopackagenel campoargs. Il comandopackagecrea un file JAR in/workspace/target/.Per pacchettizzare l'applicazione in un file JAR per l'immagine
gradle, specifica il comandoassemblenel campoargs. Il comandoassemblecrea un file JAR inworkspace/build/libs.Il seguente passaggio di build pacchettizza l'applicazione Java:
maven
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']Containerizza l'applicazione: Cloud Build fornisce un' immagine Docker predefinita che puoi utilizzare per containerizzare l'applicazione Java. Per containerizzare l'applicazione Java, nel file di configurazione della build:
- Aggiungi un campo
namee specifica l'immagine Docker predefinita ingcr.io/cloud-builders/docker. - Aggiungi un campo
argse specifica gli argomentibuild, inclusi il nome dell'immagine container da creare e il percorso dell'artefatto di build. - Aggiungi un campo
imagesper eseguire il push dell'immagine container creata in Artifact Registry. (Facoltativo) Aggiungi
requestedVerifyOption: VERIFIEDall'interno del campooptionsnel file di configurazione della build per abilitare la generazione della provenienza Supply-chain Levels for Software Artifacts (SLSA).
Il seguente passaggio di build containerizza l'applicazione, esegue il push dell'immagine container in Artifact Registry e genera informazioni sulla provenienza della build:
maven
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à regionale o multiregionale per il repository.
- project-id: l'ID del progetto. Google Cloud
- repository: il nome del repository Artifact Registry.
- image: il nome dell'immagine container.
- build-artifact: il nome del file JAR creato dal passaggio di build.
- Aggiungi un campo
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-directoryDove:
- config-file-path: il percorso del file di configurazione della build. In questo esempio, il file di configurazione della build si chiama
cloudbuild.yaml. - source-directory: il percorso o l'URL del codice sorgente.
REGION: una delle regioni di build supportate.
Se non specifichi un config-file-path e un source-directory nel comando
gcloud builds submit, Cloud Build presuppone che il file di configurazione e il codice sorgente si trovino nella directory di lavoro corrente.Al termine della build, puoi visualizzare i dettagli del repository in Artifact Registry.
Puoi anche visualizzare i metadati della 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 si chiama
Esempi di codice
Ecco alcuni repository di esempio che puoi utilizzare per creare app Java, ognuno dei quali contiene un'applicazione di esempio e un file di configurazione della build per creare e testare l'applicazione:
- maven-example: un'app Java e un file di configurazione della build di esempio per creare e testare
l'app con
mvn. - gradle-example: un'app Java e un file di configurazione della build di esempio per creare e testare
l'app con
gradle.
Passaggi successivi
- Scopri come visualizzare i risultati della build.
- Scopri come proteggere 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 build.