Observação: Executores hospedados em GitHub não são atualmente compatíveis com GitHub Enterprise Server. Você pode ver mais informações sobre suporte futuro planejado no Itinerário público do GitHub.
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 memorizar arquivos e fazer o upload de artefatos a partir da execução de um fluxo de trabalho.
Os executores hospedados em GitHub têm uma cache de ferramentas com com software pré-instalado, que inclui kits de desenvolvimento Java (JDKs) e Gradle. Para obter uma lista de software e as versões pré-instaladas para JDK e Gradle, consulte "Especificações para executores hospedados em 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, consulte "Introdução" na documentação do Gradle.
Usar executores auto-hospedados no GitHub Enterprise Server
Ao usar ações de configuração (como actions/setup-LANGUAGE
) em GitHub Enterprise Server com executores auto-hospedados, você pode precisar configurar o armazenamento de ferramentas em executores que não possuem acesso � internet. Para obter mais informações, consulte "Configurar o cache da ferramenta em executores auto-hospedados sem acesso � internet".
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, consulte 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, consulte o início rápido "GitHub Actions".
Você também pode adicionar este fluxo de trabalho manualmente, criando um novo arquivo no diretório .github/workflows
do seu repositório.
# This workflow uses actions that are not certified by GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# documentação.
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
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@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
Este fluxo de trabalho executa os seguintes passos:
- O
checkout
faz o download de uma cópia do seu repositório no executor. - A etapa
setup-java
configura o Java 11 JDK pelo Adoptium. - 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.
- A etapa "Criação com Gradle" faz uma construção usando a ação
gradle/gradle-build-action
fornecida pela organização do Gradle em 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, consultenota/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
The starter workflow configures jobs to run on Linux, using the GitHub-hosted ubuntu-latest
runners. Você pode alterar a tecla runs-on
para executar seus trabalhos em um sistema operacional diferente. 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, consulte "Workflow syntax for GitHub Actions."
Especificando a versão e a arquitetura da JVM
The starter workflow sets up the PATH
to contain OpenJDK 8 for the x64 platform. Se você quiser usar uma versão diferente do Java, ou escolher uma arquitetura diferente (x64
or 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 fornecido pelo Adoptium para a plataforma x64, você pode usar a ação setup-java
e configurar os parâmetros java-version
, distribution
e arquitetura
para '11'
, 'adopt'
e x64
.
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11 for x64
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
architecture: x64
Para obter mais informações, consulte 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 tarbalho inicial executará a tarefa criar
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, é possível que você deseje executar a tarefa pacote
configurada no seu arquivo ci.gradle.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
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@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: -b ci.gradle package
Memorizar dependências
Ao usar executores hospedados em GitHub, as dependências de construção podem ser armazenadas em cache para acelerar a execução do seu fluxo de trabalho. Após uma execução bem-sucedida, a ação gradle/gradle-build-action
armazena em cache partes importantes do diretório inicial 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 ao usar a ação grades/gradle-build-action
. Para obter mais informações, consulte 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, consulte "Dados recorrentes do fluxo de trabalho que usam artefatos".
De modo geral, o Gradle cria arquivos de saída como JARs, EARs ou WARs no diretório build/libs
. Você pode fazer upload do conteúdo desse diretório usando a ação upload-artefact
.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
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@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
- uses: actions/upload-artifact@v2
with:
name: Package
path: build/libs