Nesta página, explicamos como usar o Cloud Build para criar e testar aplicativos Node.js, armazenar artefatos criados em um repositório npm no Artifact Registry e
gerar informações de procedência do build.
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 pré-instalada com a ferramenta npm. É possível configurar o Cloud Build
para criar seu projeto Node.js com essa ferramenta.
Antes de começar
Nas instruções desta página, pressupomos que você está familiarizado com Node.js. Além disso:
- Conheça o npm.
- Tenha seu projeto Node.jsem mãos, incluindo arquivospackage.jsonetest.js.
- Verifique se o arquivo package.jsoninclui um scriptstarte um scripttest.
- Familiarize-se com a gravação de um arquivo de configuração do Cloud Build.
- Ter um repositório do npm no Artifact Registry. Se você não tiver um, crie um repositório.
- Para executar os comandos gcloudnesta página, instale a Google Cloud CLI.
Como criar com npm
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
pré-instalada com a ferramenta npm. 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 nameespecifica que a imagemnodedo Docker Hub é usada pelo Cloud Build para executar a tarefa. Quando você especificar a imagemnode, omita a versão do nó para usar:latestcomo padrão ou especifique uma versão do nó para usar uma versão específica. Por exemplo,name: nodeusará a versão mais recente do nó, ename: node:12usaránode:12.
- O campo - entrypointespecifica que a ferramenta- npmé usada quando a imagem- nodeé invocada.- steps: - name: 'node' entrypoint: 'npm'
Como configurar builds Node.js
- No diretório raiz do projeto, crie um arquivo de configuração chamado - cloudbuild.yaml.
- Instalar dependências: antes de criar o aplicativo, verifique se todas as dependências do projeto estão instaladas a partir de - npm. É possível instalar dependências usando o comando- installna etapa de build- npm. O campo- argsde uma etapa de build recebe uma lista de argumentos e os transmite para a imagem referenciada pelo campo de nome. No arquivo de configuração de build, adicione- installao campo- argspara invocar o comando- install:- steps: - name: 'node' entrypoint: 'npm' args: ['install']
- Adicionar testes: se você tiver definido um script - testem- package.json, adicione- testao campo- argspara que Cloud Build execute o script:- steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
- Executar comandos personalizados: se - package.jsontiver comandos personalizados, configure o Cloud Build para executar esse comando. No campo- args, adicione- runcomo 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:- steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
- Fazer upload no Artifact Registry: - No arquivo de configuração, adicione o campo - npmPackagese especifique o repositório npm no Registro de artefatos:- artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'- Substitua os seguintes valores: - LOCATION: o local do repositório no Artifact Registry.
- PROJECT_ID: o ID do projeto Google Cloud que contém o repositório do Artifact Registry.
- REPOSITORY_NAME: o nome do repositório npm no Artifact Registry.
- PACKAGE_PATH: o caminho do diretório local
que contém o pacote npm que você quer enviar ao Artifact Registry. Recomendamos
usar um caminho absoluto. O valor PACKAGE_PATHpode ser.para usar o diretório de trabalho atual, mas o campo não pode ser omitido ou deixado em branco. Esse diretório precisa conter um arquivopackage.json.
 
- Opcional: ativar a geração de origem - O Cloud Build pode gerar metadados de procedência verificáveis de Níveis da cadeia de suprimentos para artefatos de software (SLSA) para ajudar a proteger seu pipeline de integração contínua. - Para ativar a geração de procedência, adicione - requestedVerifyOption: VERIFIEDà seção- optionsno arquivo de configuração.
- Iniciar o build: manualmente ou usando gatilhos de build. - Depois que o build for concluído, você poderá acessar os detalhes do repositório no Artifact Registry. - Também é possível acessar os metadados de procedência do build e validar a procedência. 
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 nodecomo uma variável de substituição.
- Crie um gatilho para cada versão de nodeusada 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 nodepara o gatilho.
As etapas a seguir explicam como especificar a versão de node usando variáveis de substituição específicas do gatilho:
- Na raiz do repositório, adicione um arquivo de configuração de build, que especifica a versão - nodecomo uma variável de substituição. No exemplo de arquivo de configuração de build abaixo,- $_NODE_VERSIONé uma variável de substituição definida pelo usuário:- steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
- Para cada versão de - nodeque você quer usada como referência para a build, crie um gatilho de build seguindo estas etapas:- Abra a página Gatilhos no console Google Cloud : 
- Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página. 
- Clique em Abrir. 
- Clique em Criar gatilho. - Na página Criar gatilho, especifique as seguintes configurações: - Insira um nome para o gatilho. 
- Selecione o evento de repositório para iniciar o gatilho. 
- Selecione o repositório que contém o código-fonte e o arquivo de configuração de build. 
- Especifique o regex do nome da ramificação ou da tag que iniciará o gatilho. 
- Configuração: escolha o arquivo de configuração da compilação que você criou anteriormente. 
- Em Variáveis de substituição, clique em Adicionar variável. - Em Variável, especifique a variável de versão nodeusada no arquivo de configuração de build e, em Valor, especifique a versão donode. Por exemplo,_NODE_VERSIONe12.
 
- Em Variável, especifique a variável de versão 
 
- Clique em Criar para salvar o gatilho de compilação. 
 
Use esses gatilhos para criar o código na versão de node que você
especificou no gatilho.
A seguir
- Saiba como ver os resultados da build.
- Saiba como proteger builds.
- Saiba como criar imagens de contêiner.
- Saiba como criar aplicativos Go.
- Saiba como realizar implantações azul-verde no Compute Engine.
- Saiba como resolver erros de build.