👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


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 Node.js com GitHub Actions

É possível criar um fluxo de trabalho de integração contínua (CI) para criar e testar o seu projeto Node.js.

GitHub Actions está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub One. O GitHub Actions não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. Para obter mais informações, consulte os "produtos do GitHub".

Neste artigo

Introdução

Este guia mostra como criar um fluxo de trabalho de integração contínua (CI) que cria e testa o código Node.js. Se o seu teste de CI for aprovado, é possível que você deseje publicar seu código ou um pacote.

Pré-requisitos

Recomendamos que você tenha um entendimento básico do Node.js, YAML, das opções de configuração do fluxo de trabalho e de como criar um arquivo do fluxo de trabalho. Para obter mais informações, consulte "Configurando um fluxo de trabalho" e "Primeiros passos com o Node.js".

Você também pode achar útil ter um entendimento básico do seguinte:

Introdução com o modelo de workflow do Node.js

O GitHub fornece um modelo de fluxo de trabalho do Node.js que funcionará para a maioria dos projetos Node.js. Esse guia inclui exemplos de npm e Yarn que você pode usar para personalizar o modelo. Para obter mais informações, consulte o modelo do fluxo de trabalho do Node.js.

Para iniciar rapidamente, adicione o modelo ao diretório .github/workflows do repositório.

Nome: Node.js CI

em: [push]

trabalhos:
  criar:

    runs-on: ubuntu-latest

    estratégia:
      matriz:
        node-version: [8.x, 10.x, 12.x]

    etapas:
    - usa: actions/checkout@v2
    - nome: Use Node.js ${{ matrix.node-version }}
      usa: actions/setup-node@v1
      com:
        node-version: ${{ matrix.node-version }}
    - executa: npm install
    - executa: npm run build --if-present
    - executa: npm test
      env:
        CI: true

Running on a different operating system

The starter workflow template configures jobs to run on Linux, using the GitHub-hosted ubuntu-latest runners. You can change the runs-on key to run your jobs on a different operating system. For example, you can use the GitHub-hosted Windows runners.

runs-on: windows-latest

Or, you can run on the GitHub-hosted macOS runners.

runs-on: macos-latest

You can also run jobs in Docker containers, or you can provide a self-hosted runner that runs on your own infrastructure. For more information, see "Workflow syntax for GitHub Actions."

Especificar a versão do Node.js

A maneira mais fácil de especificar uma versão do Node.js é usar a ação setup-node fornecida pelo GitHub. Para obter mais informações, consulte setup-node.

A ação setup-node considera uma versão do Node.js como uma entrada e configura essa versão no executor. A ação setup-node localiza uma versão específica do Node.js da cache das ferramentas em casa executor e adiciona os binários necessários ao PATH, que persiste no resto do trabalho. Usar a ação setup-node é a forma recomendada de usar o Node.js com GitHub Actions, pois garante um comportamento consistente nos diferentes executores e nas diferentes versões do Node.js. Se você estiver usando um executor auto-hospedado, você deverá instalar o Node.js e adicioná-lo ao PATH.

O modelo inclui uma estratégia de matriz que cria e testa o seu código com três versões do Node.js: 8.x, 10.x, e 12.x. O "x" é um caractere curinga que corresponde à última versão menor e à versão do patch disponível para uma versão. Cada versão do Node.js especificada na matriz node-version cria uma tarefa que executa as mesmas etapas.

Cada trabalho pode acessar o valor definido na matriz node-version usando o contexto matriz. A ação setup-node usa o contexto como entrada de node-version. A ação setup-node configura cada tarefa com uma versão diferente de Node.js antes de criar e testar o código. Para obter mais informações sobre os contextos e estratégias da matriz, consulte ""Sintaxe do fluxo de trabalho para GitHub Actions" e "Contexto e sintaxe de expressão para GitHub Actions".

estratégia:
  matriz:
    node-version: [8.x, 10.x, 12.x]

etapas:
- usa: actions/checkout@v2
- Nome: Use Node.js ${{ matrix.node-version }}
  usa: actions/setup-node@v1
  com:
    node-version: ${{ matrix.node-version }}

Como alternativa, você pode criar e fazes testes com versões exatas do Node.js.

estratégia:
  matriz:
    node-version: [8.16.2, 10.17.0]

Você também pode criar e testar usando uma versão única do Node.js.

Nome: Node.js CI

em: [push]

trabalhos:
  criar:

    runs-on: ubuntu-latest

    etapas:
    - usa: actions/checkout@v2
    - Nome: Usa o Node.js
      usa: actions/setup-node@v1
      com:
        node-version: '12.x'
    - executar: npm install
    - executar: npm run build --if-present
    - executar: npm test
      env:
        CI: true

Se você não especificar uma versão do Node.js, o GitHub usará a versão-padrão do Node.js do ambiente. Para obter mais informações, consulte "Software instalado em executores hospedados em GitHub".

Instalar dependências

