Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Usar o GitHub Packages com o GitHub Actions

É possível configurar um fluxo de trabalho no GitHub Actions para publicar ou instalar automaticamente um pacote do GitHub Package Registry.

GitHub Package Registry está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 2.22, e GitHub One.


O GitHub Package Registry não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. GitHub Package Registry está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub One. Para obter mais informações, consulte "[produtos de GitHub](/articles/github-s-products)

Neste artigo

Sobre GitHub Package Registry com GitHub Actions

O GitHub Actions ajuda você a automatizar seus fluxos de trabalho de desenvolvimento de software no mesmo lugar que você armazena o código e colabora em pull requests e problemas. Você pode escrever tarefas individuais, chamadas de ações e combiná-las para criar um fluxo de trabalho personalizado. Com o GitHub Actions, você pode criar recursos completos de integração contínua (CI, Continuous Integration) e implantação contínua (CD, Continuous Deployment) diretamente no seu repositório. Para obter mais informações, consulte "Sobre GitHub Actions".

Você pode estender os recursos de CI e CD do seu repositório publicando ou instalando pacotes como parte do seu fluxo de trabalho.

Autenticar-se no Registro de contêiner do GitHub

Nota: Registro de contêiner do GitHub está atualmente em versão beta público e sujeito a alterações. Durante o beta, o armazenamento e a banda larga são grátis. Para usar Registro de contêiner do GitHub, você precisa habilitar a pré-visualização de recursos. Para obter mais informações, consulte "Sobre Registro de contêiner do GitHub" e "Habilitar melhor suporte ao contêiner".

Se você deseja efetuar a autenticação em Registro de contêiner do GitHub em um fluxo de trabalho de GitHub Actions, em seguida, você deverá usar um token de acesso pessoal (PAT). Atualmente, o GITHUB_TOKEN não tem as permissões necessárias. No beta de Registro de contêiner do GitHub, a única forma compatível de de autenticação é o PAT.

Os PATs podem conceder amplo acesso à sua conta. Recomendamos selecionar apenas o acesso de leitura ou gravação ou excluir o pacote ao criar um PAT para efetuar a autenticação no registro de contêiner. Evite incluir o escopo do repositório em um PAT usado por um fluxo de trabalho do GitHub Actions pois ele concede acesso adicional desnecessário.

Se você desejar usar o registro de contêiner em ações durante a versão beta, siga nossas práticas de segurança recomendadas para o uso do PAT emFortalecimento da segurança para o GitHub Actions".

Para um exemplo de autenticação, consulte "Efetuar a autenticação com o registro de contêiner".

Efetuar a autenticação nos registros do pacote em GitHub

Se você deseja que o fluxo de trabalho efetue a autenticação em GitHub Package Registry para acessar um registro de pacotes diferentes do registro de contêiner em GitHub, recomendamos usar o GITHUB_TOKEN que GitHub cria automaticamente para o seu repositório quando você habilita GitHub Actions em vez de um token de acesso pessoal para autenticação. O GITHUB_TOKEN tem escopos read:packages e write:packages do repositório atual. Para bifurcações, o token também tem o escopo read:packages para o repositório principal.

Você pode fazer referência ao GITHUB_TOKEN no seu arquivo de fluxo de trabalho usando o contexto {{secrets.GITHUB_TOKEN}}. Para obter mais informações, consulte "Permissões para o GITHUB_TOKEN".

Publicar um pacote usando uma ação

Você pode usar GitHub Actions para publicar automaticamente pacotes como parte do fluxo de integração contínua (CI). Esta abordagem da implantação contínua (CD) permite que você automatize a criação de novas versões do pacote, se o código atender aos seus padrões de qualidade. Por exemplo, você pode criar um fluxo de trabalho que executa testes CI toda vez que um desenvolvedor faz push do código para um branch específico. Se os testes passarem, o fluxo de trabalho poderá publicar uma nova versão do pacote em GitHub Package Registry.

As etapas de configuração variam de acordo com o cliente do pacote. Para obter informações gerais sobre a configuração de um fluxo de trabalho para GitHub Actions, consulte "Configurar um fluxo de trabalho."

