Skip to main content

Criar e testar o Java com o Gradle

Você pode criar um fluxo de trabalho de integração contínua (CI) no GitHub Actions para criar e testar o seu projeto Java com o Gradle.

Introdução

Este guia mostra como criar um fluxo de trabalho que realiza a integração contínua (CI) para o seu projeto Java usando o sistema de criação do Gradle. O fluxo de trabalho que você criar permitirá que você veja quando commits em um pull request gerarão falhas de criação ou de teste em comparação com o seu branch-padrão. Essa abordagem pode ajudar a garantir que seu código seja sempre saudável. Você pode estender seu fluxo de trabalho de CI para arquivos de cache e carregar artefatos de uma execução de fluxo de trabalho.

Os executores hospedados no GitHub têm um cache de ferramentas com programas de software pré-instalados, que inclui os JDKs (Java Development Kits) e o Gradle. Para ver a lista de programas de software e as versões pré-instaladas do JDK e do Gradle, confira "Especificações dos executores hospedados no GitHub".

Pré-requisitos

Você deve estar familiarizado com o YAML e a sintaxe do GitHub Actions. Para obter mais informações, consulte:

Recomendamos que você tenha um entendimento básico da estrutura do Java e do Gradle. Para obter mais informações, confira Introdução na documentação do Gradle.

Usando o fluxo de trabalho inicial do Gradle

GitHub fornece um fluxo de trabalho inicial do Gradle que funcionará para a maioria dos projetos Java baseados no Gradle. Para obter mais informações, confira o fluxo de trabalho inicial do Gradle.

Para começar rapidamente, você pode escolher o fluxo de trabalho inicial pré-configurado do Gradle ao criar um novo fluxo de trabalho. Para obter mais informações, confira o "guia de início rápido do "GitHub Actions".

Adicione também esse fluxo de trabalho manualmente criando um arquivo no diretório .github/workflows do repositório.

YAML
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.

# O GitHub recomenda fixar ações em um SHA de commit.
# Para obter uma versão mais recente, você precisará atualizar o SHA.
# Você também pode fazer referência a uma marca ou branch, mas a ação pode ser alterada sem aviso.

name: Java CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Build with Gradle
        uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
        with:
          arguments: build

Este fluxo de trabalho realiza as etapas a seguir:

  1. A etapa checkout baixa uma cópia do repositório no executor.
  2. A etapa setup-java configura o JDK do Java 11 do Adoptium.
  3. A etapa "Validar o invólucro do Gradle" valida as somas de verificação dos arquivos JAR do Gradle Wrapper presentes na árvore de origem.
  4. A etapa "Build com o Gradle" faz um build usando a ação gradle/gradle-build-action fornecida pela organização Gradle no GitHub. A acção tem a preocupação de invocar o Gradle, de recolher resultados e de manter o estado de cache entre os trabalho. Para obter mais informações, consulte gradle/gradle-build-action.

Os fluxos de trabalho inicial padrão são excelentes pontos de partida ao criar seu fluxo de trabalho de criação e teste, e você pode personalizar o fluxo de trabalho inicial para atender às necessidades do seu projeto.

Executando em um sistema operacional diferente

O fluxo de trabalho inicial configura os trabalhos a serem executados no Linux usando os executores ubuntu-latest hospedados no GitHub. Você pode alterar a chave runs-on para executar seus trabalhos em outro sistema operacional. Por exemplo, você pode usar os GitHub-executores Windows hospedados.

runs-on: windows-latest

Ou, você pode executar nos GitHub-executores do macOS.

runs-on: macos-latest

Você também pode executar tarefas em contêineres Docker, ou você pode fornecer um executor auto-hospedado que funciona na sua própria infraestrutura. Para obter mais informações, confira "Sintaxe de fluxo de trabalho do GitHub Actions".

Especificando a versão e a arquitetura da JVM

O fluxo de trabalho inicial configura o PATH para conter OpenJDK 8 para a plataforma x64. Se você quiser usar uma versão diferente do Java, ou escolher uma arquitetura diferente (x64 ou x86), você pode usar a ação setup-java para escolher um ambiente de execução Java diferente.

Por exemplo, para usar a versão 11 do JDK fornecida pelo Adoptium para a plataforma x64, você poderá usar a ação setup-java e configurar os parâmetros java-version, distribution e architecture para '11', 'adopt' e x64.

YAML
steps:
  - uses: actions/checkout@v3
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v3
    with:
      java-version: '11'
      distribution: 'adopt'
      architecture: x64

Para obter mais informações, confira a ação setup-java.

Criar e testar seu código

Você pode usar os mesmos comandos usados localmente para criar e testar seu código.

O fluxo de trabalho inicial executará a tarefa build por padrão. Na configuração-padrão do Gradle, este comando irá baixar dependências, criar classes, executar testes e classes de pacotes em seu formato distribuível, como, por exemplo, um arquivo JAR.

Se você usa comandos diferentes para criar seu projeto ou se você desejar usar uma atividade diferente, você poderá especificá-los. Por exemplo, o ideal é executar a tarefa package configurada no arquivo ci.gradle.

YAML
steps:
  - uses: actions/checkout@v3
  - uses: actions/setup-java@v3
    with:
      java-version: '11'
      distribution: 'adopt'
  - name: Validate Gradle wrapper
    uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
  - name: Run the Gradle package task
    uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
    with:
      arguments: -b ci.gradle package

Memorizar dependências

Suas dependências de build podem ser armazenadas em cache para acelerar as execuções do fluxo de trabalho. Após uma execução bem-sucedida, o gradle/gradle-build-action armazena em cache partes importantes do diretório base do usuário do Gradle. Em trabalhos futuros, o cache será restaurado para que os scripts de compilação não precisem ser recalculados e as dependências não precisem ser baixadas a partir de repositórios remotos de pacotes.

O cache é habilitado por padrão quando a ação gradle/gradle-build-action é usada. Para obter mais informações, confira gradle/gradle-build-action.

Empacotar dados do fluxo de trabalho como artefatos

Após a sua criação ter sido criada com sucesso e os seus testes aprovados, é possível que você deseje fazer o upload dos Java resultantes como um artefato de criação. Isso armazenará os pacotes criados como parte da execução do fluxo de trabalho e permitirá que você faça o download desses pacotes. Os artefatos podem ajudá-lo a testar e depurar os pull requests no seu ambiente local antes de serem mesclados. Para obter mais informações, confira "Como persistir dados de fluxo de trabalho usando artefatos".

Em geral, o Gradle criará arquivos de saída como JARs, EARs ou WARs no diretório build/libs. Você pode carregar o conteúdo desse diretório usando a ação upload-artifact.

YAML
steps:
  - uses: actions/checkout@v3
  - uses: actions/setup-java@v3
    with:
      java-version: '11'
      distribution: 'adopt'
  - name: Validate Gradle wrapper
    uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
  - name: Build with Gradle
    uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
    with:
      arguments: build
  - uses: actions/upload-artifact@v3
    with:
      name: Package
      path: build/libs