Nesta página, explicamos como usar o Cloud Build para criar, testar e conteinerizar aplicativos baseados em Java, fazer upload das imagens de contêiner para o Artifact Registry e gerar a procedência do build.
Antes de começar
- Familiarize-se com a criação de aplicativos baseados em Java.
- Prepare seu projeto Java, incluindo um Dockerfile.
- Ter um repositório do Docker no Artifact Registry ou criar um novo repositório.
- Familiarize-se com a gravação de um arquivo de configuração do Cloud Build.
- Para executar os comandos gcloudnesta página, instale a Google Cloud CLI.
Como usar a imagem maven ou gradle
É possível configurar o Cloud Build para criar aplicativos Java usando a
imagem maven
ou a imagem gradle
do Docker Hub.
maven
Para executar suas tarefas na imagem maven, adicione uma etapa à configuração de build com os seguintes campos:
- name: defina o valor desse campo como- mavenou- maven:<tag>, em que a tag representa a versão. Se você não especificar a tag de imagem, o Cloud Build usará a imagem- latestpor padrão.
- entrypoint: a definição desse campo substitui o ponto de entrada padrão da imagem referenciada em- name. Defina o valor desse campo como- mvnpara invocar- mvncomo o ponto de entrada da etapa de build e execute comandos- mvn.
- args: o campo- argsde uma etapa de criação recebe uma lista de argumentos e os passa para a imagem referenciada pelo campo- name.
A etapa de build a seguir especifica o entrypoint para a imagem maven
marcada como 3.3-jdk-8 e imprime a versão da ferramenta de build:
steps:
- name: maven:3.3-jdk-8
  entrypoint: mvn
  args: ['--version']
gradle
Para executar suas tarefas na imagem gradle, adicione uma etapa à configuração de build com os seguintes campos:
- name: defina o valor desse campo como- gradleou- gradle:<tag>, em que a tag representa a versão. Se você não especificar a tag de imagem, o Cloud Build usará a imagem- latestpor padrão.
- entrypoint: a definição desse campo substitui o ponto de entrada padrão da imagem referenciada em- name. Defina o valor desse campo como- gradlepara invocar- gradlecomo o ponto de entrada da etapa de build e execute comandos- gradle.
- args: o campo- argsde uma etapa de criação recebe uma lista de argumentos e os passa para a imagem referenciada pelo campo- name.
A etapa de build a seguir especifica o entrypoint para a imagem gradle
marcada como 5.6.2-jdk8 e imprime a versão da ferramenta de build:
steps:
- name: gradle:5.6.2-jdk8
  entrypoint: gradle
  args: ['--version']
Como configurar builds Java
- No diretório raiz do projeto, crie um arquivo de configuração de build chamado - cloudbuild.yaml.
- Execute testes: - mavene- gradlefornecem- maven teste- gradle test, que fazem download de dependências, criam os aplicativos e executam quaisquer testes especificados no código-fonte. O campo- argsde uma etapa de criação recebe uma lista de argumentos e os transmite para a imagem referenciada pelo campo- name.- No seu arquivo de configuração de build, adicione - testao campo- argspara invocar- testem- mavene- 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']
- Empacote o aplicativo: para empacotar o aplicativo em um arquivo JAR para a imagem - maven, especifique o comando- packageno campo- args. O comando- packagecria um arquivo JAR em- /workspace/target/.- Para empacotar o aplicativo em um arquivo JAR para a imagem - gradle, especifique o comando- assembleno campo- args. O comando- assemblecria um arquivo JAR em- workspace/build/libs.- A etapa de criação a seguir empacota seu aplicativo 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']
- Contentorizar o aplicativo: o Cloud Build fornece uma imagem do Docker pré-criada que pode ser usada para contentorizar o aplicativo Java. Para contentorizar o aplicativo Java, no arquivo de configuração de build: - Adicione um campo namee especifique a imagem do Docker pré-criada emgcr.io/cloud-builders/docker.
- Adicione um campo argse especifique os argumentosbuild, incluindo o nome da imagem do contêiner a ser criada e o caminho para o artefato de criação.
- Adicione um campo imagespara enviar a imagem do contêiner criado ao Artifact Registry.
- Opcional: adicione - requestedVerifyOption: VERIFIEDno campo- optionsdo arquivo de configuração de build para ativar a geração de proveniência de Níveis da cadeia de suprimentos para artefatos de software (SLSA, na sigla em inglês).
 - A etapa de criação a seguir contentoriza seu aplicativo, envia a imagem do contêiner para o Artifact Registry e gera informações de procedência do 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']- Em que: - location: o local regional ou multirregional do repositório.
- project-id: o ID do projeto Google Cloud .
- repository: o nome do repositório do Artifact Registry.
- image: o nome da imagem do contêiner.
- build-artifact: o nome do arquivo JAR criado na etapa de versão.
 
- Adicione um campo 
- Inicie o build: quando o arquivo de configuração de build estiver pronto, inicie o build digitando o seguinte comando no terminal: - gcloud builds submit --region=REGION --config config-file-path source-directory- Em que: - config-file-path: o caminho para o arquivo de configuração da versão. Neste exemplo, o arquivo de configuração de build é denominado cloudbuild.yaml;
- source-directory: o caminho ou o URL do código-fonte.
- REGION: uma das regiões de build compatíveis.
 - Se você não especificar config-file-path e source-directory no comando - gcloud builds submit, o Cloud Build presumirá que o arquivo de configuração e o código-fonte estão no diretório de trabalho atual.- Depois que o build for concluído, você poderá acessar os detalhes do repositório no Artifact Registry. - Também é possível acessar os metadados de procedência do build e validar a procedência. 
- config-file-path: o caminho para o arquivo de configuração da versão. Neste exemplo, o arquivo de configuração de build é denominado 
Exemplos de código
Aqui estão alguns repositórios de exemplo que podem ser usados para criar aplicativos Java, cada um contendo um aplicativo de amostra e um arquivo de configuração de build para construir e testar esse aplicativo:
- maven-example: um aplicativo Java e um exemplo de arquivo de configuração de build para criar e testar o aplicativo com mvn.
- gradle-example: um aplicativo Java e um exemplo de arquivo de configuração de build para criar e testar o aplicativo com gradle.
A seguir
- Saiba como ver os resultados da build.
- Saiba como proteger builds.
- Saiba como criar aplicativos Java independentes.
- Saiba como implantar um aplicativo no Cloud Run.
- Saiba como implantar um aplicativo no GKE.
- Saiba como resolver erros de build.