Publicar em pacotes do GitHub e no Registro de Contêiner do GitHub
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:
- Um trabalho chamado
build
executanpm ci
("ci" para Integração Contínua) para instalar dependências diretamente do arquivopackage-lock.json
, bem como os testes para o projeto. - Depois que o trabalho
build
for executado, o trabalho chamadopublish-gpr
publicará o pacote. - 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
.