Tutorial: extrair dependências de um repositório de CodeCatalyst pacotes usando um fluxo de trabalho - Amazon CodeCatalyst

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 dependências de um repositório de CodeCatalyst pacotes usando um fluxo de trabalho

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 lodash npm. O lodash 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.com). Em seguida, você testa se versões adicionais do lodash 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.

Pré-requisitos

Antes de começar

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, consulteCriando um repositório de origem.

Como criar um repositório de origem
  1. Abra o CodeCatalyst console em https://codecatalyst.aws/.

  2. Navegue até seu projeto,codecatalyst-package-project.

  3. No painel de navegação, selecione Código e, em seguida, selecione Repositórios de origem.

  4. Escolha Adicionar repositório e selecione Criar repositório.

  5. Em Nome do repositório, digite:

    hello-world-app
  6. 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
  1. No painel de navegação, selecione Packages (pacotes).

  2. Escolha Criar repositório de pacotes.

  3. Em Nome do repositório, digite:

    codecatalyst-package-repository
  4. Escolha + Selecionar repositórios upstream.

  5. Escolha repositórios do Gateway.

  6. Na npm-public-registry-gatewaycaixa, escolha Criar.

  7. Escolha Selecionar.

  8. 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
  1. No painel de navegação, escolha Código e, em seguida, escolha Dev Environments.

  2. Na parte superior, escolha Create Dev Environment e, em seguida, escolha AWS Cloud9 (no navegador).

  3. 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.

  4. Deixe as duas guias CodeCatalyst do navegador abertas e vá para o próximo procedimento.

Para criar o aplicativo 'Hello World' Node.js
  1. Acesse seu ambiente de desenvolvimento.

  2. No prompt do terminal, mude para o diretório raiz do repositório de hello-world-app origem:

    cd hello-world-app
  3. Inicialize um projeto Node.js:

    npm init -y

    A inicialização cria um package.json arquivo no diretório raiz dohello-world-app.

  4. Conecte o cliente npm em seu ambiente de desenvolvimento ao seu repositório de CodeCatalyst pacotes:

    1. Mude para o CodeCatalyst console.

    2. No painel de navegação, selecione Packages (pacotes).

    3. Selecione codecatalyst-package-repository.

    4. Escolha Conectar ao repositório.

    5. Escolha Criar token. Um token de acesso pessoal (PAT) é criado para você.

    6. Escolha Copiar para copiar os comandos.

    7. Mude para seu ambiente de desenvolvimento.

    8. Verifique se você está no hello-world-app diretório.

    9. 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
  5. 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 a lodash dependência e cria um node_modules diretório contendo lodash todas as suas dependências.

  6. 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
  7. (Opcional) Abra hello-world-app/package.json e verifique se as linhas em negrito vermelho 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" } }
  8. Em/hello-world-app, crie um arquivo chamado index.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 o 'lodash' foi importado para seu gateway e CodeCatalyst repositórios de pacotes
  1. Mude para o CodeCatalyst console.

  2. No painel de navegação, selecione Packages (pacotes).

  3. Escolha npm-public-registry-gateway.

  4. Certifique-se de que lodash seja exibido. A coluna Versão mais recente indica4.17.20.

  5. 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
  1. Mude para seu ambiente de desenvolvimento.

  2. Verifique se você ainda está no hello-world-app diretório e, em seguida, execute o aplicativo:

    node index.js

    Uma Hello World mensagem é exibida. O Node.js executou o aplicativo usando o lodash 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'
  1. Ignore o node_modules diretório. Digite:

    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 deste tutorial.

  2. 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çãonpm install.

  • - Run: npm install

    Esse comando instrui o npm a instalar as dependências especificadas no package.json arquivo. A única dependência especificada no package.json arquivo élodash. npm procura lodash 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 encontralodash, 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
  1. Mude para o CodeCatalyst console.

  2. No painel de navegação, escolha CI/CD e, em seguida, escolha Fluxos de trabalho.

  3. Escolha Criar fluxo de trabalho.

  4. Em Repositório de origem, escolhahello-world-app.

  5. Para Branch, escolhamain.

    O arquivo de definição do fluxo de trabalho será criado no repositório e na ramificação de origem escolhidos.

  6. Escolha Criar.

  7. Escolha YAML na parte superior.

  8. Exclua o código de amostra YAML.

  9. 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-repositorysubstitua pelo nome do repositório de CodeCatalyst pacotes que você criou. Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gateway

    Para obter informações sobre as propriedades desse arquivo, consulte Crie e teste a definição YAML da ação o.

  10. (Opcional) Escolha Validar para garantir que o código YAML seja válido antes de confirmar.

  11. Escolha Commit (Confirmar).

  12. Na caixa de diálogo Confirmar fluxo de trabalho, insira o seguinte:

    1. Para o nome do arquivo do fluxo de trabalho, mantenha o padrão,codecatalyst-package-workflow.

    2. Em Confirmar mensagem, digite:

      add initial workflow file
    3. Para Repositório, escolha hello-world-app.

    4. Em Nome da filial, escolha principal.

    5. Escolha Commit (Confirmar).

    Agora você criou um fluxo de trabalho.

