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 obter uma lista de software e as versões pré-instaladas para JDK e Gradle, confira "Using GitHub-hosted runners".
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, consulte o Manual do Usuário 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. 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.
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 "Início rápido para GitHub Actions".
Adicione também esse fluxo de trabalho manualmente criando um arquivo no diretório .github/workflows
do repositório.
Observações:
- Esse fluxo de trabalho usa ações que não são certificadas por GitHub. Elas são fornecidas por terceiros e regidar por termos de serviço, política de privacidade e documentação de suporte separados.
- GitHub recomenda fixar ações em um SHA de confirmação. 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.
# Nome do fluxo de trabalho. O GitHub exibe os nomes dos fluxos de trabalho na guia "Ações" do repositório. Se você omitir `name`, o GitHub exibirá o caminho do arquivo de fluxo de trabalho em relação à raiz do repositório. name: Java CI # on: [push] # jobs: build: # <!-- This is a YAML comment for use in annotated code examples. --> # Você pode executar esse fluxo de trabalho usando 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. É possível alterar a chave `runs-on` para executar seus trabalhos em outro sistema operacional. # # Por exemplo, você pode usar os executores Windows hospedados no GitHub especificando `runs-on: windows-latest`. Ou você pode executar os executores macOS hospedados no GitHub usando `runs-on: macos-latest`. # # Você também pode executar tarefas em contêineres Docker ou fornecer um executor de auto-hospedagem que funciona na sua própria infraestrutura. Para obter mais informações, confira "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)". runs-on: ubuntu-latest # steps: # Esta etapa usa a ação `actions/checkout` para fazer download de uma cópia do repositório no executor. - uses: actions/checkout@v4 # Esta etapa usa a ação `actions/setup-java` para configurar o JDK do Eclipse Temurin (Java) 17 do Eclipse Adoptium. - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' # The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree. - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 # The "Build with Gradle" step does a build using the `gradle/gradle-build-action` action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see [`gradle/gradle-build-action`](https://github.com/gradle/gradle-build-action). - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: build
name: Java CI
Nome do fluxo de trabalho. O GitHub exibe os nomes dos fluxos de trabalho na guia "Ações" do repositório. Se você omitir name
, o GitHub exibirá o caminho do arquivo de fluxo de trabalho em relação à raiz do repositório.
on: [push]
jobs:
build:
runs-on: ubuntu-latest
Você pode executar esse fluxo de trabalho usando 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. É possível alterar a chave runs-on
para executar seus trabalhos em outro sistema operacional.
Por exemplo, você pode usar os executores Windows hospedados no GitHub especificando runs-on: windows-latest
. Ou você pode executar os executores macOS hospedados no GitHub usando runs-on: macos-latest
.
Você também pode executar tarefas em contêineres Docker ou fornecer um executor de auto-hospedagem que funciona na sua própria infraestrutura. Para obter mais informações, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".
steps:
- uses: actions/checkout@v4
Esta etapa usa a ação actions/checkout
para fazer download de uma cópia do repositório no executor.
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
Esta etapa usa a ação actions/setup-java
para configurar o JDK do Eclipse Temurin (Java) 17 do Eclipse Adoptium.
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
The "Build with Gradle" step does a build using the gradle/gradle-build-action
action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see gradle/gradle-build-action
.
# Nome do fluxo de trabalho. O GitHub exibe os nomes dos fluxos de trabalho na guia "Ações" do repositório. Se você omitir `name`, o GitHub exibirá o caminho do arquivo de fluxo de trabalho em relação à raiz do repositório.
name: Java CI
#
on: [push]
#
jobs:
build:
# <!-- This is a YAML comment for use in annotated code examples. -->
# Você pode executar esse fluxo de trabalho usando 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. É possível alterar a chave `runs-on` para executar seus trabalhos em outro sistema operacional.
#
# Por exemplo, você pode usar os executores Windows hospedados no GitHub especificando `runs-on: windows-latest`. Ou você pode executar os executores macOS hospedados no GitHub usando `runs-on: macos-latest`.
#
# Você também pode executar tarefas em contêineres Docker ou fornecer um executor de auto-hospedagem que funciona na sua própria infraestrutura. Para obter mais informações, confira "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)".
runs-on: ubuntu-latest
#
steps:
# Esta etapa usa a ação `actions/checkout` para fazer download de uma cópia do repositório no executor.
- uses: actions/checkout@v4
# Esta etapa usa a ação `actions/setup-java` para configurar o JDK do Eclipse Temurin (Java) 17 do Eclipse Adoptium.
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
# The "Build with Gradle" step does a build using the `gradle/gradle-build-action` action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see [`gradle/gradle-build-action`](https://github.com/gradle/gradle-build-action).
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
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'
, 'temurin'
e x64
.
steps: - uses: actions/checkout@v4 - name: Set up JDK 11 for x64 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
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.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Run the Gradle package task uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: -b ci.gradle package
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Run the Gradle package task
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
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 "Armazenar dados do fluxo de trabalho como 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
.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: build - uses: actions/upload-artifact@v3 with: name: Package path: build/libs
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/libs