Nesta página, explicamos como usar o Cloud Build para criar, testar e conteinerizar aplicativos baseados em Java, fazer upload de imagens de contêiner para o Artifact Registry e gerar 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
. - Use um repositório do Docker no Artifact Registry ou crie um novo repositório.
- Familiarize-se com a gravação de um arquivo de configuração do Cloud Build.
- Para executar os comandos
gcloud
desta página, instale o Google Cloud CLI.
Como usar a imagem maven
ou gradle
É possível configurar o Cloud Build para criar aplicativos Java usando o
Imagem maven
ou a imagem gradle
usando o Docker Hub.
Para executar suas tarefas na imagem maven
ou gradle
, especifique o URL da imagem e o build marcado da imagem no campo name
do seu arquivo de configuração de build. Se você não especificar a tag de imagem, o Cloud Build usará a imagem latest
por padrão. O Cloud Build inicia a imagem especificada em name
usando o ponto de entrada padrão da imagem. Para substituir o ponto de entrada padrão e invocar maven
ou gradle
como um ponto de entrada, especifique mvn
ou gradle
no campo entrypoint
.
O seguinte arquivo de configuração de build especifica entrypoint
para a imagem maven
ou gradle
e imprime o build da ferramenta de build:
maven
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
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:
maven
egradle
fornecemmaven test
egradle test
, que fazem download de dependências, criam os aplicativos e executam quaisquer testes especificados no código-fonte. O campoargs
de uma etapa de criação recebe uma lista de argumentos e os transmite para a imagem referenciada pelo camponame
.No seu arquivo de configuração de build, adicione
test
ao campoargs
para invocartest
emmaven
egradle
: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 comandopackage
no campoargs
. O comandopackage
cria um arquivo JAR em/workspace/target/
.Para empacotar o aplicativo em um arquivo JAR para a imagem
gradle
, especifique o comandoassemble
no campoargs
. O comandoassemble
cria um arquivo JAR emworkspace/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']
Conteinerizar aplicativo: o Cloud Build fornece uma imagem do Docker pré-criada que pode ser usado para conteinerizar seu aplicativo Java. Para conteinerizar seu aplicativo Java, no seu arquivo de configuração de build:
- Adicione um campo
name
e especifique a imagem Docker pré-criada emgcr.io/cloud-builders/docker
. - Adicione um campo
args
e especifique os argumentosbuild
, incluindo o nome a imagem do contêiner a ser criada e o caminho para o artefato de compilação. - Adicione um campo
images
para enviar a imagem do contêiner criada para o Artifact Registry. Opcional: adicionar
requestedVerifyOption: VERIFIED
no campooptions
do arquivo de configuração de build para ativar Níveis da cadeia de suprimentos para artefatos de software (SLSA) geração de procedência.
A etapa de build a seguir conteineriza o aplicativo e envia o contêiner imagem 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 seu repositório.
- project-id: o ID do seu projeto do 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 com suporte.
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.Quando o build estiver concluído, você poderá conferir os detalhes do repositório. no Artifact Registry.
Também é possível conferir os metadados da 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.