Publicar em pacotes do GitHub e registro de contêiner do GitHub

Concluído

Aqui, você aprenderá as noções básicas 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 as Ações do GitHub para automatizar seus pacotes.

A seguir 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 de fluxo de trabalho deve existir no .github/workflows diretório. É prática comum nomear um fluxo de trabalho que publica um novo pacote sempre que uma nova versão é criada algo como release-package.yml, para facilitar que os colaboradores do projeto entendam sua finalidade sem navegar até o arquivo de fluxo de trabalho.

O fluxo de trabalho anterior faz algumas coisas depois que uma nova versão é criada:

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

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

Os pacotes GitHub suportam o uso de contêineres, Kubernetes e outras tecnologias nativas da 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 suportar as necessidades exclusivas de imagens de contêiner. Você pode usar o Registro de Contêiner do GitHub para hospedar e gerenciar perfeitamente imagens de contêiner do Docker em sua organização do GitHub ou conta de usuário pessoal. O Registro de Contêiner do GitHub permite configurar 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 um repositório.
  • Defina permissões refinadas para as imagens de contêiner.
  • Aceda a imagens de contentores públicos de forma anónima.

Depois de criar a imagem e autenticar e entrar no serviço Registro de Contêiner do GitHub em ghcr.io, você pode marcar e enviar a versão mais recente da imagem para o registro de contêiner usando estes comandos:

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

Nota

Para autenticar usando um fluxo de trabalho de Ações do GitHub, você pode usar um GITHUB_TOKEN:

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