Como criar aplicativos Node.js

Nesta página, descrevemos como configurar o Cloud Build para implantar e testar aplicativos Node.js. Se você não estiver familiarizado com o Cloud Build, leia os guias de início rápido e a visão geral da configuração de build primeiro.

O Cloud Build permite que você use qualquer imagem de contêiner disponível publicamente para executar suas tarefas. A imagem pública node do Docker Hub vem com as ferramentas npm e yarn pré-instaladas. É possível configurar o Cloud Build para implantar seu projeto Node.js com essas ferramentas.

Antes de começar

Nas instruções desta página, pressupomos que você está familiarizado com Node.js. Além disso:

  • Tenha seu projeto Node.js em mãos, incluindo arquivos package.json e test.js.
  • Certifique-se de que o arquivo package.json tenha um script start e um script test.
  • Para executar os comandos gcloud desta página, instale a ferramenta de linha de comando gcloud.

Como criar com npm ou yarn

Para executar suas tarefas na imagem node do Docker Hub, especifique o URL da imagem no campo name no arquivo de configuração do Cloud Build. O Cloud Build inicia o contêiner especificado no campo name usando o ponto de entrada padrão da imagem. Para substituir o ponto de entrada padrão e definir como executar a etapa de build quando ela for invocada, adicione um campo entrypoint na etapa de build. A imagem node no Docker Hub vem com as ferramentas npm e yarn pré-instaladas. Especifique as ferramentas no campo entrypoint para invocá-las como o ponto de entrada da etapa de build.

No seguinte arquivo de configuração de build de exemplo:

  • O campo name especifica que a imagem node do Docker Hub é usada pelo Cloud Build para executar a tarefa. Quando você especificar a imagem node, omita a versão do nó para usar :latest como padrão ou especifique uma versão do nó para usar uma versão específica. Por exemplo, name: node usará a versão mais recente do nó e name: node:12 usará node:12.
  • O campo entrypoint especifica que a ferramenta npm ou yarn é usada quando a imagem node é invocada.

npm

  steps:
  - name: node
    entrypoint: npm

yarn

  steps:
  - name: node
    entrypoint: yarn

Como configurar builds Node.js

  1. No diretório raiz do projeto, crie um arquivo de configuração chamado cloudbuild.yaml.

  2. Instalar dependências: antes de compilar o aplicativo, verifique se todas as dependências do projeto estão instaladas a partir de npm ou yarn. É possível instalar dependências usando o comando install na etapa de build npm ou yarn. O campo args de uma etapa de build recebe uma lista de argumentos e os transmite para a imagem referenciada pelo campo do nome. No arquivo de configuração de build, adicione install ao campo args para invocar o comando install:

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    
  3. Adicionar testes: se você tiver definido um script test em package.json, adicione test ao campo args para que Cloud Build execute o script:

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    - name: node
      entrypoint: npm
      args: ['test']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    - name: node
      entrypoint: yarn
      args: ['test']
    
  4. Executar comandos personalizados: se package.json tiver comandos personalizados, configure o Cloud Build para executar esse comando. No campo args, adicione run como o primeiro argumento seguido pelo nome do comando personalizado. O arquivo de configuração de build a seguir tem argumentos para executar um comando personalizado chamado build:

    npm

    steps:
    - name: node
      entrypoint: npm
      args: ['install']
    - name: node
      entrypoint: npm
      args: ['test']
    - name: node
      entrypoint: npm
      args: ['run', 'build']
    

    yarn

    steps:
    - name: node
      entrypoint: yarn
      args: ['install']
    - name: node
      entrypoint: yarn
      args: ['test']
    - name: node
      entrypoint: yarn
      args: ['run', 'build']
    
  5. Inicie a criação usando o arquivo de configuração de build:

    gcloud builds submit --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
    

    Em que:

    • [CONFIG_FILE_PATH] é o caminho para o arquivo de configuração da compilação;
    • [SOURCE_DIRECTORY] é o caminho ou o URL do código-fonte.

    Se você não especificar [CONFIG_FILE_PATH] e [SOURCE_DIRECTORY] no comando gcloud builds submit, o Cloud Build presumirá que o arquivo de configuração e o código-fonte estão no diretório de trabalho atual.

Como executar testes em várias versões de node

Às vezes, é necessário garantir que o projeto funcione em várias versões de node. É possível criar e configurar gatilhos do Cloud Build de maneira que:

  • No arquivo de configuração de build, especifique a versão node como uma variável de substituição.
  • Crie um gatilho para cada versão de node usada como referência durante a compilação no aplicativo.
  • Em cada uma das configurações do gatilho, use o campo de valor da variável de substituição para indicar a versão de node para o gatilho.

As etapas a seguir explicam como especificar a versão de node usando variáveis de substituição específicas do gatilho:

  1. Na raiz do repositório, adicione um arquivo de configuração de build, que especifica a versão de node como uma variável de substituição. No exemplo de arquivo de configuração de build a seguir, $_NODE_VERSION é uma variável de substituição definida pelo usuário:

    npm

    steps:
    - name: node:$_NODE_VERSION
      entrypoint: npm
      args: ['install']
    - name: node:$_NODE_VERSION
      entrypoint: npm
      args: ['test']
    

    yarn

    steps:
    - name: node:$_NODE_VERSION
      entrypoint: yarn
      args: ['install']
    - name: node:$_NODE_VERSION
      entrypoint: yarn
      args: ['test']
    
  2. Para cada versão de node que você quer que seja usada como referência para a build, crie um gatilho de compilação usando as etapas a seguir:

    1. Abra a página Gatilhos no Console do Google Cloud:

      Abrir a página "Gatilhos"

    2. Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.

    3. Clique em Abrir.

    4. Clique em Criar gatilho.

      Na página Criar gatilho, especifique as seguintes configurações:

      1. Insira um nome para o gatilho.

      2. Selecione o evento de repositório para iniciar o gatilho.

      3. Selecione o repositório que contém o código-fonte e o arquivo de configuração de build.

      4. Especifique o regex do nome da ramificação ou da tag que iniciará o gatilho.

      5. Configuração: escolha o arquivo de configuração da versão que você criou anteriormente.

      6. Em Variáveis de substituição, clique em Adicionar variável.

        1. Em Variável, especifique a variável de versão node usada no arquivo de configuração de build, e especifique a versão do node em Valor. Por exemplo, _NODE_VERSION e 12.
    5. Clique em Criar para salvar o gatilho de compilação.

Use esses gatilhos para compilar o código na versão de node que você especificou no gatilho.

Exemplos de código

Veja alguns repositórios de amostra, cada um com um aplicativo Node.js de exemplo e um arquivo de configuração de build para compilar e testar o aplicativo:

  • node-example-npm: um aplicativo Node.js e um arquivo de configuração de build de exemplo para criar o aplicativo com npm.
  • fio-exemplo-de-nó: um aplicativo Node.js e um arquivo de configuração de build de exemplo para criar o aplicativo yarn.
  • multiple-node-versions-example: um exemplo com um arquivo de configuração de build para criar o aplicativo usando como referência várias versões de node.

A seguir