Crea, testa e containerizza le applicazioni Java

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

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...

  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 scarica le dipendenze, crea le applicazioni ed esegue eventuali test specificati nel codice sorgente. Il campo args di un passaggio di build prende 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:

    esperto

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

    gradle

     steps:
     - name: gradle:5.6.2-jdk8
       entrypoint: gradle
       args: ['test']
    
  3. Applicazione del pacchetto: 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 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']
    
  4. 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 in gcr.io/cloud-builders/docker.
    • Aggiungi un campo args e specifica gli argomenti build, 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 campo images, Cloud Build non registrerà le informazioni sulla provenienza. Ad esempio, se utilizzi un passaggio di build docker 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.
  5. (Facoltativo) Attiva la provenienza per le build a livello di regione

    Se utilizzi una build a livello di regione, aggiungi il campo requestedVerifyOption in options del file di configurazione della build. Imposta il valore su VERIFIED per attivare la generazione dei metadati di provenienza. Se non aggiungi requestedVerifyOption: VERIFIED, Cloud Build genera la provenienza solo per le build globali.

    options:
      requestedVerifyOption: VERIFIED
    
  6. 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.

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