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 publica pacotes Java no GitHub Packages 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, confira "Aprenda a usar o GitHub Actions".
Para obter mais informações sobre como criar um fluxo de trabalho de CI para seu projeto Java com o Maven, confira "Como criar e testar o Java com o Maven".
Você também pode achar útil ter um entendimento básico do seguinte:
- "Como trabalhar com o registro npm"
- "Variáveis de ambiente"
- "Segredos criptografados"
- "Autenticação em um fluxo de trabalho"
Sobre a configuração do pacote
Os campos groupId e artifactId do arquivo pom.xml criam um identificador exclusivo para o pacote que os registros usam para vincular seu pacote a um registro.  Para obter mais informações, confira Guia para upload de artefatos no Central Repository na documentação do Apache Maven.
O arquivo pom.xml também contém a configuração dos repositórios de gerenciamento de distribuição nos quais o Maven implantará os pacotes. Cada repositório deve ter um nome e uma URL de implementação. A autenticação para esses repositórios pode ser configurada no arquivo .m2/settings.xml no diretório inicial do usuário que executa o Maven.
Use a ação setup-java para configurar o repositório de implantação, bem como a autenticação para esse repositório. Para obter mais informações, confira 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 release é disparado com o tipo created. 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 release, confira "Eventos que disparam fluxos de trabalho".
Neste fluxo de trabalho, você pode usar a ação setup-java. Essa ação instala a versão fornecida do JDK no PATH, mas também configura um settings.xml do Maven para pacotes de publicação. Por padrão, o arquivo de configurações será definido como GitHub Packages. No entanto, ele pode ser configurado para implementar outro registro de pacote, como, por exemplo, o Repositório Central do Maven. Se você já tiver um repositório de gerenciamento de distribuição configurado no pom.xml, especifique essa id durante a invocação da ação setup-java.
Por exemplo, se você estiver fazendo a implantação no Maven Central Repository por meio do projeto de hospedagem do OSSRH, o pom.xml poderá especificar um repositório de gerenciamento de distribuição com a id igual a ossrh.
<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 essa configuração, você pode criar um fluxo de trabalho que publica seu pacote no Maven Central Repository especificando o gerenciamento do repositório id 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, confira "Como criar e usar segredos criptografados".
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 realiza as etapas a seguir:
- 
Verifica uma cópia do repositório do projeto. 
- 
Configura o JDK do Java e o arquivo settings.xml do Maven para adicionar a autenticação ao repositório ossrhusando as variáveis de ambienteMAVEN_USERNAMEeMAVEN_PASSWORD.
- 
Executa o comando mvn --batch-mode deploya ser publicado no repositórioossrh. A variável de ambienteMAVEN_USERNAMEserá definida com o conteúdo do segredoOSSRH_USERNAME, e a variável de ambienteMAVEN_PASSWORDserá definida com o conteúdo do segredoOSSRH_TOKEN.Para obter mais informações sobre como usar segredos no fluxo de trabalho, confira "Como criar e usar segredos criptografados". 
Publicar pacotes em GitHub Packages
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 release é disparado com o tipo created. O fluxo de trabalho publica o pacote em GitHub Packages se o teste de CI for aprovado. Para obter mais informações sobre o evento release, confira "Eventos que disparam fluxos de trabalho".
Neste fluxo de trabalho, você pode usar a ação setup-java. Essa ação instala a versão fornecida do JDK no PATH e configura um settings.xml do Maven para publicar o pacote no GitHub Packages. O settings.xml gerado define a autenticação de um servidor com a id 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 recebe o valor do segredo especial GITHUB_TOKEN.
O segredo GITHUB_TOKEN é definido como um token de acesso para o repositório sempre que um trabalho em um fluxo de trabalho é iniciado. Você deve definir as permissões desse token de acesso no arquivo de fluxo de trabalho para permitir acesso de leitura ao escopo contents e acesso de gravação ao escopo packages. Para obter mais informações, confira "Como se autenticar com o GITHUB_TOKEN".
Para um projeto baseado no Maven, você pode usar essas configurações criando um repositório de distribuição no arquivo pom.xml com uma id igual a github que aponta para o ponto de extremidade do GitHub Packages.
Por exemplo, se o nome da sua organização for "octocat" e o nome do repositório for "hello-world", a configuração do GitHub Packages no pom.xml será semelhante ao exemplo abaixo.
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/octocat/hello-world</url>
    </repository>
  </distributionManagement>
</project>Com essa configuração, você pode criar um fluxo de trabalho que publica seu pacote no GitHub Packages usando o settings.xml gerado automaticamente.
name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    permissions: 
      contents: read
      packages: write 
    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 realiza as etapas a seguir:
- 
Verifica uma cópia do repositório do projeto. 
- 
Configura o JDK do Java e configura automaticamente o arquivo settings.xml do Maven para adicionar autenticação ao repositório githubdo Maven a fim de usar a variável de ambienteGITHUB_TOKEN.
- 
Executa o comando mvn --batch-mode deploypara publicação no GitHub Packages. A variável de ambienteGITHUB_TOKENserá definida com o conteúdo do segredoGITHUB_TOKEN. A chavepermissionsespecifica o acesso concedido aoGITHUB_TOKEN.Para obter mais informações sobre como usar segredos no fluxo de trabalho, confira "Como criar e usar segredos criptografados". 
Publicar imagens no Repositório Central do Maven e em GitHub Packages
Você pode publicar seus pacotes no Maven Central Repository e no GitHub Packages usando a ação setup-java para cada registro.
Verifique se o arquivo pom.xml inclui um repositório de gerenciamento de distribuição para seu repositório do GitHub e o provedor do Maven Central Repository. Por exemplo, se você fizer a implantação no Central Repository por meio do projeto de hospedagem do OSSRH, o ideal será especificá-lo em um repositório de gerenciamento de distribuição com a id definida como ossrh e especificar o GitHub Packages em um repositório de gerenciamento de distribuição com a id definida com github.
name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    permissions: 
      contents: read
      packages: write 
    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 }}Esse fluxo de trabalho chama a ação setup-java duas vezes.  Sempre que a ação setup-java for executada, ela substituirá o arquivo settings.xml do Maven para publicação de pacotes.  Para autenticação no repositório, o arquivo settings.xml referencia o repositório de gerenciamento de distribuição id, bem como o nome de usuário e a senha.
Este fluxo de trabalho realiza as etapas a seguir:
- 
Verifica uma cópia do repositório do projeto. 
- 
Chama setup-javapela primeira vez. Isso configura o arquivo settings.xml do Maven para o repositórioossrhe define as opções de autenticação para variáveis de ambiente definidas na próxima etapa.
- 
Executa o comando mvn --batch-mode deploya ser publicado no repositórioossrh. A variável de ambienteMAVEN_USERNAMEserá definida com o conteúdo do segredoOSSRH_USERNAME, e a variável de ambienteMAVEN_PASSWORDserá definida com o conteúdo do segredoOSSRH_TOKEN.
- 
Chama setup-javapela segunda vez. Isso configura automaticamente o arquivo settings.xml do Maven para o GitHub Packages.
- 
Executa o comando mvn --batch-mode deploypara publicação no GitHub Packages. A variável de ambienteGITHUB_TOKENserá definida com o conteúdo do segredoGITHUB_TOKEN. A chavepermissionsespecifica o acesso concedido aoGITHUB_TOKEN.Para obter mais informações sobre como usar segredos no fluxo de trabalho, confira "Como criar e usar segredos criptografados".