

A Amazon não CodeCatalyst está mais aberta a novos clientes. Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar do CodeCatalyst](migration.md).

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

# Conectar repositórios de pacotes a fluxos de trabalho
<a name="workflows-packages"></a>

Um *pacote* é um pacote que inclui o software e os metadados necessários para instalar o software e resolver quaisquer dependências. CodeCatalyst suporta o formato de pacote npm.

Um pacote consiste em:
+ Um nome (por exemplo, `webpack` é o nome de um pacote npm conhecido)
+ Um [namespace](packages-concepts.md#packages-concepts-package-namespaces) opcional (por exemplo, `@types` em `@types/node`)
+ Um conjunto de [versões](packages-concepts.md#packages-concepts-package-versions) (por exemplo, `1.0.0`, `1.0.1`, `1.0.2`)
+ Metadados em nível de pacote (por exemplo, tags npm dist)

Em CodeCatalyst, você pode publicar e consumir pacotes de repositórios de CodeCatalyst pacotes em seus fluxos de trabalho. Você pode configurar uma ação de compilação ou teste com um repositório de CodeCatalyst pacotes para configurar automaticamente o cliente npm de uma ação para enviar e extrair pacotes do repositório especificado.

Para ter mais informações sobre pacotes, consulte [Publique e compartilhe pacotes de software no CodeCatalyst](packages.md).

**nota**  
Atualmente, as ações de compilação e teste oferecem suporte a repositórios de CodeCatalyst pacotes.

**Topics**
+ [Tutorial: extrair de um repositório de pacotes](packages-tutorial.md)
+ [Especificação de repositórios de CodeCatalyst pacotes em fluxos de trabalho](workflows-package-specify-action.md)
+ [Usar tokens de autorização em ações de fluxo de trabalho](workflows-package-export-token.md)
+ [Exemplos: repositórios de pacotes em fluxos de trabalho](workflows-working-packages-ex.md)

# Tutorial: extrair de um repositório de pacotes
<a name="packages-tutorial"></a>

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](packages-concepts.md#packages-concepts-repository). 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 [lodash](https://www.npmjs.com/package/lodash). O pacote `lodash` é 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.com](https://www.npmjs.com/)). Depois, você testa se versões adicionais do `lodash` 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. 

**Topics**
+ [Pré-requisitos](#packages-tutorial-prereqs)
+ [Etapa 1: criar um repositório de origem](#packages-tutorial-source-repo)
+ [Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gateway](#packages-tutorial-package-repo)
+ [Etapa 3: criar a aplicação “Hello World”](#packages-tutorial-create-app)
+ [Etapa 4: criar um fluxo de trabalho que execute o “Hello World”](#packages-tutorial-create-workflow)
+ [Etapa 5: verificar o fluxo de trabalho](#packages-tutorial-verify)
+ [Etapa 6: bloquear importações de npmjs.com](#packages-tutorial-block)
+ [Etapa 7: testar o recurso de bloqueio](#packages-tutorial-test-block)
+ [Limpeza](#packages-tutorial-cleanup)

## Pré-requisitos
<a name="packages-tutorial-prereqs"></a>

Antes de começar
+ Você precisa de um CodeCatalyst **espaço**. Para obter mais informações, consulte [Criar um espaço](spaces-create.md).
+ 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](projects-create.md#projects-create-empty).

## Etapa 1: criar um repositório de origem
<a name="packages-tutorial-source-repo"></a>

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](source-repositories-create.md).

**Como criar um repositório de origem**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Navegue até o projeto, `codecatalyst-package-project`.

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

1. Escolha **Adicionar repositório** e selecione **Criar repositório**.

1. Em **Nome do repositório**, insira:

   ```
   hello-world-app
   ```

1. Escolha **Criar**.

## Etapa 2: Criar os repositórios de pacotes CodeCatalyst e gateway
<a name="packages-tutorial-package-repo"></a>

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](packages.md).

**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)**. 

1. Escolha **Criar repositório de pacotes**.

1. Em **Nome do repositório**, insira:

   ```
   codecatalyst-package-repository
   ```

1. Escolha **\$1 Selecionar repositórios upstream**.

1. Escolha **Repositórios de gateway**.

1. Na **npm-public-registry-gateway**caixa, escolha **Criar**.

1. Escolha **Selecionar**.

1. 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”
<a name="packages-tutorial-create-app"></a>

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, consulte[Criar um Ambiente de Desenvolvimento](devenvironment-create.md).

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 **Ambientes de Desenvolvimento**. 

1. Na parte superior, escolha **Criar ambiente de desenvolvimento** e **AWS Cloud9 (no navegador)**.

1. Verifique se **Repositório** está definido como `hello-world-app` e **Ramificação existente** está definido como `main`. Escolha **Criar**.

   O Ambiente de Desenvolvimento é iniciado em uma nova guia do navegador e seu repositório (`hello-world-app`) é clonado nela.

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

**Como criar a aplicação Node.js “Hello World”**

1. Acesse o Ambiente de Desenvolvimento.

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

   ```
   cd hello-world-app
   ```

1. Inicialize um projeto Node.js:

   ```
   npm init -y
   ```

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

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

   1. Mude para o CodeCatalyst console.

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

   1. Selecione `codecatalyst-package-repository`.

   1. Selecione **Conectar ao repositório**.

   1. Selecione **Criar token**. Um token de acesso pessoal (PAT) é criado para você.

   1. Selecione **Copiar** para copiar os comandos.

   1. Mude para o Ambiente de Desenvolvimento.

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

   1. 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
      ```

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

1. 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
   ```

1. (Opcional) Abra `hello-world-app/package.json` e verifique se as linhas ***red 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"
     }
   }
   ```

1. Em `/hello-world-app`, crie um arquivo chamado `index.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**

1. Mude para o CodeCatalyst console.

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

1. Selecione **npm-public-registry-gateway**.

1. Certifique-se de que `lodash` seja exibido. A coluna **Versão mais recente** indica `4.17.20`.

1. 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**

1. Mude para o Ambiente de Desenvolvimento.

1. 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 pacote `lodash` que você baixou para o Ambiente de Desenvolvimento em uma etapa anterior.

**Como ignorar o diretório “node\$1modules” e confirmar “Hello World”**

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

1. 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”
<a name="packages-tutorial-create-workflow"></a>

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 arquivo `package.json` é `lodash`. O npm procura `lodash` 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](build-workflow-actions.md).

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.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione **Criar fluxo de trabalho**.

1. Em **Repositório de origem**, selecione `hello-world-app`.

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

1. Escolha **Criar**.

1. Selecione **YAML** na parte superior.

1. Exclua o código de amostra YAML.

1. 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 gateway](#packages-tutorial-package-repo)

   Para ter informações sobre as propriedades nesse arquivo, consulte a [Ações de criação e de teste YAML](build-action-ref.md).

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

1. Selecione **Confirmar**.

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

   1. Em **Nome do arquivo do fluxo de trabalho**, mantenha o padrão, `codecatalyst-package-workflow`.

   1. Em **Confirmar mensagem**, insira:

      ```
      add initial workflow file
      ```

   1. Em **Repositório**, selecione **hello-world-app**.

   1. Em **Nome da ramificação**, selecione **principal**.

   1. Selecione **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`), selecione **Ações** e, depois, selecione **Executar**.

   A execução do fluxo de trabalho é iniciada.

1. 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 **RunHelloWorldApp**ação.

1. Escolha a caixa de **RunHelloWorldApp**ação para observar o progresso da ação. 

1. Quando a execução terminar, vá para [Etapa 5: verificar o fluxo de trabalho](#packages-tutorial-verify).

## Etapa 5: verificar o fluxo de trabalho
<a name="packages-tutorial-verify"></a>

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**

1. No diagrama do fluxo de trabalho, escolha a **RunHelloWorldApp**caixa.

   Uma lista de mensagens de log é exibida.

1. 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 de `hello-world`) indica que a dependência `lodash` foi usada.

1. 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
<a name="packages-tutorial-block"></a>

 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) do`lodash`, que podem conter código malicioso. Para obter mais informações, consulte [Editar controles de origem do pacote](package-origin-controls.md) e [Ataques de substituição de dependências](package-origin-controls.md#dependency-substitution-attacks).

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**

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

1. Selecione **npm-publish-registry-gateway**.

1. Selecione `lodash`.

1. Na parte superior, selecione **Controles de origem**.

1. Em **Upstream**, selecione **Bloquear**.

1. 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
<a name="packages-tutorial-test-block"></a>

Nesta seção, você verifica se o bloqueio configurado em [Etapa 6: bloquear importações de npmjs.com](#packages-tutorial-block) está funcionando. Você começa configurando o “Hello World” para solicitar a versão 4.17.2**1** de `lodash` em vez da disponível no seu repositório de gateway, que é a 4.17.2**0**. 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**

1. Mude para o Ambiente de Desenvolvimento.

1. 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”**

1. Abra o `/hello-world-app/package.json`.

1. 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).

1. 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”**

1. Execute o fluxo de trabalho com a incompatibilidade de versão:

   1. Mude para o CodeCatalyst console.

   1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

   1. 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 de `lodash` é 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.

1. 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 a `View Run-2345`.

   1. No diagrama do fluxo de trabalho, escolha a **RunHelloWorldApp**caixa.

   1. 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**

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

1. Selecione **npm-publish-registry-gateway**.

1. Selecione `lodash`.

1. Na parte superior, selecione **Controles de origem**.

1. Em **Upstream**, selecione **Permitir**.

1. 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**

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

   1. Selecione **CI/CD** e, depois, selecione **Fluxos de trabalho**.

   1. Ao lado de `codecatalyst-package-workflow`, selecione **Ações** e **Executar**.

   1. 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 **RunHelloWorldApp**ação.

   1. Escolha a caixa de **RunHelloWorldApp**ação para observar o progresso da ação. 

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

1. 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)**.

   1. Selecione **npm-public-registry-gateway**.

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

   1. Repita essas etapas para verificar se a versão 4.17.21 foi importada para o `codecatalyst-package-repository`.

## Limpeza
<a name="packages-tutorial-cleanup"></a>

Limpe os arquivos e serviços usados neste tutorial para evitar cobranças por eles.

**Para limpar os pacotes (tutorial)**

1. Exclua o `codecatalyst-package-project`:

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

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

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

1. Exclua o token PAT:

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

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

# Especificação de repositórios de CodeCatalyst pacotes em fluxos de trabalho
<a name="workflows-package-specify-action"></a>

Em CodeCatalyst, você pode adicionar um repositório de CodeCatalyst pacotes às suas ações de criação e teste em seu fluxo de trabalho. Seu repositório de pacotes deve ser configurado com um formato de pacote, como npm. Você também pode optar por incluir uma sequência de escopos para o repositório de pacotes selecionado.

Use as instruções a seguir para especificar uma configuração de pacote a ser usada com uma ação de fluxo de trabalho.

------
#### [ Visual ]

**Como especificar a configuração do pacote que uma ação usará (editor visual)**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **Visual**.

1. No diagrama do fluxo de trabalho, selecione a ação **Criar** ou **Testar** com a qual você deseja configurar com um repositório de pacotes.

1. Selecione **Pacotes**.

1. No menu suspenso **Adicionar configuração**, selecione a configuração de pacote que você deseja usar com as ações do fluxo de trabalho.

1. Selecione **Adicionar repositório de pacotes**.

1. No menu suspenso **Package repository**, especifique o nome do *repositório de CodeCatalyst pacotes* que você deseja que a ação use.

   Para ter mais informações sobre repositórios de pacote, consulte [Repositórios de pacotes](packages-concepts.md#packages-concepts-repository).

1. (Opcional) Em **Escopos – opcional**, especifique uma sequência de *escopos* que deseja definir no registro do pacote.

   Na definição de escopos, o repositório de pacotes especificado é configurado como o registro para todos os escopos listados. Se um pacote com o escopo for solicitado por meio do cliente npm, ele usará esse repositório em vez do padrão. Cada nome de escopo deve ter o prefixo “@”.

   Se `Scopes` for omitido, o repositório de pacotes especificado será configurado como o registro padrão para todos os pacotes usados pela ação.

   Para ter mais informações sobre escopos, consulte [Namespaces de pacote](packages-concepts.md#packages-concepts-package-namespaces) e [Pacotes com escopo definido](https://docs.npmjs.com/cli/v10/using-npm/scope).

1. Escolha **Adicionar**.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------
#### [ YAML ]

**Como especificar a configuração do pacote que uma ação usará (editor YAML)**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **YAML**.

1. Em uma ação **Criar** ou **Testar**, adicione um código semelhante ao seguinte:

   ```
   action-name:
    Configuration:
       Packages:
           NpmConfiguration:
             PackageRegistries:
               - PackagesRepository: package-repository
                 Scopes:
                   - "@scope"
   ```

   Para ter mais informações, consulte a descrição da propriedade `Packages` em [Ações de criação e de teste YAML](build-action-ref.md) para sua ação.

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------

# Usar tokens de autorização em ações de fluxo de trabalho
<a name="workflows-package-export-token"></a>

Você pode usar um token fornecido pela ação do fluxo de trabalho para configurar manualmente um gerenciador de pacotes para se autenticar com repositórios de CodeCatalyst pacotes. CodeCatalyst disponibiliza esse token como uma variável de ambiente para você referenciar em suas ações.


| Variável de ambiente | Valor | 
| --- | --- | 
|  CATALYST\$1MACHINE\$1RESOURCE\$1NAME  |  A identidade do usuário do token de autorização.  | 
|  CATALYST\$1PACKAGES\$1AUTHORIZATION\$1TOKEN  |  O valor do token de autorização.  | 

**nota**  
Observe que essas variáveis de ambiente só serão preenchidas se você tiver configurado sua ação para exportar o token de autorização.

Use as instruções a seguir para usar um token de autorização com uma ação de fluxo de trabalho.

------
#### [ Visual ]

**Como usar um token de autorização exportado com uma ação (editor visual)**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **Visual**.

1. No diagrama do fluxo de trabalho, selecione a ação **Criar** ou **Testar** com a qual você deseja configurar com um repositório de pacotes.

1. Selecione **Pacotes**.

1. Ative o **token de autorização de exportação**.

------
#### [ YAML ]

**Como usar um token de autorização exportado com uma ação (editor YAML)**

1. Abra o CodeCatalyst console em [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Selecione o projeto.

1. No painel de navegação, escolha **CI/CD** e **Fluxos de trabalho**.

1. Selecione o nome do fluxo de trabalho. É possível filtrar pelo nome do repositório ou da ramificação de origem em que o fluxo de trabalho está definido, ou filtrar pelo nome ou o status do fluxo de trabalho.

1. Escolha **Editar**.

1. Selecione **YAML**.

1. Em uma ação **Criar** ou **Testar**, adicione um código semelhante ao seguinte:

   ```
   Actions:
     action-name:
       Packages:
         ExportAuthorizationToken: true
   ```

   Você pode referenciar as variáveis de ambiente `$CATALYST_MACHINE_RESOURCE_NAME` e `$CATALYST_PACKAGES_AUTHORIZATION_TOKEN` na seção `Steps` do seu YAML. Para obter mais informações, consulte [Exemplo: configuração manual `pip` para autenticação com CodeCatalyst](workflows-working-packages-ex.md#workflows-working-packages-pypi-token).

1. (Opcional) Selecione **Validar** para validar o código YAML do fluxo de trabalho antes de confirmar.

1. Selecione **Confirmar**, insira uma mensagem de confirmação e escolha **Confirmar** novamente.

------

# Exemplos: repositórios de pacotes em fluxos de trabalho
<a name="workflows-working-packages-ex"></a>

Os exemplos a seguir mostram como referenciar pacotes no arquivo de definição de fluxo de trabalho.

**Topics**
+ [Exemplo: definição de pacotes com `NpmConfiguration`](#workflows-working-packages-ex-basic)
+ [Exemplo: substituição do registro padrão](#workflows-working-packages-ex-overriding-registry)
+ [Exemplo: substituição de escopos em seu registro de pacotes](#workflows-working-packages-ex-overriding-scopes)
+ [Exemplo: configuração manual `pip` para autenticação com CodeCatalyst](#workflows-working-packages-pypi-token)

## Exemplo: definição de pacotes com `NpmConfiguration`
<a name="workflows-working-packages-ex-basic"></a>

O exemplo a seguir mostra como definir um pacote com `NpmConfiguration` no arquivo de definição do fluxo de trabalho.

```
Actions:
  Build:
  Identifier: aws/build-beta@v1
  Configuration:
    Packages:
        NpmConfiguration:
          PackageRegistries:
            - PackagesRepository: main-repo
            - PackagesRepository: scoped-repo
              Scopes:
                - "@scope1"
```

Este exemplo configura o cliente npm da seguinte forma:

```
default: main-repo
@scope1: scoped-repo
```

Neste exemplo, há dois repositórios definidos. O registro padrão é definido como `main-repo` sem um escopo. O escopo `@scope1` está configurado em `PackageRegistries` para `scoped-repo`.

## Exemplo: substituição do registro padrão
<a name="workflows-working-packages-ex-overriding-registry"></a>

O exemplo a seguir mostra como substituir o registro padrão.

```
NpmConfiguration:
  PackageRegistries:
    - PackagesRepository: my-repo-1
    - PackagesRepository: my-repo-2
    - PackagesRepository: my-repo-3
```

Este exemplo configura o cliente npm da seguinte forma:

```
default: my-repo-3
```

Se você especificar vários repositórios padrão, o último repositório terá prioridade. Neste exemplo, o último repositório listado é `my-repo-3`, o que significa que o npm se conectará a `my-repo-3`. Isso substitui os repositórios `my-repo-1` e `my-repo-2`.

## Exemplo: substituição de escopos em seu registro de pacotes
<a name="workflows-working-packages-ex-overriding-scopes"></a>

O exemplo a seguir mostra como substituir um escopo em seu registro de pacotes.

```
NpmConfiguration:
  PackageRegistries:
    - PackagesRepository: my-default-repo
    - PackagesRepository: my-repo-1
      Scopes:
        - "@scope1"
        - "@scope2"
    - PackagesRepository: my-repo-2
      Scopes:
        - "@scope2"
```

Este exemplo configura o cliente npm da seguinte forma:

```
default: my-default-repo
@scope1: my-repo-1
@scope2: my-repo-2
```

Se você incluir escopos substitutos, o último repositório terá prioridade. Neste exemplo, a última vez em que o escopo `@scope2` foi configurado em `PackageRegistries` é para `my-repo-2`. Isso substitui o escopo `@scope2` configurado para `my-repo-1`.

## Exemplo: configuração manual `pip` para autenticação com CodeCatalyst
<a name="workflows-working-packages-pypi-token"></a>

O exemplo a seguir mostra como referenciar variáveis de ambiente de CodeCatalyst autorização em uma ação de criação.

```
Actions:
  Build:
    Identifier: aws/build@v1.0.0
    Configuration:
      Steps:
        - Run: pip config set global.index-url https://$CATALYST_MACHINE_RESOURCE_NAME:$CATALYST_PACKAGES_AUTHORIZATION_TOKEN@codecatalyst.aws/pypi/my-space/my-project/my-repo/simple/
    Packages:
      ExportAuthorizationToken: true
```