Crie e teste aplicações Node.js

Esta página explica como usar o Cloud Build para criar e testar Node.js aplicações, armazenar artefactos criados num repositório npm no Artifact Registry e gerar informações de proveniência da compilação.

O Cloud Build permite-lhe usar qualquer imagem de contentor disponível publicamente para executar as suas tarefas. A imagem pública node do Docker Hub é pré-instalada com a ferramenta npm. Pode configurar o Cloud Build para criar o seu projeto Node.js com esta ferramenta.

Antes de começar

As instruções nesta página pressupõem que conhece o Node.js. Além disso:

Criar com o npm

Para executar as suas tarefas na imagem node do Docker Hub, especifique o URL da imagem no campo name no ficheiro de configuração do Cloud Build. O Cloud Build inicia o contentor especificado no campo name usando o ponto de entrada predefinido da imagem. Para substituir o ponto de entrada predefinido e definir como o passo de compilação deve ser executado quando é invocado, adicione um campo entrypoint no passo de compilação. A imagem node no Docker Hub é pré-instalada com a ferramenta npm. Especifique as ferramentas no campo entrypoint para as invocar como o ponto de entrada do passo de compilação.

No seguinte exemplo de ficheiro de configuração de compilação:

  • O campo name especifica que a imagem node do Docker Hub é usada pelo Cloud Build para executar a sua tarefa. Quando especifica a nodeimagem, pode omitir a versão do nó para usar a predefinição :latest ou especificar uma versão do nó para usar uma versão específica. Por exemplo, name: node usa a versão mais recente do nó e name: node:12 usa node:12.
  • O campo entrypoint especifica que a ferramenta npm é usada quando a imagem node é invocada.

     steps:
     - name: 'node'
       entrypoint: 'npm'
    

Configurar compilações Node.js

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

  2. Instale as dependências: antes de poder criar a sua aplicação, tem de se certificar de que todas as dependências do seu projeto estão instaladas a partir do npm. Pode instalar dependências através do comando install no passo de compilação npm. O campo args de um passo de compilação usa uma lista de argumentos e passa-os para a imagem referenciada pelo campo de nome. No ficheiro de configuração de compilação, adicione install ao campo args para invocar o comando install:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
    
  3. Adicione testes: se tiver definido um script test no seu package.json, pode configurar o Cloud Build para executar o script adicionando test ao campo args:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node'
       entrypoint: 'npm'
       args: ['test']
    
  4. Executar comandos personalizados: se o seu package.json contiver comandos personalizados, pode configurar o Cloud Build para executar esse comando. No campo args, adicione run como o primeiro argumento, seguido do nome do comando personalizado. O ficheiro de configuração de compilação seguinte tem argumentos para executar um comando personalizado denominado build:

     steps:
     - name: 'node'
        entrypoint: 'npm'
        args: ['install']
     - name: 'node'
        entrypoint: 'npm'
        args: ['test']
     - name: 'node'
        entrypoint: 'npm'
        args: ['run', 'build']
    
  5. Carregue para o Artifact Registry:

    No ficheiro de configuração, adicione o campo npmPackages e especifique o seu repositório npm no Artifact Registry:

     artifacts:
        npmPackages:
        - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME'
          packagePath: 'PACKAGE_PATH'
    

    Substitua os seguintes valores:

    • LOCATION: a localização do seu repositório no Artifact Registry.
    • PROJECT_ID: o ID do projeto que contém o seu repositório do Artifact Registry. Google Cloud
    • REPOSITORY_NAME: o nome do seu repositório npm no Artifact Registry.
    • PACKAGE_PATH: o caminho para o diretório local que contém o pacote npm que quer carregar para o Artifact Registry. Recomendamos que use um caminho absoluto. O valor pode ser . para usar o diretório de trabalho atual, mas o campo não pode ser omitido nem deixado vazio.PACKAGE_PATH Este diretório tem de conter um ficheiro package.json.
  6. Opcional: ative a geração de proveniência

    O Cloud Build pode gerar metadados de proveniência de compilação Supply chain Levels for Software Artifacts (SLSA) validáveis para ajudar a proteger a sua pipeline de integração contínua.

    Para ativar a geração de proveniência, adicione requestedVerifyOption: VERIFIED à secção options no seu ficheiro de configuração.

  7. Inicie a compilação: manualmente ou usando acionadores de compilação.

    Quando a compilação estiver concluída, pode ver os detalhes do repositório no Artifact Registry.

    Também pode ver metadados de proveniência da compilação e validar a proveniência.

Executar testes em várias versões do node

Por vezes, é necessário garantir que o seu projeto funciona em várias versões do node. Pode criar e configurar triggers do Cloud Build de modo que:

  • No ficheiro de configuração de compilação, especifique a versão node como uma variável de substituição.
  • Crie um acionador para cada versão de node com base na qual quer criar a sua aplicação.
  • Em cada uma das definições do acionador, use o campo de valor da variável de substituição para indicar a versão do node para esse acionador.

Os passos seguintes explicam como especificar a versão node através de variáveis de substituição específicas do acionador:

  1. Na raiz do repositório, adicione um ficheiro de configuração da compilação que especifique a nodeversão como uma variável de substituição. No ficheiro de configuração de compilação do exemplo seguinte, $_NODE_VERSION é uma variável de substituição definida pelo utilizador:

     steps:
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['test']
    
  2. Para cada versão de node com base na qual quer criar, crie um acionador de compilação seguindo estes passos:

    1. Abra a página Acionadores na Google Cloud consola:

      Abra a página Acionadores

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

    3. Clique em Abrir.

    4. Clique em Criar acionador.

      Na página Criar acionador, introduza as seguintes definições:

      1. Introduza um nome para o acionador.

      2. Selecione o evento do repositório para iniciar o acionador.

      3. Selecione o repositório que contém o código fonte e o ficheiro de configuração de compilação.

      4. Especifique a regex para o nome da ramificação ou da etiqueta que vai iniciar o acionador.

      5. Configuração: escolha o ficheiro de configuração de compilação que 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 que usou no ficheiro de configuração de compilação e, em Valor, especifique a versão node. Por exemplo, _NODE_VERSION e 12.
    5. Clique em Criar para guardar o acionador de compilação.

Pode usar estes acionadores para criar o seu código na versão do node que especificou no acionador.

O que se segue?