Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.
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 a ferramenta de gerenciamento de projeto do software Maven. 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 carregar artefatos de uma execução do 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 Maven. Para ver a lista de programas de software e as versões pré-instaladas do JDK e do Maven, 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 Maven. Para obter mais informações, confira o Guia de Introdução do Maven na documentação do Maven.
Usar executores auto-hospedados no GitHub Enterprise Server
Ao usar ações de instalação (como actions/setup-LANGUAGE
) no GitHub Enterprise Server com executores auto-hospedados, talvez seja necessário configurar o cache de ferramentas nos executores que não têm acesso � Internet. Para obter mais informações, confira "Como configurar o cache de ferramentas em executores auto-hospedados sem acesso � Internet".
Usando o fluxo de trabalho inicial do Maven
GitHub fornece um fluxo de trabalho inicial do Maven que funcionará para a maioria dos projetos Java baseados no Maven. Para obter mais informações, confira o fluxo de trabalho inicial do Maven.
Para começar rapidamente, você pode escolher o fluxo de trabalho inicial pré-configurado do Maven 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.
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: Build with Maven
run: mvn --batch-mode --update-snapshots package
Este fluxo de trabalho realiza as etapas a seguir:
- A etapa
checkout
baixa uma cópia do repositório no executor. - A etapa
setup-java
configura o JDK do Java 11 do Adoptium. - A etapa "Build com o Maven" executa o destino
package
do Maven no modo não interativo para garantir que o código seja compilado, que os testes sejam aprovados e que um pacote possa ser criado.
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
.
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, 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á o destino package
por padrão. Na configuração-padrão do Maven, este comando fará o download das 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 desejar usar um alvo diferente, você poderá especificá-los. Por exemplo, o ideal é executar o destino verify
configurado em um arquivo pom-ci.xml.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Run the Maven verify phase
run: mvn --batch-mode --update-snapshots verify
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 Maven criará arquivos de saída como JARs, EARs ou WARs no diretório target
. Para fazer o upload como artefatos, você pode copiá-los em um novo diretório que contém artefatos a serem subidos. Por exemplo, você pode criar um diretório chamado staging
. Em seguida, você pode carregar o conteúdo desse diretório usando a ação upload-artifact
.
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v2
with:
name: Package
path: staging