Publicar em pacotes do GitHub e no Registro de Contêiner do GitHub
Aqui, você aprenderá as noções básicas de como usar um fluxo de trabalho para publicar em Pacotes do GitHub e as etapas necessárias para criar, autenticar, marcar e enviar uma imagem do Docker por push 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 em particular com sua equipe ou publicamente com a comunidade de software livre. Você também pode usar o GitHub Actions para automatizar seus pacotes.
Veja a seguir 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. É uma 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:
- Um trabalho nomeado
buildexecutanpm ci("ci" para Integração Contínua) para instalar dependências diretamente do arquivopackage-lock.json, além dos testes para o projeto. - Depois que o trabalho
buildfor executado, o trabalho chamadopublish-gprpublicará o pacote. - O fluxo de trabalho publica o pacote para o
registry-url: https://npm.pkg.github.com/usando 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 do GitHub 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 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.
- Acesse imagens de contêiner público anonimamente.
Depois de criar a imagem, autenticar e fazer login no serviço de Registro de Contêiner do GitHub em ghcr.io, você poderá marcar e enviar via push 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
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.