Publicar em pacotes do GitHub e no Registro de Contêiner do GitHub

Concluído

Aqui, você aprenderá os conceitos básicos do uso de um fluxo de trabalho para publicar em pacotes do GitHub e as etapas necessárias para criar, autenticar, marcar e enviar por push uma imagem do Docker para o Registro de Contêiner do GitHub.

Usar um fluxo de trabalho para publicar em pacotes do GitHub

Os pacotes do GitHub permitem que você publique e consuma pacotes com segurança, armazene seus pacotes junto com seu código e compartilhe seus pacotes de forma privada com sua equipe ou publicamente com a comunidade de código aberto. Você também pode usar o GitHub Actions para automatizar seus pacotes.

Abaixo está um exemplo de um fluxo de trabalho básico que é executado sempre que uma nova versão é criada em um repositório. Se os testes forem aprovados, o pacote será publicado nos pacotes do GitHub.

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 12
      - run: npm ci
      - run: npm test

  publish-gpr:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 12
          registry-url: https://npm.pkg.github.com/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

Primeiro, o arquivo do fluxo de trabalho precisa existir no diretório .github/workflows. É uma prática comum nomear um fluxo de trabalho que publica um novo pacote sempre que uma nova versão é criada junto com as linhas de release-package.yml a serem facilitadas para os colaboradores do projeto entenderem sua finalidade sem navegar para o arquivo de fluxo de trabalho.

O fluxo de trabalho acima faz algumas coisas após a criação de uma nova versão:

  1. Um trabalho chamado build executa npm ci ("ci" para Integração Contínua) para instalar dependências diretamente do arquivo package-lock.json, bem como os testes para o projeto.
  2. Depois que o trabalho build for executado, o trabalho chamado publish-gpr publicará o pacote.
  3. O fluxo de trabalho publica o pacote no registry-url: https://npm.pkg.github.com/ usando um token acesso para autenticação.

Usar o Registro de Contêiner do GitHub para hospedar e gerenciar imagens de contêiner do Docker

Os GitHub Packages dão suporte ao uso de contêineres, Kubernetes e outras tecnologias nativas de nuvem para gerenciar todo o ciclo de vida do aplicativo, incluindo operações de produção, desenvolvimento, lançamento e implantação. Os pacotes do GitHub também oferecem um registro de contêiner projetado para dar suporte às necessidades exclusivas de imagens de contêiner. Você pode usar o Registro de Contêiner do GitHub para hospedar e gerenciar com perfeição as imagens de contêiner do Docker em sua organização ou conta de usuário pessoal no GitHub. O Registro de Contêiner do GitHub permite que você configure quem pode gerenciar e acessar pacotes usando permissões refinadas.

Com o registro de contêiner, você pode:

  • Armazene imagens de contêiner em sua organização e conta de usuário, em vez de em um repositório.
  • Defina permissões refinadas para as imagens de contêiner.
  • Acesse imagens de contêiner público anonimamente.

Depois de criar a imagem, autenticada e conectada ao serviço de Registro de Contêiner do GitHub em ghcr.io, você pode marcar e enviar por push a versão mais recente da imagem para o registro de contêiner usando os comandos abaixo:

echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest

docker push ghcr.io/OWNER/IMAGE_NAME:latest

Observação

Para autenticar usando um fluxo de trabalho do GitHub Actions, você pode usar um GITHUB_TOKEN:

  • Para registros de pacote em PACKAGE-REGISTRY.pkg.github.com.
  • Para o registro de contêiner em ghcr.io/OWNER/IMAGE-NAME.