Executores hospedados em GitHub têm gerenciadores de dependências npm e Yarn instalados. Você pode usar o npm e o Yarn para instalar dependências no seu fluxo de trabalho antes de criar e testar seu código. Os executores do Windows e Linux hospedados em GitHub também têm o Grunt, Gulp, e Bower instalado.

Você também pode memorizar as dependências para acelerar seu fluxo de trabalho. Para obter mais informações, consulte "Memorizando dependências para acelerar seu fluxo de trabalho".

Exemplo de uso do npm

Este exemplo instala as dependências definidas no arquivo package.json. Para obter mais informações, consulte instalação do npm.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- nome: Instalar dependências
  executar: npm install

O uso do npm ci instala as versões no arquivo package-lock.json ou npm-shrinkwrap.json e impede as atualizações do arquivo de bloqueio. Usar npm ci geralmente é mais rápido que executar a instalação do npm. Para obter mais informações, consulte npm ci e "Introduzindo npm para criações mais rápidas e confiáveis".

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- nome: Instalar dependências
  executar: npm ci

Exemplo de uso do Yarn

Este exemplo instala as dependências definidas no arquivo package.json. Para obter mais informações, consulte instalação do yarn.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- nome: Instalar dependências
  executar: yarn

Como alternativa, você pode aprovar o --frozen-lockfile para instalar as versões no arquivo yarn.lock e impedir atualizações no arquivo yarn.lock.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- nome: Instalar dependências
  executar: yarn --frozen-lockfile

Exemplo do uso de um registro privado e de criação o arquivo .npmrc

You can use the setup-node action to create a local .npmrc file on the runner that configures the default registry and scope. The setup-node action also accepts an authentication token as input, used to access private registries or publish node packages. For more information, see setup-node.

Para fazer a autenticação no seu registro privado, você deverá armazenar seu token de autenticação npm como um segredo nas configurações do seu repositório. Por exemplo, crie um segredo denominado NPM_TOKEN. Para obter mais informações, consulte "Criando e usando segredos encriptados".

No exemplo abaixo, o segredo NPM_TOKEN armazena o token de autenticação npm. A ação setup-node configura o arquivo .npmrc para ler o token de autenticação npm a partir da variável de ambiente NODE_AUTH_TOKEN. Ao usar a ação setup-node para criar um arquivo .npmrc, você deverá definir a variável de ambiente NPM_AUTH_TOKEN com o segredo que contém seu token de autenticação npm.

Antes de instalar as dependências, use a ação setup-node para criar o arquivo .npmrc file. A ação tem dois parâmetros de entrada. O parâmetro node-version define a versão do Node.js e o parâmetro registry-url define o registro-padrão. Se o registro do seu pacote usar escopos, você deverá usar o parâmetro escopo. Para obter mais informações, consulte npm-scope.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    always-auth: true
    node-version: '12.x'
    registry-url: https://registry.npmjs.org
    escopo: '@octocat'
- nome: Instalar dependências
  executar: npm ci
  env:
    NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}

O exemplo acima cria um arquivo .npmrc com o conteúdo a seguir:

//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://registry.npmjs.org/
always-auth=true

Exemplo de memorização de dependências

Você pode memorizar dependências usando uma chave única e restaurar as dependências ao executar fluxos de trabalho futuros usando a ação cache. Para obter mais informações, consulte "Memorizando dependências para acelerar os fluxos de trabalho" e a ação cache.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- nome: Cache Node.js modules
  usa: actions/cache@v2
  com:
    # Os arquivos da cache do npm estão armazenados em `~/.npm` no Linux/macOS
    caminho: ~/.npm 
    chave: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.OS }}-node-
      ${{ runner.OS }}-
- nome: Instalar dependências
  executar: npm ci

Criar e testar seu código

Você pode usar os mesmos comandos usados localmente para criar e testar seu código. Por exemplo, se você executar criação da execução do npm para executar os passos de compilação definidos no seu arquivo package.json e o teste do npm para executar seu conjunto de testes, você adicionaria esses comandos no seu arquivo de fluxo de trabalho.

etapas:
- usa: actions/checkout@v2
- nome: Use Node.js
  usa: actions/setup-node@v1
  com:
    node-version: '12.x'
- executar: npm install
- executar: npm run build --if-present
- executar: npm test

Empacotar dados do fluxo de trabalho como artefatos

Você pode salvar artefatos das suas etapas de criação e teste para serem visualizados após a conclusão de um trabalho. Por exemplo, é possível que você precise salvar os arquivos de registro, os despejos de núcleo, os resultados de teste ou capturas de tela. Para obter mais informações, consulte "Dados recorrentes do fluxo de trabalho que usam artefatos".

Publicar nos registros do pacote

Você pode configurar o seu fluxo de trabalho para publicar o seu pacote Node.js em um pacote de registro após os seus testes de CI serem aprovados. Para obter mais informações sobre a publicação no npm e em GitHub Package Registry, consulte "Publicando pacotes do Node.js".

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato