Esta versão do GitHub Enterprise foi descontinuada em 2021-09-23. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

Publicar pacotes Java com Maven

Você pode usar o Maven para publicar pacotes Java para um registro como parte do seu fluxo de trabalho de integração contínua (CI).

Observação: GitHub Actions estava disponível para GitHub Enterprise Server 2.22 como um beta limitado. O beta terminou. GitHub Actions está agora geralmente disponível em GitHub Enterprise Server 3.0 ou posterior. Para obter mais informações, consulte as observações sobre a versão GitHub Enterprise Server 3.0.


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 publica pacotes Java no GitHub Package Registry e no Maven Central Repository. Com um único fluxo de trabalho, você pode publicar pacotes em um único repositório ou em vários repositórios.

Pré-requisitos

Recomendamos que você tenha um entendimento básico dos arquivos de fluxo de trabalho e das opções de configuração. Para obter mais informações, consulte "Aprenda GitHub Actions".

Para obter mais informações sobre a criação de um fluxo de trabalho de CI para seu projeto Java com Maven, consulte "Criando e testando o Java com Maven"

Você também pode achar útil ter um entendimento básico do seguinte:

Sobre a configuração do pacote

Os campos groupId e artefactId no arquivo x-id="4">pom.xml criam a um identificador exclusivo para o seu pacote que os registros usam para vincular o seu pacote a um registro. Para obter mais informações, consulte Guia para fazer o upload de artefatos no Repositório Central na documentação do Apache Maven.

O arquivo pom.xml também contém a configuração para os repositórios de gerenciamento de distribuição nos quais o Maven implementará pacotes. Cada repositório deve ter um nome e uma URL de implementação. A autenticação para estes repositórios pode ser configurada no arquivo .m2/settings.xml no diretório inicial do usuário que está executando o Maven.

É possível usar a ação de setup-java para configurar o repositório de imeplementação, bem como a autenticação para esse repositório. Para obter mais informações, consulte setup-java.

Publicar pacotes no Repositório Central do Maven

Cada vez que você criar uma nova versão, você poderá acionar um fluxo de trabalho para publicar o seu pacote. O fluxo de trabalho no exemplo abaixo é executado quando o evento versão é acionado com o tipo criado. O fluxo de trabalho publica o pacote no Repositório Central Maven se o teste de CI for aprovado. Para obter mais informações sobre o evento da versão, consulte "Eventos que acionam fluxos de trabalho".

Neste fluxo de trabalho, você pode usar a ação setup-java. Esta ação instala uma determinada versão do JDK no PATH, mas também define settings.xml do Maven para publicação de pacotes. Por padrão, o arquivo de configurações será definido como GitHub Package Registry. No entanto, ele pode ser configurado para implementar outro registro de pacote, como, por exemplo, o Repositório Central do Maven. Se você já tem um repositório de gerenciamento de distribuição configurado em pom.xml, você poderá especificar esse id durante a chamada da ação setup-java.

Por exemplo, se você estava implantando no Repositório Central do Maven por meio do projeto de hospedagem OSSRH, seu pom.xml poderia especificar um repositório de gerenciamento de distribuição com o id de ossrh.

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>ossrh</id>
      <name>Central Repository OSSRH</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
</project>

Com esta configuração, é possível criar um fluxo de trabalho que publique seu pacote no Repositório Central do Maven especificando o id do gerenciamento do repositório para a ação setup-java. Você também deverá fornecer variáveis de ambiente que contenham o nome de usuário e senha para fazer a autenticação no repositório.

Na etapa de implementação, você deverá definir as variáveis de ambiente para o nome de usuário com o qual deseja fazer a autenticação no repositório e para um segredo que você configurou com a senha ou token para autenticação. Para obter mais informações, consulte "Criando e usando segredos encriptados".

YAML
name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish package
        run: mvn --batch-mode deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

Este fluxo de trabalho executa os seguintes passos:

  1. Verifica uma cópia do repositório do projeto.

  2. Configura o Java JDK e o arquivo settings.xml do Maven para adicionar autenticação ao repositório ossrh usando as variáveis de ambiente MAVEN_USERNAME e MAVEN_PASSWORD.

  3. Executa o comando mvn --batch-mode para publicar no repositório ossrh. A variável de ambiente MAVEN_USERNAME será definida com o conteúdo do seu segredo OSSRH_USERNAME, e a variável de ambiente MAVEN_PASSWORD será definida com o conteúdo do seu segredo OSSRH_TOKEN.

    Para obter mais informações sobre o uso de segredos no seu fluxo de trabalho, consulte "Criando e usando segredos encriptados".

Publicar pacotes em GitHub Package Registry

