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.json
etest.js
. - Certifique-se de que o ficheiro
package.json
inclui um scriptstart
e 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
gcloud
nesta 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
name
especifica que a imagemnode
do Docker Hub é usada pelo Cloud Build para executar a sua tarefa. Quando especifica anode
imagem, 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ó ename: node:12
usanode:12
. O campo
entrypoint
especifica 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 comandoinstall
no passo de compilaçãonpm
. O campoargs
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, adicioneinstall
ao campoargs
para invocar o comandoinstall
:steps: - name: 'node' entrypoint: 'npm' args: ['install']
Adicione testes: se tiver definido um script
test
no seupackage.json
, pode configurar o Cloud Build para executar o script adicionandotest
ao campoargs
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
Executar comandos personalizados: se o seu
package.json
contiver comandos personalizados, pode configurar o Cloud Build para executar esse comando. No campoargs
, adicionerun
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 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
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 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çãooptions
no 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
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:
Na raiz do repositório, adicione um ficheiro de configuração da compilação que especifique a
node
versã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
node
com 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
node
que usou no ficheiro de configuração de compilação e, em Valor, especifique a versãonode
. Por exemplo,_NODE_VERSION
e12
.
- 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.