{"meta":{"title":"Criar e testar Node.js","intro":"Saiba como criar um fluxo de trabalho de integração contínua (CI) para criar e testar o seu projeto Node.js.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/enterprise-server@3.20/actions","title":"GitHub Actions"},{"href":"/pt/enterprise-server@3.20/actions/tutorials","title":"Tutoriais"},{"href":"/pt/enterprise-server@3.20/actions/tutorials/build-and-test-code","title":"Criar e testar código"},{"href":"/pt/enterprise-server@3.20/actions/tutorials/build-and-test-code/nodejs","title":"Node.js"}],"documentType":"article"},"body":"# Criar e testar Node.js\n\nSaiba como criar um fluxo de trabalho de integração contínua (CI) para criar e testar o seu projeto Node.js.\n\n> \\[!NOTE]\n> No momento, não há suporte para executores hospedados no GitHub Enterprise Server no GitHub.\n\n## Introdução\n\nEste 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.\n\n## Pré-requisitos\n\nRecomendamos 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 saber mais, veja:\n\n* [Escrevendo fluxos de trabalho](/pt/enterprise-server@3.20/actions/learn-github-actions)\n* [Introdução ao Node.js](https://nodejs.org/en/docs/guides/getting-started-guide/)\n\n### Usar executores auto-hospedados no GitHub Enterprise Server\n\nAo usar ações de instalação (como `actions/setup-LANGUAGE`) no GitHub Enterprise Server com executores auto-hospedados, talvez seja necessário configurar o cache de ferramentas nos executores que não têm acesso à Internet. Para saber mais, confira [Configurar o cache de ferramentas em executores auto-hospedados sem acesso à internet](/pt/enterprise-server@3.20/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access).\n\n## Usando um modelo de fluxo de trabalho do Node.js\n\nPara uma introdução rápida, adicione um modelo de fluxo de trabalho ao diretório `.github/workflows` do repositório.\n\nO GitHub fornece um modelo de fluxo de trabalho para Node.js que deve funcionar para a maioria dos projetos Node.js. As seções subsequentes deste guia fornecem exemplos de como você pode personalizar esse modelo de fluxo de trabalho.\n\n1. Em GitHub, acesse a página principal do repositório.\n\n2. No nome do repositório, clique em **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Captura de tela das guias do repositório \"github/docs\". A guia \"Ações\" está realçada com um contorno laranja.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Se você já tiver um fluxo de trabalho no repositório, clique em **Novo fluxo de trabalho**.\n\n4. A página \"Escolher um fluxo de trabalho\" mostra uma seleção de modelos de fluxo de trabalho recomendados. Pesquise por \"Node.js\".\n\n5. Filtre a seleção de fluxos de trabalho clicando em **Integração contínua**.\n\n6. No fluxo de trabalho \"Node.js\", clique em **Configurar**.\n\n   Se não encontrar o modelo de fluxo de trabalho \"Node.js\", copie o código de fluxo de trabalho a seguir para um novo arquivo chamado `node.js.yml` no diretório `.github/workflows` do seu repositório.\n\n   ```yaml copy\n   name: Node.js CI\n\n   on:\n     push:\n       branches: [ \"main\" ]\n     pull_request:\n       branches: [ \"main\" ]\n\n   jobs:\n     build:\n       runs-on: ubuntu-latest\n\n       strategy:\n         matrix:\n           node-version: [18.x, 20.x]\n           # See supported Node.js release schedule at https://nodejs.org/en/about/releases/\n\n       steps:\n       - uses: actions/checkout@v6\n       - name: Use Node.js ${{ matrix.node-version }}\n         uses: actions/setup-node@v4\n         with:\n           node-version: ${{ matrix.node-version }}\n           cache: 'npm'\n       - run: npm ci\n       - run: npm run build --if-present\n       - run: npm test\n   ```\n\n7. Edite o fluxo de trabalho conforme necessário. Por exemplo, altere as versões do Node que você deseja usar.\n\n8. Clique em **Confirmar alterações**.\n\n## Especificar a versão do Node.js\n\nA maneira mais fácil de especificar uma versão do Node.js é usando a ação `setup-node` fornecida pelo GitHub. Para obter mais informações, confira [`setup-node`](https://github.com/actions/setup-node/).\n\nA ação `setup-node` usa uma versão do Node.js como entrada e configura essa versão no executor. A ação `setup-node` localiza uma versão específica do Node.js no cache de ferramentas em cada executor e adiciona os binários necessários a `PATH`, que é persistente no restante do trabalho. Usar a ação `setup-node` é a maneira recomendada de usar o Node.js com o GitHub Actions, porque garante um comportamento consistente entre diferentes executores e diferentes versões do Node.js. Se você estiver usando um executor auto-hospedado, precisará instalar o Node.js e adicioná-lo a `PATH`.\n\nO modelo de fluxo de trabalho inclui uma estratégia de matriz que cria e testa seu código com as versões do Node.js listadas no `node-version`. O \"x\" no número da versão é um caractere curinga que corresponde à última versão secundária e de patch disponível para uma versão. Cada versão do Node.js especificada na matriz `node-version` cria um trabalho que executa as mesmas etapas.\n\nCada tarefa pode acessar o valor definido na matriz `node-version` usando o contexto `matrix`. A ação `setup-node` usa o contexto como a entrada de `node-version`. A ação `setup-node` configura cada trabalho com uma versão diferente do Node.js antes de compilar e testar o código. Para saber mais sobre estratégias e contextos de matriz, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/enterprise-server@3.20/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix) e [Referência de contextos](/pt/enterprise-server@3.20/actions/learn-github-actions/contexts).\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['18.x', '20.x']\n\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js ${{ matrix.node-version }}\n  uses: actions/setup-node@v4\n  with:\n    node-version: ${{ matrix.node-version }}\n```\n\nComo alternativa, você pode criar e fazes testes com versões exatas do Node.js.\n\n```yaml copy\nstrategy:\n  matrix:\n    node-version: ['10.17.0', '17.9.0']\n```\n\nVocê também pode criar e testar usando uma versão única do Node.js.\n\n```yaml copy\nname: Node.js CI\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20.x'\n      - run: npm ci\n      - run: npm run build --if-present\n      - run: npm test\n```\n\nSe você não especificar uma versão do Node.js, o GitHub usará a versão-padrão do Node.js do ambiente.\nPara saber mais, confira [Executores hospedados no GitHub](/pt/enterprise-server@3.20/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).\n\n## Instalar dependências\n\nExecutores 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.\n\nVocê também pode armazenar dependências em cache para acelerar seu fluxo de trabalho. Para saber mais, confira [Referência do cache de dependência](/pt/enterprise-server@3.20/actions/using-workflows/caching-dependencies-to-speed-up-workflows).\n\n### Exemplo de uso do npm\n\nEste exemplo instala as versões no arquivo `package-lock.json` ou `npm-shrinkwrap.json` e impede atualizações no arquivo de bloqueio. O uso de `npm ci` geralmente é mais rápido do que a execução de `npm install`. Para obter mais informações, confira [`npm ci`](https://docs.npmjs.com/cli/ci.html) e [Apresentação do `npm ci` para builds mais rápidos e confiáveis](https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm ci\n```\n\nO uso de `npm install` instala as dependências definidas no arquivo `package.json`. Para obter mais informações, consulte [`npm install`](https://docs.npmjs.com/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: npm install\n```\n\n### Exemplo usando Yarn\n\nEste exemplo instala as dependências definidas no arquivo `yarn.lock` e impede atualizações no arquivo `yarn.lock`. Para obter mais informações, consulte [`yarn install`](https://yarnpkg.com/en/docs/cli/install).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn --frozen-lockfile\n```\n\nComo alternativa, você pode instalar as dependências definidas no arquivo `package.json`.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- name: Install dependencies\n  run: yarn\n```\n\n### Exemplo usando um registro privado e criando o arquivo .npmrc\n\nVocê pode usar a ação `setup-node` para criar um arquivo `.npmrc` local no executor que configura o registro e o escopo padrão. A ação `setup-node` também aceita um token de autenticação como entrada, usado para acessar registros privados ou publicar pacotes de nós. Para obter mais informações, confira [`setup-node`](https://github.com/actions/setup-node/).\n\nPara efetuar a autenticação com seu registro privado, você precisará armazenar seu token de autenticação npm como um segredo. Por exemplo, crie um segredo do repositório chamado `NPM_TOKEN`. Para saber mais, confira [Usar segredos em ações do GitHub](/pt/enterprise-server@3.20/actions/security-guides/using-secrets-in-github-actions).\n\nNo exemplo abaixo, o segredo `NPM_TOKEN` armazena o token de autenticação do npm. A ação `setup-node` configura o arquivo `.npmrc` para ler o token de autenticação do npm por meio da variável de ambiente `NODE_AUTH_TOKEN`. Ao usar a ação `setup-node` para criar um arquivo `.npmrc`, você precisará definir a variável de ambiente `NODE_AUTH_TOKEN` com o segredo que contém o token de autenticação do npm.\n\nAntes de instalar as dependências, use a ação `setup-node` para criar o arquivo `.npmrc`. 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 de pacote usa escopos, é preciso usar o parâmetro `scope`. Para obter mais informações, consulte [`npm-scope`](https://docs.npmjs.com/misc/scope).\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    always-auth: true\n    node-version: '20.x'\n    registry-url: https://registry.npmjs.org\n    scope: '@octocat'\n- name: Install dependencies\n  run: npm ci\n  env:\n    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n```\n\nO exemplo acima cria um arquivo `.npmrc` com o seguinte conteúdo:\n\n```shell\n//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}\n@octocat:registry=https://registry.npmjs.org/\nalways-auth=true\n```\n\n### Exemplo de dependências de cache\n\nVocê pode armazenar em cache e restaurar as dependências usando a ação [`setup-node`](https://github.com/actions/setup-node).\n\nO exemplo a seguir armazena dependências do npm.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'npm'\n- run: npm install\n- run: npm test\n```\n\nO exemplo a seguir armazena dependências para o Yarn.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'yarn'\n- run: yarn\n- run: yarn test\n```\n\nO exemplo a seguir armazena dependências para pnpm (v6.10+).\n\n```yaml copy\n# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.\n# São fornecidas por terceiros e regidas por\n# termos de serviço, política de privacidade e suporte separados\n# online.\n\n# NOTE: pnpm caching support requires pnpm version >= 6.10.0\n\nsteps:\n- uses: actions/checkout@v6\n- uses: pnpm/action-setup@0609f0983b7a228f052f81ef4c3d6510cae254ad\n  with:\n    version: 6.10.0\n- uses: actions/setup-node@v4\n  with:\n    node-version: '20'\n    cache: 'pnpm'\n- run: pnpm install\n- run: pnpm test\n```\n\nSe houver uma necessidade específica ou precisar de controles mais precisos de cache, use a [ação `cache`](https://github.com/marketplace/actions/cache). Para saber mais, confira [Referência do cache de dependência](/pt/enterprise-server@3.20/actions/using-workflows/caching-dependencies-to-speed-up-workflows).\n\n## Criar e testar seu código\n\nVocê pode usar os mesmos comandos usados localmente para criar e testar seu código. Por exemplo, se você executar `npm run build` para executar as etapas de build definidas no arquivo `package.json` e `npm test` para executar o conjunto de testes, adicionará esses comandos ao arquivo de fluxo de trabalho.\n\n```yaml copy\nsteps:\n- uses: actions/checkout@v6\n- name: Use Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: '20.x'\n- run: npm install\n- run: npm run build --if-present\n- run: npm test\n```\n\n## Empacotar dados do fluxo de trabalho como artefatos\n\nVocê 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 saber mais, confira [Armazenar e compartilhar dados com artefatos de fluxo de trabalho](/pt/enterprise-server@3.20/actions/using-workflows/storing-workflow-data-as-artifacts).\n\n## Publicar nos registros do pacote\n\nVocê 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 no GitHub Packages, confira [Publicar pacotes do Node.js](/pt/enterprise-server@3.20/actions/publishing-packages/publishing-nodejs-packages)."}