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 ferramentanpmé usada quando a imagemnodeé 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 comandoinstallna etapa de buildnpm. O campoargsde 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, adicioneinstallao campoargspara invocar o comandoinstall:steps: - name: 'node' entrypoint: 'npm' args: ['install']Adicionar testes: se você tiver definido um script
testempackage.json, adicionetestao campoargspara 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 campoargs, adicioneruncomo 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 chamadobuild: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çãooptionsno 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.