As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Neste tutorial, você aprende a criar um fluxo de trabalho que executa um aplicativo cujas dependências são extraídas de um repositório de CodeCatalyst pacotes. O aplicativo é um aplicativo Node.js simples que imprime uma mensagem 'Hello World' nos CodeCatalyst registros. A aplicação tem uma única dependência: o pacote npm lodashlodash
é usado para transformar uma string hello-world
em Hello World
. Você usará a versão 4.17.20 desse pacote.
Depois de configurar seu aplicativo e fluxo de trabalho, você configura CodeCatalyst para impedir que versões adicionais do lodash
sejam importadas para o repositório de CodeCatalyst pacotes a partir do registro externo público (npmjs.comlodash
foram bloqueadas.
Ao final deste tutorial, você deve ter uma boa compreensão de como um fluxo de trabalho interage com repositórios de pacotes, tanto internos quanto externos CodeCatalyst, para recuperar pacotes. Você também deve entender as behind-the-scenes interações que ocorrem entre o npm, seu repositório de pacotes, seu fluxo de trabalho e o arquivo do package.json
seu aplicativo.
Tópicos
Pré-requisitos
Antes de começar
-
Você precisa de um CodeCatalyst espaço. Para obter mais informações, consulte Criar um espaço.
-
Em seu CodeCatalyst espaço, você precisa de um projeto vazio chamado:
codecatalyst-package-project
Use a opção Começar do zero para criar esse projeto.
Para obter mais informações, consulte Criando um projeto vazio na Amazon CodeCatalyst.
Etapa 1: criar um repositório de origem
Nesta etapa, você cria um repositório de origem no CodeCatalyst. Esse repositório armazena os arquivos de origem do tutorial, como os arquivos index.js
e package.json
.
Para ter mais informações sobre repositórios de origem, consulte Criar um repositório de origem.
Como criar um repositório de origem
Abra o CodeCatalyst console em https://codecatalyst.aws/
. -
Navegue até o projeto,
codecatalyst-package-project
. -
No painel de navegação, selecione Código e, em seguida, selecione Repositórios de origem.
-
Escolha Adicionar repositório e selecione Criar repositório.
-
Em Nome do repositório, insira:
hello-world-app
-
Escolha Criar.
Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gateway
Nesta etapa, você cria um repositório de pacotes em seu CodeCatalyst projeto e o conecta a um repositório de gateway, também em seu CodeCatalyst projeto. Posteriormente, você importa a dependência do tutorial, lodash
, de npmjs.com para os dois repositórios.
O repositório do gateway é a “cola” que conecta seu repositório de pacotes CodeCatalyst ao npmjs.com público.
Para ter mais informações sobre repositórios de pacote, consulte Publique e compartilhe pacotes de software no CodeCatalyst.
nota
Este tutorial usa os termos repositório de CodeCatalyst pacotes e repositório de gateway para se referir aos dois repositórios que você cria CodeCatalyst no procedimento a seguir.
Para criar repositórios de CodeCatalyst pacotes e gateways
-
No painel de navegação, selecione Packages (pacotes).
-
Escolha Criar repositório de pacotes.
-
Em Nome do repositório, insira:
codecatalyst-package-repository
-
Escolha + Selecionar repositórios upstream.
-
Escolha Repositórios de gateway.
-
Na npm-public-registry-gatewaycaixa, escolha Criar.
-
Escolha Selecionar.
-
Escolha Criar.
CodeCatalyst cria um repositório de pacotes chamado
codecatalyst-package-repository
que está conectado a um repositório de gateway. O repositório de gateway está conectado ao registro npmjs.com.
Etapa 3: criar a aplicação “Hello World”
Nesta etapa, você cria um aplicativo Node.js 'Hello World' e importa sua dependência (lodash
) para seu gateway e CodeCatalyst repositórios de pacotes.
Para criar a aplicação, você precisa de uma máquina de desenvolvimento com o Node.js e o cliente npm
associado instalado.
Este tutorial pressupõe que você usará um ambiente de CodeCatalyst desenvolvimento como sua máquina de desenvolvimento. Embora você não precise usar um ambiente de CodeCatalyst desenvolvimento, ele é recomendado porque ele fornece um ambiente de trabalho limpo, tem o Node.js npm
pré-instalado e é fácil de excluir quando você terminar o tutorial. Para obter mais informações sobre ambientes de CodeCatalyst desenvolvimento, consulteCriar um Ambiente de Desenvolvimento.
Use as instruções a seguir para iniciar um ambiente de CodeCatalyst desenvolvimento e usá-lo para criar o aplicativo “Hello World”.
Para iniciar um ambiente de CodeCatalyst desenvolvimento
-
No painel de navegação, escolha Código e Ambientes de Desenvolvimento.
-
Na parte superior, escolha Criar ambiente de desenvolvimento e AWS Cloud9 (no navegador).
-
Verifique se Repositório está definido como
hello-world-app
e Ramificação existente está definido comomain
. Escolha Criar.O Ambiente de Desenvolvimento é iniciado em uma nova guia do navegador e seu repositório (
hello-world-app
) é clonado nela. -
Deixe as duas guias CodeCatalyst do navegador abertas e vá para o próximo procedimento.
Como criar a aplicação Node.js “Hello World”
-
Acesse o Ambiente de Desenvolvimento.
-
No prompt do terminal, mude para o diretório raiz do repositório de origem
hello-world-app
:cd hello-world-app
-
Inicialize um projeto Node.js:
npm init -y
A inicialização cria um arquivo
package.json
no diretório raiz dohello-world-app
. -
Conecte o cliente npm em seu ambiente de desenvolvimento ao seu repositório de CodeCatalyst pacotes:
-
Mude para o CodeCatalyst console.
-
No painel de navegação, selecione Packages (pacotes).
-
Selecione
codecatalyst-package-repository
. -
Selecione Conectar ao repositório.
-
Selecione Criar token. Um token de acesso pessoal (PAT) é criado para você.
-
Selecione Copiar para copiar os comandos.
-
Mude para o Ambiente de Desenvolvimento.
-
Verifique se você está no diretório
hello-world-app
. -
Cole os comandos. Eles são semelhantes a:
npm set registry=https://packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/codecatalyst-package-repository/ --location project npm set //packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/hello-world-app/:_authToken=
username
:token-secret
-
-
Importe a versão 4.17.20 de
lodash
:npm install lodash@v4.17.20 --save --save-exact
O npm procura a versão 4.17.20 de
lodash
nos seguintes locais, na seguinte ordem:-
No Ambiente de Desenvolvimento. Ele não consegue encontrá-lo aqui.
-
No repositório de CodeCatalyst pacotes. Ele não consegue encontrá-lo aqui.
-
No repositório de gateway. Ele não consegue encontrá-lo aqui.
-
Em npmjs.com. Ele o encontra aqui.
O npm importa
lodash
para o repositório do gateway, o repositório de CodeCatalyst pacotes e o Dev Environment.nota
Se você não tivesse conectado o cliente npm ao seu repositório de CodeCatalyst pacotes na etapa 4, o npm teria sido retirado
lodash
diretamente do npmjs.com e não teria importado o pacote para nenhum dos repositórios.O npm também atualiza seu arquivo
package.json
com a dependêncialodash
e cria um diretórionode_modules
contendolodash
e todas as dependências. -
-
Teste se
lodash
foi importado para seu Ambiente de Desenvolvimento. Insira:npm list
A mensagem a seguir é exibida, indicando uma importação bem-sucedida:
`-- lodash@4.17.20
-
(Opcional) Abra
hello-world-app/package.json
e verifique se as linhasred bold
foram adicionadas:{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC",
dependencies": { "lodash": "4.17.20"
} } -
Em
/hello-world-app
, crie um arquivo chamadoindex.js
com o conteúdo a seguir:dica
Você pode usar a navegação lateral no Ambiente de Desenvolvimento para criar esse arquivo.
// Importing lodash library const _ = require('lodash'); // Input string const inputString = 'hello-world'; // Transforming the string using lodash const transformedString = _.startCase(inputString.replace('-', ' ')); // Outputting the transformed string to the console console.log(transformedString);
Para testar se 'lodash' foi importado para seu gateway e CodeCatalyst repositórios de pacotes
-
Mude para o CodeCatalyst console.
-
No painel de navegação, selecione Packages (pacotes).
-
Selecione npm-public-registry-gateway.
-
Certifique-se de que
lodash
seja exibido. A coluna Versão mais recente indica4.17.20
. -
Repita esse procedimento para o
codecatalyst-package-repository
. Talvez seja necessário atualizar a janela do navegador para ver o pacote importado.
Para testar o “Hello World” em seu Ambiente de Desenvolvimento
-
Mude para o Ambiente de Desenvolvimento.
-
Verifique se você ainda está no diretório
hello-world-app
e execute a aplicação:node index.js
Uma mensagem
Hello World
é exibida. O Node.js executou a aplicação usando o pacotelodash
que você baixou para o Ambiente de Desenvolvimento em uma etapa anterior.
Como ignorar o diretório “node_modules” e confirmar “Hello World”
-
Ignore o diretório
node_modules
. Insira:echo "node_modules/" >> .gitignore
É uma prática recomendada evitar confirmar esse diretório. Além disso, a confirmação desse diretório interferirá nas etapas posteriores neste tutorial.
-
Adicione, confirme e envie:
git add . git commit -m "add the Hello World application" git push
Os arquivos da aplicação e do projeto “Hello World” são adicionados ao repositório de origem.
Etapa 4: criar um fluxo de trabalho que execute o “Hello World”
Nesta etapa, crie um fluxo de trabalho que executará a aplicação “Hello World” usando a dependência lodash
. O fluxo de trabalho inclui uma única ação ou tarefa chamada RunHelloWorldApp
. A ação RunHelloWorldApp
inclui os seguintes comandos e seções notáveis:
-
Packages
Esta seção indica o nome do repositório de CodeCatalyst pacotes ao qual a ação deve se conectar durante a execução
npm install
. -
- Run: npm install
Esse comando instrui o npm a instalar as dependências especificadas no arquivo
package.json
. A única dependência especificada no arquivopackage.json
élodash
. O npm procuralodash
nos seguintes locais:-
Na imagem do Docker que executa a ação. Ele não consegue encontrá-lo aqui.
-
No repositório de CodeCatalyst pacotes. Ele o encontra aqui.
Depois que o npm encontra
lodash
, ele o importa para a imagem do Docker que executa a ação. -
-
- Run: npm list
Esse comando imprime qual versão do
lodash
foi baixada para a imagem do Docker que executa a ação. -
- Run: node index.js
Esse comando executa a aplicação “Hello World” usando a dependência especificada no arquivo
package.json
.
Observe que a ação RunHelloWorldApp
é uma ação de criação, conforme indicado pelo identificador aws/build@v1
próximo à parte superior do fluxo de trabalho. Para ter mais informações sobre a ação de criação, consulte Criação com fluxos de trabalho.
Use as instruções a seguir para criar um fluxo de trabalho que extraia a lodash
dependência do seu repositório de CodeCatalyst pacotes e, em seguida, execute seu aplicativo “Hello World”.
Para criar um fluxo de trabalho
-
Mude para o CodeCatalyst console.
-
No painel de navegação, escolha CI/CD e Fluxos de trabalho.
-
Selecione Criar fluxo de trabalho.
-
Em Repositório de origem, selecione
hello-world-app
. -
Em Ramificação, selecione
main
.O arquivo de definição do fluxo de trabalho será criado no repositório de origem e na ramificação escolhidos.
-
Escolha Criar.
-
Selecione YAML na parte superior.
-
Exclua o código de amostra YAML.
-
Adicione o seguinte código YAML:
Name: codecatalyst-package-workflow SchemaVersion: "1.0" # Required - Define action configurations. Actions: RunHelloWorldApp: # Identifies the action. Do not modify this value. Identifier: aws/build@v1 Compute: Type: Lambda Inputs: Sources: - WorkflowSource # This specifies your source repository. Configuration: Steps: - Run: npm install - Run: npm list - Run: node index.js Container: # This specifies the Docker image that runs the action. Registry: CODECATALYST Image: CodeCatalystLinuxLambda_x86_64:2024_03 Packages: NpmConfiguration: PackageRegistries: - PackagesRepository:
codecatalyst-package-repository
No código anterior,
codecatalyst-package-repository
substitua pelo nome do repositório de CodeCatalyst pacotes que você criou. Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gatewayPara ter informações sobre as propriedades nesse arquivo, consulte a Ações de criação e de teste YAML.
-
(Opcional) Selecione Validar para garantir que o código YAML seja válido antes de confirmar.
-
Selecione Confirmar.
-
Na caixa de diálogo Confirmar fluxo de trabalho, insira o seguinte:
-
Em Nome do arquivo do fluxo de trabalho, mantenha o padrão,
codecatalyst-package-workflow
. -
Em Confirmar mensagem, insira:
add initial workflow file
-
Em Repositório, selecione hello-world-app.
-
Em Nome da ramificação, selecione principal.
-
Selecione Confirmar.
Agora você criou um fluxo de trabalho.
-
Para executar o fluxo de trabalho
-
Ao lado do fluxo de trabalho que você acabou de criar (
codecatalyst-package-workflow
), selecione Ações e, depois, selecione Executar.A execução do fluxo de trabalho é iniciada.
-
Na notificação verde na parte superior, à direita, escolha o link para a execução. O link é semelhante a
View Run-1234
.Um diagrama do fluxo de trabalho é exibido, mostrando quem iniciou a execução e a RunHelloWorldAppação.
-
Escolha a caixa de RunHelloWorldAppação para observar o progresso da ação.
-
Quando a execução terminar, vá para Etapa 5: verificar o fluxo de trabalho.
Etapa 5: verificar o fluxo de trabalho
Nesta etapa, você verifica se o fluxo de trabalho executou a aplicação “Hello World” com a dependência lodash
.
Como verificar se a aplicação “Hello World” foi executada usando a dependência
-
No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.
Uma lista de mensagens de log é exibida.
-
Expanda a mensagem de log
node index.js
.A seguinte mensagem é exibida:
[Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World
A aparência de
Hello Word
(em vez dehello-world
) indica que a dependêncialodash
foi usada. -
Expanda o log
npm list
.Uma mensagem semelhante à seguinte é exibida:
└── lodash@4.17.20
Essa mensagem indica que a versão 4.17.20 de
lodash
foi baixada para a imagem do Docker que executa a ação do fluxo de trabalho.
Etapa 6: bloquear importações de npmjs.com
Agora que a lodash
versão 4.17.20 está presente em seu gateway e repositórios de CodeCatalyst pacotes, você pode bloquear importações de outras versões. O bloqueio impede que você importe acidentalmente versões posteriores (ou anteriores) dolodash
, que podem conter código malicioso. Para ter mais informações, consulte Editar controles de origem do pacote e Ataques de substituição de dependências.
Use as instruções a seguir para bloquear as importações de lodash
do seu repositório de gateway. Quando você bloqueia pacotes no gateway, eles também são bloqueados em locais posteriores.
Para bloquear importações para o repositório de gateway
-
No painel de navegação, selecione Packages (pacotes).
-
Selecione npm-publish-registry-gateway.
-
Selecione
lodash
. -
Na parte superior, selecione Controles de origem.
-
Em Upstream, selecione Bloquear.
-
Escolha Salvar.
Agora você bloqueou as importações para seu repositório de gateway (e repositórios e computadores downstream) em npmjs.com.
Etapa 7: testar o recurso de bloqueio
Nesta seção, você verifica se o bloqueio configurado em Etapa 6: bloquear importações de npmjs.com está funcionando. Você começa configurando o “Hello World” para solicitar a versão 4.17.21 de lodash
em vez da disponível no seu repositório de gateway, que é a 4.17.20. Depois, você confere se a aplicação não pode extrair a versão 4.17.21 do nmpjs.com, indicando um bloqueio bem-sucedido. Como teste final, você desbloqueia as importações para o repositório do gateway e confere se a aplicação consegue extrair a versão 4.17.21 de lodash
.
Use o conjunto de procedimentos a seguir para testar o recurso de bloqueio.
Antes de começar
-
Mude para o Ambiente de Desenvolvimento.
-
Extraia o
codecatalyst-package-workflow.yaml
arquivo que você criou usando o CodeCatalyst console anteriormente:git pull
Como configurar “Hello World” para solicitar a versão 4.17.21 de “lodash”
-
Abra o
/hello-world-app/package.json
. -
Altere a
lodash
versão para 4.17.21 conforme mostrado em:red bold
{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "lodash": "
4.17.21
" } }Agora há uma incompatibilidade entre a versão no
package.json
arquivo (4.17.21) e a versão no gateway e nos repositórios de CodeCatalyst pacotes (4.17.20). -
Adicione, confirme e envie:
git add . git commit -m "update package.json to use lodash 4.17.21" git push
Como testar se o “Hello World” não pode receber a versão 4.17.21 de “lodash”
-
Execute o fluxo de trabalho com a incompatibilidade de versão:
-
Mude para o CodeCatalyst console.
-
No painel de navegação, escolha CI/CD e Fluxos de trabalho.
-
Ao lado de
codecatalyst-package-workflow
, selecione Ação e Executar.O npm examina em
package.json
as dependências e vê que a versão 4.17.21 delodash
é exigida pelo “Hello World”. O npm procura a dependência nos seguintes locais, na seguinte ordem:-
Na imagem do Docker que executa a ação. Ele não consegue encontrá-lo aqui.
-
No repositório de CodeCatalyst pacotes. Ele não consegue encontrá-lo aqui.
-
No repositório de gateway. Ele não consegue encontrá-lo aqui.
-
Em npmjs.com. Ele o encontra aqui.
Depois que o npm encontra a versão 4.17.21 em npmjs.com, ele tenta importá-la para o repositório do gateway, mas como você configura o gateway para bloquear as importações de
lodash
, a importação não ocorre.Como a importação não ocorre, o fluxo de trabalho falha.
-
-
-
Verifique se o fluxo de trabalho falhou:
-
Na notificação verde na parte superior, à direita, escolha o link para a execução. O link é semelhante a
View Run-2345
. -
No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.
-
Expanda a mensagem de log
npm install
.A seguinte mensagem é exibida:
[Container] 2024/04/25 17:20:34.995591 Running command npm install npm ERR! code ETARGET npm ERR! notarget No matching version found for lodash@4.17.21. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: /tmp/.npm/_logs/2024-05-08T22_03_26_493Z-debug-0.log
O erro indica que a versão 4.17.21 não foi encontrada. Isso é esperado porque você a bloqueou.
-
Para desbloquear importações de npmjs.com
-
No painel de navegação, selecione Packages (pacotes).
-
Selecione npm-publish-registry-gateway.
-
Selecione
lodash
. -
Na parte superior, selecione Controles de origem.
-
Em Upstream, selecione Permitir.
-
Escolha Salvar.
Agora você desbloqueou as importações de
lodash
.Seu fluxo de trabalho agora pode importar a versão 4.17.21 de
lodash
.
Para testar se as importações de npmjs.com estão desbloqueadas
-
Execute o fluxo de trabalho novamente. Desta vez, o fluxo de trabalho deve ser bem-sucedido porque a importação de 4.17.21 agora deve funcionar. Para executar o fluxo de trabalho novamente:
-
Selecione CI/CD e, depois, selecione Fluxos de trabalho.
-
Ao lado de
codecatalyst-package-workflow
, selecione Ações e Executar. -
Na notificação verde na parte superior, à direita, escolha o link para a execução. O link é semelhante a
View Run-3456
.Um diagrama do fluxo de trabalho é exibido, mostrando quem iniciou a execução e a RunHelloWorldAppação.
-
Escolha a caixa de RunHelloWorldAppação para observar o progresso da ação.
-
Expanda a mensagem de log
npm list
e verifique se uma mensagem semelhante à seguinte é exibida:└── lodash@4.17.21
Essa mensagem indica que a versão 4.17.21 de
lodash
foi baixada.
-
-
Verifique se a versão 4.17.21 foi importada para seus repositórios CodeCatalyst e repositórios do gateway:
-
No painel de navegação, selecione Packages (pacotes).
-
Selecione npm-public-registry-gateway.
-
Encontre
lodash
e verifique se a versão é4.17.21
.nota
Embora a versão 4.17.20 não esteja listada nesta página, você pode encontrá-la escolhendo
lodash
e Versões na parte superior. -
Repita essas etapas para verificar se a versão 4.17.21 foi importada para o
codecatalyst-package-repository
.
-
Limpeza
Limpe os arquivos e serviços usados neste tutorial para evitar cobranças por eles.
Para limpar os pacotes (tutorial)
-
Exclua o
codecatalyst-package-project
:-
No CodeCatalyst console, navegue até o
codecatalyst-package-project
projeto se você ainda não estiver lá. -
No painel de navegação, escolha Configurações do projeto.
-
Selecione Excluir projeto, insira
delete
e selecione Excluir projeto.CodeCatalyst exclui todos os recursos do projeto, incluindo os repositórios de origem, gateway e CodeCatalyst pacotes. O Ambiente de Desenvolvimento também é excluído.
-
-
Exclua o token PAT:
-
Escolha seu nome de usuário à direita e selecione Minhas configurações.
-
Em Tokens de acesso pessoal, escolha o token que você criou neste tutorial e selecione Excluir.
-
Neste tutorial, você aprendeu a criar um fluxo de trabalho que executa um aplicativo que extrai suas dependências de um CodeCatalyst repositório de pacotes. Você também aprendeu a bloquear e desbloquear a entrada de pacotes no gateway e nos repositórios de CodeCatalyst pacotes.