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á.
Tutorial: extrair de um repositório de pacotes
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. O aplicativo tem uma única dependência: o pacote lodashlodash
pacote é usado para transformar uma hello-world
string emHello World
. Você usará a versão 4.17.20 deste 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 com êxito.
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
- Etapa 1: criar um repositório de origem
- Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gateway
- Etapa 3: Crie o aplicativo 'Hello World'
- Etapa 4: criar um fluxo de trabalho que execute o 'Hello World'
- Etapa 5: verificar o fluxo de trabalho
- Etapa 6: bloquear importações de npmjs.com
- Etapa 7: testar o recurso de bloqueio
- Limpeza
Pré-requisitos
Antes de começar
-
Você precisa de um CodeCatalyst espaço. Para ter mais informações, consulte Criando 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 ter 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 package.json
arquivos index.js
e.
Para obter mais informações sobre repositórios de origem, consulteCriação de um repositório de origem.
Como criar um repositório de origem
Abra o CodeCatalyst console em https://codecatalyst.aws/
. -
Navegue até seu 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, digite:
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 obter mais informações sobre repositórios de pacotes, consultePublique 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, digite:
codecatalyst-package-repository
-
Escolha + Selecionar repositórios upstream.
-
Escolha repositórios do 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 do gateway está conectado ao registro npmjs.com.
Etapa 3: Crie o aplicativo '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 o aplicativo, você precisa de uma máquina de desenvolvimento com o Node.js e o npm
cliente 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, em seguida, escolha Dev Environments.
-
Na parte superior, escolha Create Dev Environment e, em seguida, escolha AWS Cloud9 (no navegador).
-
Verifique se o repositório está definido como
hello-world-app
e a ramificação existente está definida como.main
Escolha Criar.Seu 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.
Para criar o aplicativo 'Hello World' Node.js
-
Acesse seu ambiente de desenvolvimento.
-
No prompt do terminal, mude para o diretório raiz do repositório de
hello-world-app
origem:cd hello-world-app
-
Inicialize um projeto Node.js:
npm init -y
A inicialização cria um
package.json
arquivo 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
. -
Escolha Conectar ao repositório.
-
Escolha Criar token. Um token de acesso pessoal (PAT) é criado para você.
-
Escolha Copiar para copiar os comandos.
-
Mude para seu ambiente de desenvolvimento.
-
Verifique se você está no
hello-world-app
diretório. -
Cole os comandos. Eles são parecidos com os seguintes:
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
lodash
versão 4.17.20:npm install lodash@v4.17.20 --save --save-exact
O npm procura a
lodash
versão 4.17.20 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 do 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
package.json
arquivo com alodash
dependência e cria umnode_modules
diretório contendolodash
todas as suas dependências. -
-
Teste que
lodash
foi importado com sucesso para seu ambiente de desenvolvimento. Digite: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 linhas emred bold
foram adicionados:{ "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 seguinte conteúdo:dica
Você pode usar a navegação lateral em seu 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).
-
Escolha npm-public-registry-gateway.
-
Certifique-se de que
lodash
seja exibido. A coluna Versão mais recente indica4.17.20
. -
Repita esse procedimento para
codecatalyst-package-repository
o. 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 seu ambiente de desenvolvimento.
-
Verifique se você ainda está no
hello-world-app
diretório e execute o aplicativo:node index.js
Uma
Hello World
mensagem é exibida. O Node.js executou o aplicativo usando olodash
pacote que você baixou para o seu ambiente de desenvolvimento em uma etapa anterior.
Para ignorar o diretório 'node_modules' e confirmar 'Hello World'
-
Ignore o
node_modules
diretório. Digite:echo "node_modules/" >> .gitignore
É uma prática recomendada evitar o comprometimento desse diretório. Além disso, a confirmação desse diretório interferirá nas etapas posteriores deste tutorial.
-
Adicione, confirme e envie:
git add . git commit -m "add the Hello World application" git push
Os arquivos do aplicativo e do projeto 'Hello World' são adicionados ao seu repositório de origem.
Etapa 4: criar um fluxo de trabalho que execute o 'Hello World'
Nesta etapa, você cria um fluxo de trabalho que executa o aplicativo 'Hello World' usando a lodash
dependência. O fluxo de trabalho inclui uma única ação ou tarefa chamadaRunHelloWorldApp
. A RunHelloWorldApp
ação 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
package.json
arquivo. A única dependência especificada nopackage.json
arquivo élodash
. npm procuralodash
nos seguintes locais:-
Na imagem do Docker executando 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 o aplicativo 'Hello World' usando a dependência especificada no arquivo.
package.json
Observe que a RunHelloWorldApp
ação é uma ação de criação, conforme indicado pelo aws/build@v1
identificador próximo à parte superior do fluxo de trabalho. Para obter mais informações sobre a ação de criação, consulteConstruindo 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, em seguida, escolha Fluxos de trabalho.
-
Escolha Criar fluxo de trabalho.
-
Em Repositório de origem, escolha
hello-world-app
. -
Para Branch, escolha
main
.O arquivo de definição do fluxo de trabalho será criado no repositório e na ramificação de origem escolhidos.
-
Escolha Criar.
-
Escolha YAMLperto do topo.
-
Exclua o código de YAML amostra.
-
Adicione o YAML código a seguir:
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, substitua
codecatalyst-package-repository
com o nome do repositório de CodeCatalyst pacotes que você criou. Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gatewayPara obter informações sobre as propriedades desse arquivo, consulte Crie e teste ações YAML o.
-
(Opcional) Escolha Validar para garantir que o YAML código seja válido antes de confirmar.
-
Escolha Commit (Confirmar).
-
Na caixa de diálogo Confirmar fluxo de trabalho, digite o seguinte:
-
Para o nome do arquivo do fluxo de trabalho, mantenha o padrão,
codecatalyst-package-workflow
. -
Em Confirmar mensagem, digite:
add initial workflow file
-
Para Repositório, escolha hello-world-app.
-
Em Nome da filial, escolha principal.
-
Escolha Commit (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
), escolha Ações e, em seguida, escolha 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
View Run-1234
a.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 corrida terminar, vá paraEtapa 5: verificar o fluxo de trabalho.
Etapa 5: verificar o fluxo de trabalho
Nesta etapa, você verifica se o fluxo de trabalho executou com êxito o aplicativo 'Hello World' com sua lodash
dependência.
Para verificar se o aplicativo 'Hello World' foi executado usando sua dependência
-
No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.
Uma lista de mensagens de registro é exibida.
-
Expanda a mensagem de
node index.js
registro.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 alodash
dependência foi usada com sucesso. -
Expanda o
npm list
registro.Uma mensagem semelhante à seguinte é exibida:
└── lodash@4.17.20
Essa mensagem indica que a
lodash
versão 4.17.20 foi baixada para a imagem do Docker executando 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 obter 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 lodash
importações 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 seu repositório de gateway
-
No painel de navegação, selecione Packages (pacotes).
-
Escolha npm-publish-registry-gateway.
-
Selecione
lodash
. -
Na parte superior, escolha os controles do Origin.
-
Em Upstream, escolha Bloquear.
-
Escolha Salvar.
Agora você bloqueou as importações para seu repositório de gateway (e repositórios e computadores downstream) de npmjs.com.
Etapa 7: testar o recurso de bloqueio
Nesta seção, você verifica se o bloqueio configurado Etapa 6: bloquear importações de npmjs.com está funcionando. Você começa configurando o 'Hello World' para solicitar a versão 4.17.2 1 lodash
em vez da disponível no seu repositório de gateway, que é a 4.17.2 0. Em seguida, você verifica se o aplicativo 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 verifica se o aplicativo consegue extrair com êxito a versão 4.17.21 do. lodash
Use o conjunto de procedimentos a seguir para testar o recurso de bloqueio.
Antes de começar
-
Mude para seu ambiente de desenvolvimento.
-
Extraia o
codecatalyst-package-workflow.yaml
arquivo que você criou usando o CodeCatalyst console anteriormente:git pull
Para configurar o 'Hello World' para solicitar a versão 4.17.21 do 'lodash'
-
Abra o
/hello-world-app/package.json
. -
Altere a
lodash
versão para 4.17.21 conforme mostrado emred 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
Para testar se 'Hello World' não pode obter 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, em seguida, escolha Fluxos de trabalho.
-
Ao lado de
codecatalyst-package-workflow
, escolha Ações e, em seguida, escolha Executar.O npm examina
package.json
as dependências e vê que a versão 4.17.21 dolodash
é exigida pelo 'Hello World'. O npm procura a dependência nos seguintes locais, na seguinte ordem:-
Na imagem do Docker executando 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 do 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, a importação não ocorre.
lodash
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
View Run-2345
a. -
No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.
-
Expanda a mensagem de
npm install
registro.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ê o bloqueou.
-
Para desbloquear importações de npmjs.com
-
No painel de navegação, selecione Packages (pacotes).
-
Escolha npm-publish-registry-gateway.
-
Selecione
lodash
. -
Na parte superior, escolha os controles do Origin.
-
Em Upstream, escolha Permitir.
-
Escolha Salvar.
Agora você desbloqueou as importações de.
lodash
Seu fluxo de trabalho agora pode importar a versão 4.17.21 do.
lodash
Para testar se as importações do npmjs.com estão desbloqueadas
-
Execute seu fluxo de trabalho novamente. Desta vez, o fluxo de trabalho deve ser bem-sucedido porque a importação do 4.17.21 agora deve funcionar. Para executar o fluxo de trabalho novamente:
-
Escolha CI/CD e, em seguida, escolha Fluxos de trabalho.
-
Ao lado de
codecatalyst-package-workflow
, escolha Ações e escolha Executar. -
Na notificação verde na parte superior, à direita, escolha o link para a execução. O link é semelhante
View Run-3456
a.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
npm list
registro e verifique se aparece uma mensagem semelhante à seguinte:└── lodash@4.17.21
Essa mensagem indica que a
lodash
versão 4.17.21 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).
-
Escolha 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 escolhendo 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.
-
Escolha Excluir projeto
delete
, insira e escolha Excluir projeto.CodeCatalyst exclui todos os recursos do projeto, incluindo os repositórios de origem, gateway e CodeCatalyst pacotes. O Dev Environment também é excluído.
-
-
Exclua o PAT token:
-
Escolha seu nome de usuário à direita e escolha Minhas configurações.
-
Em Tokens de acesso pessoal, escolha o token que você criou neste tutorial e escolha 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.