O exemplo a seguir demonstra como você pode usar GitHub Actions para criar e testar seu aplicativo e, em seguida, criar automaticamente uma imagem do Docker e publicá-la em GitHub Package Registry:

  • Crie um novo arquivo de fluxo de trabalho no repositório (como .github/workflows/deploy-image.yml) e adicione o YAML a seguir:

    name: Create and publish a package
    on:
      push:
        branches: ['release']
    jobs:
      run-npm-build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: npm install and build webpack
            run: |
              npm install
              npm run build
          - uses: actions/upload-artifact@main
            with:
              name: webpack artifacts
              path: public/
    
      run-npm-test:
        runs-on: ubuntu-latest
        needs: run-npm-build
        strategy:
          matrix:
            os: [ubuntu-latest]
            node-version: [12.x, 14.x]
        steps:
          - uses: actions/checkout@v2
          - name: Use Node.js ${{ matrix.node-version }}
            uses: actions/setup-node@v1
            with:
              node-version: ${{ matrix.node-version }}
          - uses: actions/download-artifact@main
            with:
              name: webpack artifacts
              path: public
          - name: npm install, and test
            run: |
              npm install
              npm test
            env:
              CI: true
    
      build-and-push-image:
        runs-on: ubuntu-latest
        needs: run-npm-test
        steps:
        - name: Checkout
          uses: actions/checkout@v2
        - name: Build container image
          uses: docker/build-push-action@v1
          with:
            username: ${{ github.actor }}
            password: ${{ secrets.GITHUB_TOKEN }}
            registry: docker.pkg.github.com
            repository: ${{ github.repository }}/octo-image
            tag_with_sha: true
            tag_with_ref: true
    

As configurações relevantes são explicadas na seguinte tabela:

on:
  push:
    branches: ['release']
Configura o fluxo de trabalho Criar e publicar um pacote para ser executado toda vez que uma alteração é enviada para o branch denominado versão.
run-npm-build:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v2
    - name: npm install and build webpack
      run: |
        npm install
        npm run build
    - uses: actions/upload-artifact@main
      with:
        name: webpack artifacts
        path: public/
Este trabalho instala o NPM e o usa para criar o aplicativo.
run-npm-test:
  runs-on: ubuntu-latest
  needs: run-npm-build
  strategy:
    matrix:
      os: [ubuntu-latest]
      node-version: [14.x]
  steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - uses: actions/download-artifact@main
      with:
        name: webpack artifacts
        path: public
    - name: npm install, and test
      run: |
        npm install
        npm test
      env:
        CI: true
Este trabalho usa teste do npm para testar o código. O comando needs: run-npm-build torna esse trabalho dependente do trabalho run-npm-build.
- name: Build container image
Cria uma nova etapa denominada Build container image. Esta etapa é executada como parte do trabalho build-and-push-image. O comando needs: run-npm-test torna essa tarefa dependente do trabalho run-npm-test.
uses: docker/build-push-action@v1
Usa a ação build-push-action do Docker para criar a imagem com base no arquivo Docker do seu repositório. Se a criação for bem-sucedida, ela faz p push da imagem para GitHub Package Registry.
with:
Envia os parâmetros necessários para a ação build-push-action. Isto é definido nas linhas subsequentes.
username: ${{ github.actor }}
Define a conta de usuário que publicará os pacotes. Uma vez publicados, os pacotes pertencem à conta definida aqui.
password: ${{ secrets.GITHUB_TOKEN }}
Define a senha usada para acessar GitHub Package Registry.
registry: docker.pkg.github.com
Define o registro que hospedará os pacotes resultantes. Este exemplo usa GitHub Package Registry.
repository: ${{ github.repository }}/octo-image
Define qual repositório hospedará o pacote resultante e define o nome do pacote publicado. Substitui octo-image pelo nome que você deseja para o seu pacote.
tag_with_sha: true
Marca o pacote publicado com os primeiros sete caracteres do SHA do commit. Por exemplo, sha-2f2d842.
tag_with_ref: true
Tags o pacote publicado com a referência do Git. Este pode ser o nome do branch usado para criar o pacote.
  • Este novo fluxo de trabalho será executado automaticamente toda vez que você fizer uma alteração no repositório. Você pode visualizar o progresso na aba Ações.
  • Alguns minutos após a conclusão do fluxo de trabalho, o novo pacote ficará visível no seu repositório. Para encontrar seus pacotes disponíveis, consulte "Visualizar os pacotes de um repositório".

Instalar um pacote usando uma ação

Você pode instalar pacotes como parte de seu fluxo de CI usando o GitHub Actions. Por exemplo, você poderia configurar um fluxo de trabalho para que sempre que um desenvolvedor fizesse push do código para um pull request, o fluxo de trabalho resolveria as dependências, fazendo o download e instalando pacotes hospedados pelo GitHub Package Registry. Em seguida, o fluxo de trabalho pode executar testes de CI que exigem as dependências.

Instalar pacotes hospedados pelo GitHub Package Registry através de GitHub Actions exige uma configuração mínima ou autenticação adicional ao usar GITHUB_TOKEN. A transferência de dados também é grátis quando uma ação instala um pacote. Para obter mais informações, consulte "Sobre a cobrança do GitHub Package Registry".

GITHUB_TOKEN não pode instalar pacotes a partir de qualquer repositório privado além do repositório onde a ação é executada. Atualmente, você não pode usar GITHUB_TOKEN para efetuar a autenticação Registro de contêiner do GitHub.

As etapas de configuração variam de acordo com o cliente do pacote. Para obter informações gerais sobre a configuração de um fluxo de trabalho para GitHub Actions, consulte "Configurar um fluxo de trabalho."

Esse documento ajudou você?

Privacy policy

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.