Para executar o fluxo de trabalho
  1. 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.

  2. 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.

  3. Escolha a caixa de RunHelloWorldAppação para observar o progresso da ação.

  4. 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
  1. No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.

    Uma lista de mensagens de registro é exibida.

  2. 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 a lodash dependência foi usada com sucesso.

  3. 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
  1. No painel de navegação, selecione Packages (pacotes).

  2. Escolha npm-publish-registry-gateway.

  3. Selecione lodash.

  4. Na parte superior, escolha os controles do Origin.

  5. Em Upstream, escolha Bloquear.

  6. 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
  1. Mude para seu ambiente de desenvolvimento.

  2. 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'
  1. Abra o /hello-world-app/package.json.

  2. Altere a lodash versão para 4.17.21 conforme mostrado em negrito vermelho:

    { "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).

  3. 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 extrair a versão 4.17.21 de 'lodash'
  1. Execute o fluxo de trabalho com a incompatibilidade de versão:

    1. Mude para o CodeCatalyst console.

    2. No painel de navegação, escolha CI/CD e, em seguida, escolha Fluxos de trabalho.

    3. Ao lado decodecatalyst-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 do lodash é 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.

  2. Verifique se o fluxo de trabalho falhou:

    1. Na notificação verde na parte superior, à direita, escolha o link para a execução. O link é semelhante View Run-2345 a.

    2. No diagrama do fluxo de trabalho, escolha a RunHelloWorldAppcaixa.

    3. 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
  1. No painel de navegação, selecione Packages (pacotes).

  2. Escolha npm-publish-registry-gateway.

  3. Selecione lodash.

  4. Na parte superior, escolha os controles do Origin.

  5. Em Upstream, escolha Permitir.

  6. 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
  1. 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:

    1. Escolha CI/CD e, em seguida, escolha Fluxos de trabalho.

    2. Ao lado decodecatalyst-package-workflow, escolha Ações e escolha Executar.

    3. 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.

    4. Escolha a caixa de RunHelloWorldAppação para observar o progresso da ação.

    5. 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.

  2. Verifique se a versão 4.17.21 foi importada para seus repositórios CodeCatalyst e repositórios do gateway:

    1. No painel de navegação, selecione Packages (pacotes).

    2. Escolha npm-public-registry-gateway.

    3. 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.

    4. 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
  1. Exclua ocodecatalyst-package-project:

    1. No CodeCatalyst console, navegue até o codecatalyst-package-project projeto se você ainda não estiver lá.

    2. No painel de navegação, escolha Configurações do projeto.

    3. Escolha Excluir projetodelete, 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.

  2. Exclua o token PAT:

    1. Escolha seu nome de usuário à direita e escolha Minhas configurações.

    2. 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.