Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa pagina spiega come utilizzare Cloud Build per creare, testare e eseguire il containerizzazione di applicazioni basate su Java, caricare le immagini dei container in Artifact Registry e generare la provenienza della build.
Prima di iniziare
Devi conoscere la creazione di applicazioni basate su Java.
Prepara il tuo progetto Java, incluso un Dockerfile.
Avere un repository Docker in Artifact Registry o crearne uno nuovo.
Per eseguire i comandi gcloud in questa pagina, installa
Google Cloud CLI.
Utilizzare l'immagine maven o gradle
Puoi configurare Cloud Build per creare applicazioni Java utilizzando l'immagine maven o l'immagine gradle da Docker Hub.
maven
Per eseguire le attività nell'immagine maven, aggiungi un passaggio alla configurazione di compilazione 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 immagine, Cloud Build
utilizza l'immagine latest per impostazione predefinita.
entrypoint: l'impostazione di questo campo sostituisce il punto di contatto predefinito dell'immagine a cui si fa riferimento in name. Imposta il valore di questo campo su mvn per invocare mvn come punto di contatto del passaggio di compilazione ed eseguire i comandi mvn.
args: il campo args di un passaggio di compilazione prende un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.
Il seguente passaggio di compilazione specifica il entrypoint per l'immagine maven
taggata come 3.3-jdk-8 e stampa la versione dello strumento di compilazione:
Per eseguire le attività nell'immagine gradle, aggiungi un passaggio alla configurazione di compilazione 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 immagine, Cloud Build
utilizza l'immagine latest per impostazione predefinita.
entrypoint: l'impostazione di questo campo sostituisce il punto di contatto predefinito dell'immagine a cui si fa riferimento in name. Imposta il valore di questo campo su gradle per invocare gradle come punto di contatto del passaggio di compilazione ed eseguire i comandi gradle.
args: il campo args di un passaggio di compilazione prende un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.
Il seguente passaggio di compilazione specifica il entrypoint per l'immagine gradle
taggata come 5.6.2-jdk8 e stampa la versione dello strumento di compilazione:
Nella directory principale del progetto, crea un file di configurazione della build denominato
cloudbuild.yaml.
Esegui test: maven e gradle forniscono maven test e gradle test,
che scaricano le dipendenze, creano le applicazioni ed eseguono eventuali test
specificati nel codice sorgente. Il campo args di un passaggio di compilazione prende un
elenco di argomenti e li passa all'immagine a cui fa riferimento il campo name.
Nel file di configurazione di compilazione, aggiungi test al campo args per richiamare test
all'interno di maven e gradle:
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
genera un file JAR in workspace/build/libs.
Il seguente passaggio di compilazione esegue il pacchettizzazione dell'applicazione Java:
Containerizza l'applicazione: Cloud Build fornisce un'immagine Docker predefinita che puoi utilizzare per containerizzare l'applicazione Java. Per eseguire il containerizzazione della 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, inclusi il nome
dell'immagine container da creare e il percorso dell'elemento della build.
Aggiungi un campo images per eseguire il push dell'immagine container compilata in Artifact Registry.
Il seguente passaggio di compilazione esegue il containerizzazione dell'applicazione, esegue il push dell'immagine del container in Artifact Registry e genera informazioni sull'origine della compilazione:
config-file-path: il percorso del file di configurazione di compilazione. In questo esempio, il file di configurazione di compilazione è denominato cloudbuild.yaml.
source-directory: il percorso o l'URL del codice sorgente.
Se non specifichi config-file-path e 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.
Ecco alcuni esempi di repository che puoi utilizzare per creare app Java, ognuno dei quali contiene un'applicazione di esempio e un file di configurazione della build per compilare e testare quell'applicazione:
maven-example: un'app Java e un file di configurazione di build di esempio per compilare e testare
l'app con mvn.
gradle-example: un'app Java e un file di configurazione di compilazione di esempio per compilare e testare
l'app con gradle.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[[["\u003cp\u003eCloud Build can be used to build, test, and containerize Java applications using \u003ccode\u003emaven\u003c/code\u003e or \u003ccode\u003egradle\u003c/code\u003e images from Docker Hub.\u003c/p\u003e\n"],["\u003cp\u003eTo configure a Java build, a \u003ccode\u003ecloudbuild.yaml\u003c/code\u003e file should be created to define steps for testing, packaging, and containerizing the application.\u003c/p\u003e\n"],["\u003cp\u003eThe process includes using \u003ccode\u003emvn test\u003c/code\u003e or \u003ccode\u003egradle test\u003c/code\u003e for testing, \u003ccode\u003emvn package\u003c/code\u003e or \u003ccode\u003egradle assemble\u003c/code\u003e for packaging, and a prebuilt Docker image for containerization.\u003c/p\u003e\n"],["\u003cp\u003eAfter containerization, the container image can be uploaded to Artifact Registry, and build provenance can be generated for enhanced security.\u003c/p\u003e\n"],["\u003cp\u003eBuilds are initiated with the \u003ccode\u003egcloud builds submit\u003c/code\u003e command, and completed builds can be viewed in Artifact Registry, as well as detailed information on the build provenance metadata.\u003c/p\u003e\n"]]],[],null,["# Build, test, and containerize Java applications\n\nThis page explains how to use Cloud Build to build, test, and\ncontainerize Java-based applications, upload your container images to\nArtifact Registry, and generate build provenance.\n\nBefore you begin\n----------------\n\n- Be familiar with creating Java-based applications.\n- Have your Java project ready, including a `Dockerfile`.\n- Have a Docker repository in Artifact Registry, or [create a new repository](/artifact-registry/docs/repositories/create-repos).\n- Be familiar with [how to write a Cloud Build configuration file](/build/docs/build-config).\n- To run the `gcloud` commands in this page, install the [Google Cloud CLI](/sdk).\n\nUsing the `maven` or `gradle` image\n-----------------------------------\n\nYou can configure Cloud Build to build Java applications using the\n[`maven` image](https://hub.docker.com/_/maven)\nor the [`gradle` image](https://hub.docker.com/_/gradle)\nfrom Docker Hub. \n\n### maven\n\nTo execute your tasks in the `maven` image, add a step to your build config with the following fields:\n\n- `name`: Set the value of this field to `maven` or `maven:\u003ctag\u003e`, where the tag represents the version. If you don't specify the image tag, Cloud Build uses the `latest` image by default.\n- `entrypoint`: Setting this field overrides the default entry point of the image referenced in `name`. Set the value of this field to `mvn` to invoke `mvn` as the entrypoint of the build step and run `mvn` commands.\n- `args`: The `args` field of a build step takes a list of arguments and passes them to the image referenced by the `name` field.\n\nThe following build step specifies the `entrypoint` for the `maven` image\ntagged as `3.3-jdk-8` and prints the build tool version: \n\n steps:\n - name: maven:3.3-jdk-8\n entrypoint: mvn\n args: ['--version']\n\n### gradle\n\nTo execute your tasks in the `gradle` image, add a step to your build config with the following fields:\n\n- `name`: Set the value of this field to `gradle` or `gradle:\u003ctag\u003e`, where the tag represents the version. If you don't specify the image tag, Cloud Build uses the `latest` image by default.\n- `entrypoint`: Setting this field overrides the default entry point of the image referenced in `name`. Set the value of this field to `gradle` to invoke `gradle` as the entrypoint of the build step and run `gradle` commands.\n- `args`: The `args` field of a build step takes a list of arguments and passes them to the image referenced by the `name` field.\n\nThe following build step specifies the `entrypoint` for the `gradle` image\ntagged as `5.6.2-jdk8` and prints the build tool version: \n\n steps:\n - name: gradle:5.6.2-jdk8\n entrypoint: gradle\n args: ['--version']\n\nConfiguring `Java` builds\n-------------------------\n\n1. In your project root directory, create a build config file named\n `cloudbuild.yaml`.\n\n2. **Run tests** : `maven` and `gradle` provide `maven test` and `gradle test`,\n which downloads dependencies, builds the applications, and runs any tests\n specified in your source code. The `args` field of a build step takes a\n list of arguments and passes them to the image referenced by the `name` field.\n\n In your build config file, add `test` to the `args` field to invoke `test`\n within `maven` and `gradle`: \n\n ### maven\n\n steps:\n - name: maven:3.3-jdk-8\n entrypoint: mvn\n args: ['test']\n\n ### gradle\n\n steps:\n - name: gradle:5.6.2-jdk8\n entrypoint: gradle\n args: ['test']\n\n3. **Package application** : To package your application into a JAR file\n for your `maven` image, specify the `package` command in the `args` field.\n The `package` command builds a JAR file in `/workspace/target/`.\n\n To package your application into a JAR file for your `gradle` image,\n specify the `assemble` command in the `args` field. The `assemble` command\n builds a JAR file in `workspace/build/libs`.\n\n The following build step packages your Java application: \n\n ### maven\n\n steps:\n - name: maven:3.3-jdk-8\n entrypoint: mvn\n args: ['package','-Dmaven.test.skip=true']\n\n | **Note:** The `package` command re-runs tests. Adding `-Dmaven.test.skip=true` to the `args` field will skip tests.\n\n ### gradle\n\n steps:\n - name: gradle:5.6.2-jdk8\n entrypoint: gradle\n args: ['assemble']\n\n4. **Containerize application** : Cloud Build provides a\n [prebuilt Docker image](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/docker)\n that you can use to containerize your Java application. To containerize your\n Java application, in your build config file:\n\n - Add a `name` field and specify the prebuilt Docker image at `gcr.io/cloud-builders/docker`.\n - Add an `args` field and specify the `build` arguments, including the name of the container image to build, and the path to your build artifact.\n - Add an `images` field to push the built container image to Artifact Registry.\n - Optional: Add [`requestedVerifyOption: VERIFIED`](/build/docs/build-config-file-schema#options)\n within the `options` field in your build config file to enable\n [Supply chain Levels for Software Artifacts (SLSA)](https://slsa.dev/)\n provenance generation.\n\n | **Note:** If you use a `docker push` build step to upload images to Artifact Registry rather than using the `images` field, then your build won't have provenance information.\n\n The following build step containerizes your application, pushes your container\n image to Artifact Registry, and generates build provenance information: \n\n ### maven\n\n steps:\n - name: gcr.io/cloud-builders/docker\n args: ['build', '-t', '\u003cvar translate=\"no\"\u003elocation\u003c/var\u003e-docker.pkg.dev/\u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e/\u003cvar translate=\"no\"\u003erepository\u003c/var\u003e/\u003cvar translate=\"no\"\u003eimage\u003c/var\u003e', '--build-arg=JAR_FILE=target/\u003cvar translate=\"no\"\u003ebuild-artifact\u003c/var\u003e', '.']\n images: ['\u003cvar translate=\"no\"\u003elocation\u003c/var\u003e-docker.pkg.dev/\u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e/\u003cvar translate=\"no\"\u003erepository\u003c/var\u003e/\u003cvar translate=\"no\"\u003eimage\u003c/var\u003e']\n\n ### gradle\n\n steps:\n - name: gcr.io/cloud-builders/docker\n args: ['build', '-t', '\u003cvar translate=\"no\"\u003elocation\u003c/var\u003e-docker.pkg.dev/\u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e/\u003cvar translate=\"no\"\u003erepository\u003c/var\u003e/\u003cvar translate=\"no\"\u003eimage\u003c/var\u003e', '--build-arg=JAR_FILE=build/libs/\u003cvar translate=\"no\"\u003ebuild-artifact\u003c/var\u003e', '.']\n images: ['\u003cvar translate=\"no\"\u003elocation\u003c/var\u003e-docker.pkg.dev/\u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e/\u003cvar translate=\"no\"\u003erepository\u003c/var\u003e/\u003cvar translate=\"no\"\u003eimage\u003c/var\u003e']\n\n Where:\n - \u003cvar translate=\"no\"\u003elocation\u003c/var\u003e: the regional or multi-regional location for your repository.\n - \u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e: the ID of your Google Cloud project.\n - \u003cvar translate=\"no\"\u003erepository\u003c/var\u003e: the name of your repository Artifact Registry.\n - \u003cvar translate=\"no\"\u003eimage\u003c/var\u003e: the name of your container image.\n - \u003cvar translate=\"no\"\u003ebuild-artifact\u003c/var\u003e: the name of your JAR file created from your build step.\n5. **Start your build**: When you have your build config\n file ready, start your build by entering the following command in your\n terminal:\n\n gcloud builds submit --region=\u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e --config \u003cvar translate=\"no\"\u003econfig-file-path\u003c/var\u003e \u003cvar translate=\"no\"\u003esource-directory\u003c/var\u003e\n\n Where:\n - \u003cvar translate=\"no\"\u003econfig-file-path\u003c/var\u003e: the path to your build config file. In this example, the build config file is named `cloudbuild.yaml`.\n - \u003cvar translate=\"no\"\u003esource-directory\u003c/var\u003e: the path or URL to your source code.\n - \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e: one of the [supported build regions](/build/docs/locations).\n\n If you don't specify a \u003cvar translate=\"no\"\u003econfig-file-path\u003c/var\u003e and \u003cvar translate=\"no\"\u003esource-directory\u003c/var\u003e\n in the `gcloud builds submit` command, Cloud Build assumes that the\n config file and the source code are in the current working directory.\n\n Once your build completes, you can [view repository details](/artifact-registry/docs/repositories/list-repos)\n in Artifact Registry.\n\n You can also [view build provenance metadata](/build/docs/securing-builds/generate-validate-build-provenance#view) and [validate provenance](/build/docs/securing-builds/generate-validate-build-provenance#validate_provenance).\n\nCode examples\n-------------\n\nHere are some example repositories you can use to build Java apps, each of\nwhich contain a sample application and a build config file to build and test\nthat application:\n\n- [maven-example](https://github.com/GoogleCloudPlatform/cloud-build-samples/tree/main/maven-example): A Java app and an example build config file to build and test the app with `mvn`.\n- [gradle-example](https://github.com/GoogleCloudPlatform/cloud-build-samples/tree/main/gradle-example): A Java app and an example build config file to build and test the app with `gradle`.\n\nWhat's next\n-----------\n\n- Learn how to [view build results](/build/docs/view-build-results).\n- Learn how to [safeguard builds](/software-supply-chain-security/docs/safeguard-builds).\n- Learn how to [build standalone Java applications](/build/docs/building/build-containerize-java).\n- Learn how to [deploy an application on Cloud Run](/build/docs/deploying-builds/deploy-cloud-run).\n- Learn how to [deploy an application on GKE](/build/docs/building/build/docs/deploying-builds/deploy-gke).\n- Learn how to [troubleshoot build errors](/build/docs/troubleshooting)."]]