

Amazon non CodeCatalyst è più aperta a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Come migrare da CodeCatalyst](migration.md).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Connessione degli archivi di pacchetti ai flussi di lavoro
<a name="workflows-packages"></a>

Un *pacchetto* è un pacchetto che include sia il software che i metadati necessari per installare il software e risolvere eventuali dipendenze. CodeCatalyst supporta il formato del pacchetto npm.

Un pacchetto è composto da:
+ Un nome (ad esempio, `webpack` è il nome di un popolare pacchetto npm)
+ Uno spazio [dei nomi](packages-concepts.md#packages-concepts-package-namespaces) opzionale (ad esempio, in) `@types` `@types/node`
+ Un insieme di [versioni](packages-concepts.md#packages-concepts-package-versions) (ad esempio,`1.0.0`,`1.0.1`) `1.0.2`
+ Metadati a livello di pacchetto (ad esempio, tag npm dist)

In CodeCatalyst, puoi pubblicare pacchetti e utilizzare pacchetti dagli CodeCatalyst archivi di pacchetti nei tuoi flussi di lavoro. Puoi configurare un'azione di compilazione o test con un repository di CodeCatalyst pacchetti per configurare automaticamente il client npm di un'azione per inviare e estrarre pacchetti dal repository specificato.

Per ulteriori informazioni sui pacchetti, vedere. [Pubblica e condividi pacchetti software in CodeCatalyst](packages.md)

**Nota**  
Attualmente, le azioni di compilazione e test supportano gli archivi di CodeCatalyst pacchetti.

**Topics**
+ [Tutorial: Estrai da un archivio di pacchetti](packages-tutorial.md)
+ [Specificazione degli archivi di CodeCatalyst pacchetti nei flussi di lavoro](workflows-package-specify-action.md)
+ [Utilizzo dei token di autorizzazione nelle azioni del flusso di lavoro](workflows-package-export-token.md)
+ [Esempi: archivi di pacchetti nei flussi di lavoro](workflows-working-packages-ex.md)

# Tutorial: Estrai da un archivio di pacchetti
<a name="packages-tutorial"></a>

[In questo tutorial, imparerai come creare un flusso di lavoro che esegua un'applicazione le cui dipendenze vengono estratte da un archivio di pacchetti. CodeCatalyst ](packages-concepts.md#packages-concepts-repository) L'applicazione è una semplice app Node.js che stampa un messaggio «Hello World» nei log. CodeCatalyst [L'applicazione ha un'unica dipendenza: il pacchetto lodash npm.](https://www.npmjs.com/package/lodash) Il `lodash` pacchetto viene utilizzato per trasformare una `hello-world` stringa in. `Hello World` Utilizzerai la versione 4.17.20 di questo pacchetto.

[Dopo aver configurato l'applicazione e il flusso di lavoro, configurate CodeCatalyst per bloccare l'importazione di `lodash` versioni aggiuntive nel repository dei CodeCatalyst pacchetti dal registro pubblico esterno (npmjs.com).](https://www.npmjs.com/) Quindi verificate che le versioni aggiuntive di siano bloccate correttamente. `lodash`

Alla fine di questo tutorial, dovresti avere una buona comprensione di come un flusso di lavoro interagisce con gli archivi di pacchetti, sia interni che esterni CodeCatalyst, per recuperare i pacchetti. Dovresti anche comprendere le behind-the-scenes interazioni che avvengono tra npm, il tuo repository di pacchetti, il tuo flusso di lavoro e il file dell'applicazione. `package.json` 

**Topics**
+ [Prerequisiti](#packages-tutorial-prereqs)
+ [Fase 1: Creare un archivio di sorgenti](#packages-tutorial-source-repo)
+ [Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway](#packages-tutorial-package-repo)
+ [Passaggio 3: creare l'applicazione «Hello World»](#packages-tutorial-create-app)
+ [Passaggio 4: Creare un flusso di lavoro che esegua «Hello World»](#packages-tutorial-create-workflow)
+ [Fase 5: Verifica il flusso di lavoro](#packages-tutorial-verify)
+ [Passaggio 6: Blocca le importazioni da npmjs.com](#packages-tutorial-block)
+ [Passaggio 7: testare la funzionalità di blocco](#packages-tutorial-test-block)
+ [Eliminazione](#packages-tutorial-cleanup)

## Prerequisiti
<a name="packages-tutorial-prereqs"></a>

Prima di iniziare:
+ **Hai bisogno di uno spazio CodeCatalyst .** Per ulteriori informazioni, consulta [Creazione di uno spazio](spaces-create.md).
+ Nel tuo CodeCatalyst spazio, hai bisogno di un progetto vuoto chiamato:

  ```
  codecatalyst-package-project
  ```

  Usa l'opzione **Inizia da zero** per creare questo progetto.

  Per ulteriori informazioni, consulta [Creare un progetto vuoto in Amazon CodeCatalyst](projects-create.md#projects-create-empty).

## Fase 1: Creare un archivio di sorgenti
<a name="packages-tutorial-source-repo"></a>

In questo passaggio, creerai un repository di origine in. CodeCatalyst Questo repository memorizza i file sorgente del tutorial, come i file `index.js` and`package.json`.

Per ulteriori informazioni sui repository dei sorgenti, consulta. [Creazione di un repository di sorgenti](source-repositories-create.md)

**Per creare un archivio di sorgenti**

1. Apri la CodeCatalyst console all'indirizzo [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Vai al tuo progetto,`codecatalyst-package-project`.

1. Nel riquadro di navigazione, scegli **Codice**, quindi scegli **Archivi di origine.** 

1. Scegli **Aggiungi repository**, quindi scegli **Crea** repository.

1. Nel **nome del repository, inserisci:**

   ```
   hello-world-app
   ```

1. Scegli **Create** (Crea).

## Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway
<a name="packages-tutorial-package-repo"></a>

In questo passaggio, crei un repository di pacchetti nel tuo CodeCatalyst progetto e lo connetti a un repository gateway, anch'esso presente nel tuo progetto. CodeCatalyst Successivamente importi la dipendenza del tutorial da npmjs.com in `lodash` entrambi i repository.

Il repository gateway è il «collante» che collega l'archivio dei pacchetti al npmjs.com pubblico. CodeCatalyst 

Per ulteriori informazioni sugli archivi dei pacchetti, consulta. [Pubblica e condividi pacchetti software in CodeCatalyst](packages.md)

**Nota**  
Questo tutorial utilizza i termini *repository di CodeCatalyst pacchetti* e *repository gateway* per fare riferimento ai due repository creati CodeCatalyst nella procedura seguente.

**Per creare repository di CodeCatalyst pacchetti e gateway**

1. Nel riquadro di navigazione scegliere **Pacchetti**. 

1. Scegli **Crea repository di pacchetti**.

1. Nel **nome del repository, inserisci**:

   ```
   codecatalyst-package-repository
   ```

1. Scegli **\$1 Seleziona i repository upstream**.

1. Scegli i repository **Gateway**.

1. Nella **npm-public-registry-gateway**casella, scegli **Crea**.

1. Scegli **Seleziona**.

1. Scegli **Create** (Crea).

   CodeCatalyst crea un repository di pacchetti chiamato `codecatalyst-package-repository` che è collegato a un repository gateway. Il repository del gateway è connesso al registro npmjs.com.

## Passaggio 3: creare l'applicazione «Hello World»
<a name="packages-tutorial-create-app"></a>

In questo passaggio, crei un'applicazione Node.js «Hello World'» e ne importi la dipendenza (`lodash`) nel gateway e nei repository di pacchetti. CodeCatalyst 

Per creare l'applicazione, è necessario un computer di sviluppo su cui siano installati Node.js e il client associato. `npm`

Questo tutorial presuppone che utilizzerai un ambiente di CodeCatalyst sviluppo come macchina di sviluppo. Sebbene non sia necessario utilizzare un ambiente di CodeCatalyst sviluppo, è consigliato perché fornisce un ambiente di lavoro pulito, ha Node.js ed è `npm` preinstallato ed è facile da eliminare una volta terminato il tutorial. Per ulteriori informazioni sugli ambienti di CodeCatalyst sviluppo, vedere[Creazione di un ambiente di sviluppo](devenvironment-create.md).

Usa le seguenti istruzioni per avviare un ambiente di CodeCatalyst sviluppo e utilizzarlo per creare l'applicazione 'Hello World'.

**Per avviare un ambiente di sviluppo CodeCatalyst**

1. Nel pannello di navigazione, scegli **Codice**, quindi scegli **Dev Environments**. 

1. Nella parte superiore scegli **Crea ambiente di sviluppo**, quindi scegli **AWS Cloud9 (nel browser)**.

1. Assicurati che **Repository** sia impostato su `hello-world-app` e **Existing branch** sia impostato `main` su. Scegli **Create** (Crea).

   Il tuo ambiente di sviluppo viene avviato in una nuova scheda del browser e il tuo repository (`hello-world-app`) viene clonato al suo interno.

1. Lasciate aperte entrambe le schede CodeCatalyst del browser e passate alla procedura successiva.

**Per creare l'applicazione Node.js 'Hello World'**

1. Vai al tuo ambiente di sviluppo.

1. Al prompt del terminale, passa alla directory principale del repository di `hello-world-app` origine:

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

1. Inizializza un progetto Node.js:

   ```
   npm init -y
   ```

   L'inizializzazione crea un `package.json` file nella directory principale di. `hello-world-app`

1. Connetti il client npm nel tuo ambiente di sviluppo al tuo repository di CodeCatalyst pacchetti:

   1. Passa alla console. CodeCatalyst 

   1. Nel riquadro di navigazione scegliere **Pacchetti**.

   1. Scegli `codecatalyst-package-repository`.

   1. Scegli **Connect to repository.**

   1. Scegli **Crea token**. Un token di accesso personale (PAT) viene creato per te.

   1. Scegliete **Copia** per copiare i comandi.

   1. Passa al tuo ambiente di sviluppo.

   1. Assicurati di essere nella `hello-world-app` directory.

   1. Incolla i comandi. Sono simili ai seguenti:

      ```
      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. `lodash`Versione di importazione 4.17.20:

   ```
   npm install lodash@v4.17.20 --save --save-exact
   ```

   npm cerca la `lodash` versione 4.17.20 nelle seguenti posizioni, nell'ordine seguente:
   + Nell'ambiente di sviluppo. Non può trovarlo qui.
   + Nel repository dei CodeCatalyst pacchetti. Non può trovarlo qui.
   + Nel repository del gateway. Non può trovarlo qui.
   + In npmjs.com. Lo trova qui.

   npm importa `lodash` nel repository gateway, nel repository dei CodeCatalyst pacchetti e nell'ambiente di sviluppo.
**Nota**  
Se non avessi collegato il client npm al tuo repository di CodeCatalyst pacchetti nel passaggio 4, npm avrebbe estratto `lodash` direttamente da npmjs.com e non avrebbe importato il pacchetto in nessuno dei due repository.

   npm aggiorna anche il `package.json` file con la dipendenza e crea una directory contenente tutte le `lodash` sue dipendenze. `node_modules` `lodash`

1. Verifica che sia `lodash` stato importato con successo nel tuo ambiente di sviluppo. Inserisci:

   ```
   npm list
   ```

   Viene visualizzato il seguente messaggio che indica l'avvenuta importazione:

   ```
   `-- lodash@4.17.20
   ```

1. (Facoltativo) Apri `hello-world-app/package.json` e verifica che le righe inserite ***red bold***siano state aggiunte:

   ```
   {
     "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. In`/hello-world-app`, crea un file chiamato `index.js` con il seguente contenuto:
**Suggerimento**  
Puoi usare la navigazione laterale nel tuo ambiente di sviluppo per creare questo file.

   ```
   // 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);
   ```

**Per verificare che 'lodash' sia stato importato nel gateway e negli archivi dei CodeCatalyst pacchetti**

1. Passa alla console. CodeCatalyst 

1. Nel riquadro di navigazione scegliere **Pacchetti**.

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

1. Assicurati che `lodash` sia visualizzato. La colonna **Ultima versione** indica`4.17.20`.

1. Ripetere questa procedura per`codecatalyst-package-repository`. Potrebbe essere necessario aggiornare la finestra del browser per visualizzare il pacchetto importato.

**Per testare 'Hello World' nel tuo ambiente di sviluppo**

1. Passa al tuo ambiente di sviluppo.

1. Assicurati di essere ancora nella `hello-world-app` directory, quindi esegui l'applicazione:

   ```
   node index.js
   ```

   Viene `Hello World` visualizzato un messaggio. Node.js ha eseguito l'applicazione utilizzando il `lodash` pacchetto scaricato nell'ambiente di sviluppo in un passaggio precedente.

**Ignorare la directory 'node\$1modules' e confermare 'Hello World'**

1. Ignora `node_modules` la cartella. Inserisci:

   ```
   echo "node_modules/" >> .gitignore
   ```

   È consigliabile evitare di salvare questa directory. Inoltre, il salvataggio di questa directory interferirà con i passaggi successivi di questo tutorial.

1. Aggiungi, esegui il commit e invia:

   ```
   git add .
   git commit -m "add the Hello World application"
   git push
   ```

   I file dell'applicazione e del progetto 'Hello World' vengono aggiunti all'archivio dei sorgenti.

## Passaggio 4: Creare un flusso di lavoro che esegua «Hello World»
<a name="packages-tutorial-create-workflow"></a>

In questo passaggio, crei un flusso di lavoro che esegue l'applicazione 'Hello World' utilizzando la dipendenza. `lodash` Il flusso di lavoro include una singola *azione* o attività chiamata. `RunHelloWorldApp` L'`RunHelloWorldApp`azione include i seguenti comandi e sezioni importanti:
+ **`Packages`**

  Questa sezione indica il nome dell'archivio dei CodeCatalyst pacchetti a cui l'azione deve connettersi durante l'esecuzione. `npm install`
+ **`- Run: npm install`** 

  Questo comando dice a npm di installare le dipendenze specificate nel file. `package.json` L'unica dipendenza specificata nel `package.json` file è`lodash`. npm cerca `lodash` nelle seguenti posizioni:
  + Nell'immagine Docker in esecuzione dell'azione. Non riesce a trovarlo qui.
  + Nel repository dei CodeCatalyst pacchetti. Lo trova qui.

  Dopo che npm lo trova`lodash`, lo importa nell'immagine Docker eseguendo l'azione.
+ **`- Run: npm list`**

  Questo comando stampa quale versione di `lodash` è stata scaricata nell'immagine Docker che esegue l'azione.
+ **`- Run: node index.js`**

  Questo comando esegue l'applicazione 'Hello World' utilizzando la dipendenza specificata nel file. `package.json`

Notate che l'`RunHelloWorldApp`azione è un'azione di compilazione, come indicato dall'`aws/build@v1`identificatore nella parte superiore del flusso di lavoro. Per ulteriori informazioni sull'azione di compilazione, consulta[Creazione con flussi di lavoro](build-workflow-actions.md).

Usa le seguenti istruzioni per creare un flusso di lavoro che estragga la `lodash` dipendenza dal tuo repository di CodeCatalyst pacchetti e quindi esegua l'applicazione 'Hello World'.

**Come creare un flusso di lavoro**

1. Passa alla console. CodeCatalyst 

1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

1. **Scegli Crea flusso di lavoro.**

1. Per **Source repository**, scegli`hello-world-app`.

1. Per **Branch**, scegli`main`.

   Il file di definizione del flusso di lavoro verrà creato nel repository e nel ramo di origine scelti.

1. Scegli **Create** (Crea).

1. Scegli **YAML** nella parte superiore.

1. Elimina il codice di esempio YAML.

1. Aggiungi il seguente codice 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
   ```

   Nel codice precedente, sostituiscilo *codecatalyst-package-repository* con il nome del repository dei CodeCatalyst pacchetti in cui hai creato. [Fase 2: Creare gli archivi dei pacchetti CodeCatalyst e del gateway](#packages-tutorial-package-repo)

   Per informazioni sulle proprietà di questo file, vedere. [Crea e testa azioni YAML](build-action-ref.md)

1. (Facoltativo) Scegliete **Convalida** per assicurarvi che il codice YAML sia valido prima di eseguire il commit.

1. Scegli **Applica**.

1. Nella finestra di dialogo **Conferma flusso di lavoro**, inserisci quanto segue:

   1. Per il **nome del file Workflow**, mantenete il valore predefinito,`codecatalyst-package-workflow`.

   1. Per il **messaggio** di conferma, inserisci:

      ```
      add initial workflow file
      ```

   1. Per **Repository**, scegli **hello-world-app**.

   1. Per il **nome del ramo**, scegli **principale**.

   1. Scegli **Applica**.

   Ora hai creato un flusso di lavoro.

**Per eseguire il flusso di lavoro**

1. Accanto al flusso di lavoro appena creato (`codecatalyst-package-workflow`), scegli **Azioni**, quindi scegli **Esegui**.

   Viene avviata l'esecuzione di un flusso di lavoro.

1. Nella notifica verde in alto a destra, scegli il link all'esecuzione. Il link è simile a`View Run-1234`.

   Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'**RunHelloWorldApp**azione.

1. Scegli la casella di **RunHelloWorldApp**azione per vedere l'avanzamento dell'azione. 

1. Al termine della corsa, vai a[Fase 5: Verifica il flusso di lavoro](#packages-tutorial-verify).

## Fase 5: Verifica il flusso di lavoro
<a name="packages-tutorial-verify"></a>

In questo passaggio, verifichi che il flusso di lavoro abbia eseguito correttamente l'applicazione «Hello World» con la relativa `lodash` dipendenza.

**Per verificare che l'applicazione 'Hello World' sia stata eseguita utilizzando la sua dipendenza**

1. Nel diagramma del flusso di lavoro, seleziona la casella. **RunHelloWorldApp**

   Viene visualizzato un elenco di messaggi di registro.

1. Espandi il messaggio di `node index.js` registro.

   Viene visualizzato il seguente messaggio:

   ```
   [Container] 2024/04/24 21:15:41.545650 Running command node index.js
   Hello World
   ```

   L'aspetto di `Hello Word` (anziché di`hello-world`) indica che la `lodash` dipendenza è stata utilizzata correttamente.

1. Espandi il `npm list` registro.

   Viene visualizzato un messaggio simile al seguente:

   ```
   └── lodash@4.17.20
   ```

   Questo messaggio indica che la `lodash` versione 4.17.20 è stata scaricata nell'immagine Docker che esegue l'azione del flusso di lavoro.

## Passaggio 6: Blocca le importazioni da npmjs.com
<a name="packages-tutorial-block"></a>

 Ora che `lodash` la versione 4.17.20 è presente nel gateway e negli archivi dei CodeCatalyst pacchetti, puoi bloccare le importazioni di altre versioni. Il blocco impedisce l'importazione accidentale di versioni successive (o precedenti) di`lodash`, che potrebbero contenere codice dannoso. Per ulteriori informazioni, consultare [Modifica dei controlli di origine dei pacchetti](package-origin-controls.md) e [Attacchi di sostituzione delle dipendenze](package-origin-controls.md#dependency-substitution-attacks).

Utilizza le seguenti istruzioni per bloccare le importazioni `lodash` nel tuo repository del gateway. Quando blocchi i pacchetti sul gateway, questi vengono bloccati anche nelle posizioni a valle.

**Per bloccare le importazioni nell'archivio del gateway**

1. Nel riquadro di navigazione scegliere **Pacchetti**.

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

1. Scegli `lodash`.

1. Nella parte superiore, scegli i **controlli Origin**.

1. In **Upstream**, scegli **Blocca**.

1. Scegli **Save** (Salva).

   Ora hai bloccato le importazioni nel tuo repository gateway (e negli archivi e computer downstream) da npmjs.com.

## Passaggio 7: testare la funzionalità di blocco
<a name="packages-tutorial-test-block"></a>

In questa sezione, verifichi che il blocco che hai [Passaggio 6: Blocca le importazioni da npmjs.com](#packages-tutorial-block) impostato funzioni. **Iniziate configurando 'Hello World' per richiedere la versione 4.17.2 **1** `lodash` anziché quella disponibile nel repository del gateway, che è la 4.17.2 0.** Verificate quindi che l'applicazione non sia in grado di recuperare la versione 4.17.21 da nmpjs.com, il che indica che il blocco è avvenuto con successo. Come test finale, sbloccate le importazioni nel vostro repository gateway e verificate che l'applicazione sia in grado di estrarre correttamente la versione 4.17.21 di. `lodash`

Utilizzate il seguente set di procedure per testare la funzionalità di blocco.

**Prima di iniziare**

1. Passa al tuo ambiente di sviluppo.

1. Estrai il `codecatalyst-package-workflow.yaml` file che hai creato utilizzando la CodeCatalyst console in precedenza:

   ```
   git pull
   ```

**Per configurare 'Hello World' per richiedere la versione 4.17.21 di 'lodash'**

1. Aprire `/hello-world-app/package.json`.

1. Cambia la `lodash` versione alla 4.17.21 come mostrato in: ***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"
     }
   }
   ```

   Ora c'è una mancata corrispondenza tra la versione nel `package.json` file (4.17.21) e la versione nei repository del gateway e dei CodeCatalyst pacchetti (4.17.20).

1. Aggiungi, esegui il commit e invia:

   ```
   git add .
   git commit -m "update package.json to use lodash 4.17.21"
   git push
   ```

**Per verificare che 'Hello World' non possa scaricare la versione 4.17.21 di 'lodash'**

1. Esegui il flusso di lavoro con la versione non corrispondente:

   1. Passa alla CodeCatalyst console.

   1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

   1. **Quindi`codecatalyst-package-workflow`, scegli **Azioni**, quindi scegli Esegui.**

      npm cerca le dipendenze e rileva che la versione 4.17.21 di `lodash` è richiesta da 'Hello World'. npm cerca la dipendenza nelle seguenti posizioni, nell'ordine seguente: `package.json`
      + Nell'immagine Docker in esecuzione dell'azione. Non riesce a trovarlo qui.
      + Nel repository dei CodeCatalyst pacchetti. Non può trovarlo qui.
      + Nel repository del gateway. Non può trovarlo qui.
      + In npmjs.com. Lo trova qui.

      Dopo che npm ha trovato la versione 4.17.21 in npmjs.com, tenta di importarla nel repository del gateway, ma poiché hai impostato il gateway per bloccare le importazioni di, l'importazione non avviene. `lodash`

      Poiché l'importazione non avviene, il flusso di lavoro fallisce.

1. Verifica che il flusso di lavoro non sia riuscito:

   1. Nella notifica verde in alto a destra, scegli il link alla corsa. Il link è simile a`View Run-2345`.

   1. Nel diagramma del flusso di lavoro, selezionate la **RunHelloWorldApp**casella.

   1. Espandi il messaggio di `npm install` registro.

      Viene visualizzato il seguente messaggio:

      ```
      [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
      ```

      L'errore indica che la versione 4.17.21 non è stata trovata. Questo è previsto perché l'hai bloccato.

**Per sbloccare le importazioni da npmjs.com**

1. Nel riquadro di navigazione scegliere **Pacchetti**.

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

1. Scegli `lodash`.

1. **Nella parte superiore, scegli i controlli Origin.**

1. In **Upstream**, scegli **Consenti**.

1. Scegli **Save** (Salva).

   Ora hai sbloccato le importazioni di. `lodash`

   Il tuo flusso di lavoro può ora importare la versione 4.17.21 di. `lodash`

**Per verificare che le importazioni da npmjs.com siano sbloccate**

1. Esegui nuovamente il flusso di lavoro. Questa volta il flusso di lavoro dovrebbe avere successo perché l'importazione della versione 4.17.21 dovrebbe ora funzionare. Per eseguire nuovamente il flusso di lavoro:

   1. **Scegli **CI/CD**, quindi scegli Flussi di lavoro.**

   1. **Successivamente`codecatalyst-package-workflow`, scegli **Azioni** e scegli Esegui.**

   1. Nella notifica verde in alto, a destra, scegli il link alla corsa. Il link è simile a`View Run-3456`.

      Viene visualizzato un diagramma del flusso di lavoro che mostra chi ha avviato l'esecuzione e l'**RunHelloWorldApp**azione.

   1. Scegli la casella di **RunHelloWorldApp**azione per vedere l'avanzamento dell'azione. 

   1. Espandi il messaggio di `npm list` registro e verifica che venga visualizzato un messaggio simile al seguente:

      ```
      └── lodash@4.17.21
      ```

      Questo messaggio indica che è stata `lodash` scaricata la versione 4.17.21.

1. Verifica che la versione 4.17.21 sia stata importata nei tuoi CodeCatalyst repository e in quelli del gateway:

   1. Nel riquadro di navigazione scegliere **Pacchetti**.

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

   1. Trova `lodash` e assicurati che la versione sia. `4.17.21`
**Nota**  
Sebbene la versione 4.17.20 non sia elencata in questa pagina, puoi trovarla scegliendo `lodash` e quindi scegliendo **Versioni** nella parte superiore.

   1. Ripeti questi passaggi per verificare che la versione 4.17.21 sia stata importata in. `codecatalyst-package-repository`

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

Pulisci i file e i servizi utilizzati in questo tutorial per evitare che ti vengano addebitati dei costi.

**Per ripulire i pacchetti (tutorial)**

1. Eliminare`codecatalyst-package-project`:

   1. Nella CodeCatalyst console, accedi al `codecatalyst-package-project` progetto se non ci sei già.

   1. Nel pannello di navigazione, scegli Impostazioni **del progetto**.

   1. Scegliete **Elimina progetto****delete**, immettete e scegliete **Elimina progetto**.

      CodeCatalyst elimina tutte le risorse del progetto, inclusi i repository di origine, gateway e CodeCatalyst pacchetti. Viene eliminato anche l'ambiente di sviluppo.

1. Elimina il token PAT:

   1. Scegli il tuo nome utente sulla destra, quindi scegli **Le mie impostazioni**.

   1. In **Token di accesso personali**, scegli il token che hai creato in questo tutorial e scegli **Elimina**.

In questo tutorial, hai imparato a creare un flusso di lavoro che esegua un'applicazione che estrae le sue dipendenze da un CodeCatalyst archivio di pacchetti. Hai anche imparato a bloccare e sbloccare l'accesso ai pacchetti nel gateway e negli archivi dei pacchetti. CodeCatalyst 

# Specificazione degli archivi di CodeCatalyst pacchetti nei flussi di lavoro
<a name="workflows-package-specify-action"></a>

In CodeCatalyst, puoi aggiungere un archivio di CodeCatalyst pacchetti alle tue azioni di compilazione e test nel tuo flusso di lavoro. Il tuo repository di pacchetti deve essere configurato con un formato di pacchetto, come npm. Puoi anche scegliere di includere una sequenza di ambiti per il repository di pacchetti selezionato.

Utilizzate le seguenti istruzioni per specificare una configurazione del pacchetto da utilizzare con un'azione del flusso di lavoro.

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

**Per specificare la configurazione del pacchetto che verrà utilizzata da un'azione (editor visivo)**

1. Apri la CodeCatalyst console all'[indirizzo https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Scegliere il progetto.

1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **Visual**.

1. Nel diagramma del flusso di lavoro, scegli l'azione **Build** o **Test** con cui desideri configurare un repository di pacchetti.

1. **Scegliete Pacchetti.**

1. Dal menu a discesa **Aggiungi configurazione**, scegli la configurazione del pacchetto che desideri utilizzare con le azioni del flusso di lavoro.

1. Scegli **Aggiungi archivio di pacchetti**.

1. Nel menu a discesa **Package repository**, specifica il nome del *repository di CodeCatalyst pacchetti* che desideri venga utilizzato dall'azione.

   Per ulteriori informazioni sugli archivi dei pacchetti, consulta. [Archivi di pacchetti](packages-concepts.md#packages-concepts-repository)

1. (Facoltativo) In **Ambiti: facoltativo**, specificate una sequenza di *ambiti* che desiderate definire nel registro dei pacchetti.

   Quando si definiscono gli ambiti, l'archivio dei pacchetti specificato viene configurato come registro per tutti gli ambiti elencati. Se un pacchetto con l'ambito viene richiesto tramite il client npm, utilizzerà quel repository anziché quello predefinito. Ogni nome di ambito deve avere il prefisso «@».

   Se `Scopes` viene omesso, l'archivio dei pacchetti specificato viene configurato come registro predefinito per tutti i pacchetti utilizzati dall'azione.

   [Per ulteriori informazioni sugli ambiti, vedere i pacchetti and [Namespace dei pacchetti](packages-concepts.md#packages-concepts-package-namespaces) Scoped.](https://docs.npmjs.com/cli/v10/using-npm/scope)

1. Scegliere **Aggiungi**.

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

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

**Per specificare la configurazione del pacchetto che verrà utilizzata da un'azione (editor YAML)**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Scegliere il progetto.

1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **YAML**.

1. In un'azione **Build** o **Test**, aggiungi un codice simile al seguente:

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

   Per ulteriori informazioni, consulta la descrizione della `Packages` proprietà nella sezione [Crea e testa azioni YAML](build-action-ref.md) dedicata alle tue azioni.

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------

# Utilizzo dei token di autorizzazione nelle azioni del flusso di lavoro
<a name="workflows-package-export-token"></a>

È possibile utilizzare un token fornito dall'azione del flusso di lavoro per configurare manualmente un gestore di pacchetti per l'autenticazione con gli archivi di CodeCatalyst pacchetti. CodeCatalyst rende questo token disponibile come variabile di ambiente a cui fare riferimento nelle azioni.


| Variabile di ambiente | Valore | 
| --- | --- | 
|  CATALYST\$1MACHINE\$1RESOURCE\$1NAME  |  L'identità utente del token di autorizzazione.  | 
|  CATALYST\$1PACKAGES\$1AUTHORIZATION\$1TOKEN  |  Il valore del token di autorizzazione.  | 

**Nota**  
Tieni presente che queste variabili di ambiente verranno compilate solo se hai configurato l'azione per esportare il token di autorizzazione.

Utilizza le seguenti istruzioni per utilizzare un token di autorizzazione con un'azione del flusso di lavoro.

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

**Per utilizzare un token di autorizzazione esportato con un'azione (editor visivo)**

1. Apri la CodeCatalyst console all'indirizzo [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Scegliere il progetto.

1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **Visual**.

1. Nel diagramma del flusso di lavoro, scegli l'azione **Build** o **Test** con cui desideri configurare un repository di pacchetti.

1. **Scegliete Pacchetti.**

1. Attiva il **token di autorizzazione all'esportazione**.

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

**Per utilizzare un token di autorizzazione esportato con un'azione (editor YAML)**

1. [Apri la CodeCatalyst console all'indirizzo https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Scegliere il progetto.

1. **Nel riquadro di navigazione, scegli **CI/CD**, quindi scegli Flussi di lavoro.**

1. Scegli il nome del tuo flusso di lavoro. Puoi filtrare in base al nome del repository o del ramo di origine in cui è definito il flusso di lavoro oppure filtrare in base al nome o allo stato del flusso di lavoro.

1. Scegli **Modifica**.

1. Scegli **YAML**.

1. In un'azione **Build** o **Test**, aggiungi un codice simile al seguente:

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

   Puoi fare riferimento alle variabili `$CATALYST_MACHINE_RESOURCE_NAME` e di `$CATALYST_PACKAGES_AUTHORIZATION_TOKEN` ambiente nella `Steps` sezione del tuo YAML. Per ulteriori informazioni, vedi [Esempio: configurazione `pip` manuale per l'autenticazione con CodeCatalyst](workflows-working-packages-ex.md#workflows-working-packages-pypi-token).

1. (Facoltativo) Scegliete **Convalida per convalidare** il codice YAML del flusso di lavoro prima di eseguire il commit.

1. **Scegliete **Commit**, inserite un messaggio di commit e scegliete nuovamente Commit.**

------

# Esempi: archivi di pacchetti nei flussi di lavoro
<a name="workflows-working-packages-ex"></a>

Gli esempi seguenti mostrano come fare riferimento ai pacchetti nel file di definizione del flusso di lavoro.

**Topics**
+ [Esempio: definizione di pacchetti con `NpmConfiguration`](#workflows-working-packages-ex-basic)
+ [Esempio: sovrascrivere il registro predefinito](#workflows-working-packages-ex-overriding-registry)
+ [Esempio: sovrascrivere gli ambiti nel registro dei pacchetti](#workflows-working-packages-ex-overriding-scopes)
+ [Esempio: configurazione `pip` manuale per l'autenticazione con CodeCatalyst](#workflows-working-packages-pypi-token)

## Esempio: definizione di pacchetti con `NpmConfiguration`
<a name="workflows-working-packages-ex-basic"></a>

L'esempio seguente mostra come definire un pacchetto `NpmConfiguration` nel file di definizione del flusso di lavoro.

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

Questo esempio configura il client npm come tale:

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

In questo esempio, sono definiti due repository. Il registro predefinito viene impostato `main-repo` così com'è definito senza un ambito. `@scope1`L'ambito è configurato `PackageRegistries` in`scoped-repo`.

## Esempio: sovrascrivere il registro predefinito
<a name="workflows-working-packages-ex-overriding-registry"></a>

L'esempio seguente mostra come sovrascrivere il registro predefinito.

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

Questo esempio configura il client npm come tale:

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

Se specifichi più repository predefiniti, l'ultimo repository avrà la priorità. In questo esempio, l'ultimo repository elencato è`my-repo-3`, il che significa a cui npm si connetterà. `my-repo-3` Questo sovrascrive i repository e. `my-repo-1` `my-repo-2`

## Esempio: sovrascrivere gli ambiti nel registro dei pacchetti
<a name="workflows-working-packages-ex-overriding-scopes"></a>

L'esempio seguente mostra come sovrascrivere un ambito nel registro dei pacchetti.

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

Questo esempio configura il client npm come tale:

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

Se includi gli ambiti di override, l'ultimo repository avrà la priorità. In questo esempio, l'ultima volta che l'ambito `@scope2` è configurato in `PackageRegistries` è for. `my-repo-2` Ciò sostituisce l'ambito `@scope2` configurato per. `my-repo-1`

## Esempio: configurazione `pip` manuale per l'autenticazione con CodeCatalyst
<a name="workflows-working-packages-pypi-token"></a>

L'esempio seguente mostra come fare riferimento alle variabili dell'ambiente di CodeCatalyst autorizzazione in un'azione di compilazione.

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