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:
- Conhecer o npm.
- Tenha o seu projeto
Node.jsà mão, incluindo os ficheirospackage.jsonetest.js. - Certifique-se de que o ficheiro
package.jsoninclui um scriptstarte um scripttest. - Conhecer como escrever um ficheiro de configuração do Cloud Build.
- Ter um repositório npm no Artifact Registry. Se não tiver um, crie um novo repositório.
- Para executar os comandos
gcloudnesta página, instale a CLI do Google Cloud.
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
nameespecifica que a imagemnodedo Docker Hub é usada pelo Cloud Build para executar a sua tarefa. Quando especifica anodeimagem, pode omitir a versão do nó para usar a predefinição:latestou especificar uma versão do nó para usar uma versão específica. Por exemplo,name: nodeusa a versão mais recente do nó ename: node:12usanode:12. O campo
entrypointespecifica que a ferramentanpmé usada quando a imagemnodeé invocada.steps: - name: 'node' entrypoint: 'npm'
Configurar compilações Node.js
No diretório raiz do projeto, crie um ficheiro de configuração denominado
cloudbuild.yaml.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 comandoinstallno passo de compilaçãonpm. O campoargsde 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, adicioneinstallao campoargspara invocar o comandoinstall:steps: - name: 'node' entrypoint: 'npm' args: ['install']Adicione testes: se tiver definido um script
testno seupackage.json, pode configurar o Cloud Build para executar o script adicionandotestao campoargs:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']Executar comandos personalizados: se o seu
package.jsoncontiver comandos personalizados, pode configurar o Cloud Build para executar esse comando. No campoargs, adicioneruncomo 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 denominadobuild:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']Carregue para o Artifact Registry:
No ficheiro de configuração, adicione o campo
npmPackagese 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_PATHEste diretório tem de conter um ficheiropackage.json.
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çãooptionsno seu ficheiro de configuração.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
nodecomo uma variável de substituição. - Crie um acionador para cada versão de
nodecom 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
nodepara esse acionador.
Os passos seguintes explicam como especificar a versão node através de variáveis de substituição específicas do acionador:
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']Para cada versão de
nodecom base na qual quer criar, crie um acionador de compilação seguindo estes passos:Abra a página Acionadores na Google Cloud consola:
Selecione o seu projeto no menu pendente do seletor de projetos na parte superior da página.
Clique em Abrir.
Clique em Criar acionador.
Na página Criar acionador, introduza as seguintes definições:
Introduza um nome para o acionador.
Selecione o evento do repositório para iniciar o acionador.
Selecione o repositório que contém o código fonte e o ficheiro de configuração de compilação.
Especifique a regex para o nome da ramificação ou da etiqueta que vai iniciar o acionador.
Configuração: escolha o ficheiro de configuração de compilação que criou anteriormente.
Em Variáveis de substituição, clique em Adicionar variável.
- Em Variável, especifique a variável de versão
nodeque usou no ficheiro de configuração de compilação e, em Valor, especifique a versãonode. Por exemplo,_NODE_VERSIONe12.
- Em Variável, especifique a variável de versão
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?
- Saiba como ver os resultados da compilação.
- Saiba como proteger as compilações.
- Saiba como criar imagens de contentores.
- Saiba como criar aplicações Go.
- Saiba como fazer implementações azul/verde no Compute Engine.
- Saiba como resolver problemas de erros de compilação.