Cada vez que você criar uma nova versão, você poderá acionar um fluxo de trabalho para publicar o seu pacote. O fluxo de trabalho no exemplo abaixo é executado quando o evento versão é acionado com o tipo criado. O fluxo de trabalho publica o pacote em GitHub Package Registry se o teste de CI for aprovado. Para obter mais informações sobre o evento da versão, consulte "Eventos que acionam fluxos de trabalho".

Neste fluxo de trabalho, você pode usar a ação setup-java. Esta ação instala a versão determinada do JDK no PATH, e também configura settings.xml do Maven para a publicação GitHub Package Registry. O settings.xml gerado define a autenticação para um servidor com um id do github, usando a variável de ambiente GITHUB_ACTOR como o nome de usuário e a variável de ambiente GITHUB_TOKEN como a senha. A variável de ambiente GITHUB_TOKEN foi atribuída ao valor do segredo especial GITHUB_TOKEN.

O segredo GITHUB_TOKEN é definido como um token de acesso para o repositório toda vez que um trabalho de um fluxo de trabalho for iniciado. tem permissões de leitura e gravação para pacotes no repositório em que o fluxo de trabalho é executado. Para obter mais informações, consulteEfetuar a autenticação com o GITHUB_TOKEN".

Para um projeto baseado no Maven, você pode usar essas configurações ao criar um repositório de distribuição no seu arquivo pom.xml com um id do github que aponta para seu ponto final GitHub Package Registry.

Por exemplo, se sua organização é denominada "octocat" e seu repositório é denominado "hello-world", a configuração do GitHub Package Registry no pom.xml será parecida ao exemplo abaixo.

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/octocat/hello-world</url>
    </repository>
  </distributionManagement>
</project>

Com esta configuração, você pode criar um fluxo de trabalho que publica seu pacote em GitHub Package Registry, fazendo uso do settings.xml gerado automaticamente.

YAML
name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish package
        run: mvn --batch-mode deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este fluxo de trabalho executa os seguintes passos:

  1. Verifica uma cópia do repositório do projeto.

  2. Configura o Java JDK e também configura automaticamente o arquivo settings.xml do Maven para adicionar autenticação para o repositório do github do Maven para usar a variável de ambiente GITHUB_TOKEN.

  3. Executa o comando mvn --batch-mode para publicar em GitHub Package Registry. A variável de ambiente GITHUB_TOKEN será definida com o conteúdo do segredo GITHUB_TOKEN.

    Para obter mais informações sobre o uso de segredos no seu fluxo de trabalho, consulte "Criando e usando segredos encriptados".

Publicar imagens no Repositório Central do Maven e em GitHub Package Registry

Você pode publicar seus pacotes no Repositório Central Maven e em GitHub Package Registry, usando a ação de setup-java para cada registro.

Certifique-se de que seu arquivo pom.xml inclui um repositório de gerenciamento de distribuição tanto para seu repositório GitHub como para o seu provedor de Repositório Central do Maven. Por exemplo, se você fizer a implementação em um Repositório Central por meio do projeto de hospedagem OSSRH, é possível que você deseje especificá-la em um repositório de gerenciamento de distribuição com o id definido como ossrh. Além disso, você pode desejar especificar GitHub Package Registry em um repositório de gerenciamento de distribuição com o id definido como github.

YAML
name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java for publishing to Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish to the Maven Central Repository
        run: mvn --batch-mode deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
      - name: Set up Java for publishing to GitHub Packages
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish to GitHub Packages
        run: mvn --batch-mode deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Este fluxo de trabalho chama a ação setup-java duas vezes. Cada vez que a ação setup-java é executada, ela sobrescreve o arquivo settings.xml do Maven para a publicação de pacotes. Para autenticação no repositório, o arquivo settings.xml faz referência ao IDdo repositório de gerenciamento de distribuição e ao nome de usuário e senha.

Este fluxo de trabalho executa os seguintes passos:

  1. Verifica uma cópia do repositório do projeto.

  2. Chama setup-java pela primeira vez. Isso configura o arquivo settings.xml do Maven para o repositório ossrh e define as opções de autenticação para variáveis de ambiente definidas na próxima etapa.

  3. Executa o comando mvn --batch-mode para publicar no repositório ossrh. A variável de ambiente MAVEN_USERNAME será definida com o conteúdo do seu segredo OSSRH_USERNAME, e a variável de ambiente MAVEN_PASSWORD será definida com o conteúdo do seu segredo OSSRH_TOKEN.

  4. Chama setup-java pela segunda vez. Isso configura automaticamente o arquivo settings.xml do Maven para GitHub Package Registry.

  5. Executa o comando mvn --batch-mode para publicar em GitHub Package Registry. A variável de ambiente GITHUB_TOKEN será definida com o conteúdo do segredo GITHUB_TOKEN.

    Para obter mais informações sobre o uso de segredos no seu fluxo de trabalho, consulte "Criando e usando segredos encriptados".