Crea, testa e containerizza applicazioni Java

Questa pagina spiega come utilizzare Cloud Build per creare, testare e containerizzare applicazioni basate su Java, caricare immagini container su Artifact Registry e generare la provenienza delle build.

Prima di iniziare

Utilizzo dell'immagine maven o gradle

Puoi configurare Cloud Build per creare applicazioni Java utilizzando maven immagine o gradle immagine da Docker Hub.

Per eseguire le attività nell'immagine maven o gradle, specifica l'URL dell'elemento e la versione con tag dell'immagine nel campo name della build di configurazione del deployment. Se non specifichi un tag immagine, Cloud Build utilizza l'immagine latest per impostazione predefinita. Cloud Build avvia l'immagine specificato in name utilizzando il punto di ingresso predefinito dell'immagine. Per eseguire l'override per richiamare maven o gradle come punto di ingresso, specifica mvn o gradle nel campo entrypoint.

Il seguente file di configurazione di compilazione specifica il entrypoint per maven o gradle e stampa la versione dello strumento di creazione:

Maven

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 root del progetto, crea un file di configurazione di compilazione 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 specificato nel codice sorgente. Il campo args di un passaggio di build richiede un 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 in 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. Applicazione del pacchetto: per pacchettizzare la tua 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 la tua 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:

    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. Applicazione containerizzata: Cloud Build fornisce una immagine Docker predefinita che puoi usare per containerizzare la tua applicazione Java. Per containerizzare 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, incluso il nome l'immagine container da creare e il percorso dell'artefatto della build.
    • Aggiungi un campo images per eseguire il push dell'immagine container creata ad Artifact Registry.
    • (Facoltativo) Aggiungi requestedVerifyOption: VERIFIED nel campo options del file di configurazione della build per abilitare Livelli della catena di fornitura per artefatti software (SLSA) della provenienza.

    Il seguente passaggio di build containerizza la tua applicazione ed esegue il push del 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à a una o più regioni del tuo repository.
    • project-id: l'ID del tuo progetto Google Cloud.
    • repository: il nome del repository Artifact Registry.
    • image: il nome dell'immagine container.
    • build-artifact: il nome del file JAR creato dalla tua build passaggio.
  5. Avvia la build: una volta ottenuta la configurazione della build pronto, avvia la build inserendo il comando seguente 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 di compilazione è 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 presuppone che di configurazione e il codice sorgente si trovano nella directory di lavoro attuale.

    Una volta completata la build, puoi visualizzare i dettagli del repository in Artifact Registry.

    Puoi anche visualizzare i metadati di provenienza della build e convalidare la provenienza.

Esempi di codice

Ecco alcuni repository di esempio che puoi utilizzare per creare app Java, che contengono un'applicazione di esempio e un file di configurazione di compilazione per creare e testare quell'applicazione:

  • maven-example: un'app Java e un file di configurazione di compilazione di esempio per la creazione e il test l'app con mvn.
  • gradle-example: un'app Java e un file di configurazione di compilazione di esempio per la creazione e il test l'app con gradle.

Passaggi successivi