Crea, testa e containerizza applicazioni Java

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

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 su maven o maven:<tag>, dove il tag rappresenta la versione. Se non specifichi il tag dell'immagine, Cloud Build utilizza l'immagine latest per impostazione predefinita.
  • entrypoint: l'impostazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui fa riferimento name. Imposta il valore di questo campo su mvn per richiamare mvn come punto di ingresso del passaggio di build ed eseguire i comandi mvn.
  • args: il campo args di un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.

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 su gradle o gradle:<tag>, dove il tag rappresenta la versione. Se non specifichi il tag dell'immagine, Cloud Build utilizza l'immagine latest per impostazione predefinita.
  • entrypoint: l'impostazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui fa riferimento name. Imposta il valore di questo campo su gradle per richiamare gradle come punto di ingresso del passaggio di build ed eseguire i comandi gradle.
  • args: il campo args di un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.

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

  1. Nella directory principale del progetto, crea un file di configurazione della build denominato cloudbuild.yaml.

  2. Esegui test: maven e gradle forniscono maven test e gradle test, che scaricano le dipendenze, creano le applicazioni ed eseguono tutti i test specificati nel codice sorgente. Il campo args di un passaggio di build accetta un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.

    Nel file di configurazione della build, aggiungi test al campo args per richiamare test all'interno di maven e gradle:

    maven

    steps:
    - name: maven:3.3-jdk-8
      entrypoint: mvn
      args: ['test']
    

    gradle

    steps:
    - name: gradle:5.6.2-jdk8
      entrypoint: gradle
      args: ['test']
    
  3. Pacchettizza l'applicazione: per pacchettizzare l'applicazione in un file JAR per l'immagine maven, specifica il comando package nel campo args. Il comando package crea un file JAR in /workspace/target/.

    Per pacchettizzare l'applicazione in un file JAR per l'immagine gradle, specifica il comando assemble nel campo args. Il comando assemble crea un file JAR in workspace/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']
    
  4. 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 name e specifica l'immagine Docker predefinita in gcr.io/cloud-builders/docker.
    • Aggiungi un campo args e specifica gli argomenti build, inclusi 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 in Artifact Registry.
    • (Facoltativo) Aggiungi requestedVerifyOption: VERIFIED all'interno del campo options nel 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.
  5. 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 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.

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