

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di [Cara bermigrasi dari CodeCatalyst](migration.md).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menghubungkan repositori paket ke alur kerja
<a name="workflows-packages"></a>

*Paket* adalah bundel yang mencakup perangkat lunak dan metadata yang diperlukan untuk menginstal perangkat lunak dan menyelesaikan dependensi apa pun. CodeCatalyst mendukung format paket npm.

Paket terdiri dari:
+ Nama (misalnya, `webpack` adalah nama paket npm populer)
+ [Namespace](packages-concepts.md#packages-concepts-package-namespaces) opsional (misalnya, `@types` di `@types/node`)
+ Satu set [versi](packages-concepts.md#packages-concepts-package-versions) (misalnya,`1.0.0`,`1.0.1`,`1.0.2`)
+ Metadata tingkat paket (misalnya, tag dist npm)

Di CodeCatalyst, Anda dapat mempublikasikan paket ke dan mengkonsumsi paket dari repositori CodeCatalyst paket di alur kerja Anda. Anda dapat mengonfigurasi tindakan build atau test dengan repositori CodeCatalyst paket untuk secara otomatis mengonfigurasi klien npm tindakan untuk mendorong dan menarik paket dari repositori yang ditentukan.

Untuk informasi selengkapnya tentang paket, lihat[Publikasikan dan bagikan paket perangkat lunak di CodeCatalyst](packages.md).

**catatan**  
Saat ini, tindakan build dan uji mendukung repositori CodeCatalyst paket.

**Topics**
+ [Tutorial: Tarik dari repositori paket](packages-tutorial.md)
+ [Menentukan repositori CodeCatalyst paket dalam alur kerja](workflows-package-specify-action.md)
+ [Menggunakan token otorisasi dalam tindakan alur kerja](workflows-package-export-token.md)
+ [Contoh: Package repositori dalam alur kerja](workflows-working-packages-ex.md)

# Tutorial: Tarik dari repositori paket
<a name="packages-tutorial"></a>

[Dalam tutorial ini, Anda belajar cara membuat alur kerja yang menjalankan aplikasi yang dependensinya ditarik dari repositori paket. CodeCatalyst ](packages-concepts.md#packages-concepts-repository) Aplikasi ini adalah aplikasi Node.js sederhana yang mencetak pesan 'Hello World' ke log. CodeCatalyst Aplikasi ini memiliki ketergantungan tunggal: paket [lodash npm](https://www.npmjs.com/package/lodash). `lodash`Paket ini digunakan untuk mengubah `hello-world` string ke`Hello World`. Anda akan menggunakan versi 4.17.20 dari paket ini.

[Setelah menyiapkan aplikasi dan alur kerja, Anda mengonfigurasi CodeCatalyst untuk memblokir versi tambahan agar tidak diimpor ke repositori CodeCatalyst paket `lodash` dari registri eksternal publik (npmjs.com).](https://www.npmjs.com/) Anda kemudian menguji apakah versi tambahan berhasil `lodash` diblokir.

Pada akhir tutorial ini, Anda harus memiliki pemahaman yang baik tentang bagaimana alur kerja berinteraksi dengan repositori paket, baik di dalam maupun di luar CodeCatalyst, untuk mengambil paket. Anda juga harus memahami behind-the-scenes interaksi yang terjadi antara npm, repositori paket Anda, alur kerja Anda, dan file aplikasi Anda. `package.json` 

**Topics**
+ [Prasyarat](#packages-tutorial-prereqs)
+ [Langkah 1: Buat repositori sumber](#packages-tutorial-source-repo)
+ [Langkah 2: Buat repositori paket CodeCatalyst dan gateway](#packages-tutorial-package-repo)
+ [Langkah 3: Buat aplikasi 'Hello World'](#packages-tutorial-create-app)
+ [Langkah 4: Buat alur kerja yang menjalankan 'Hello World'](#packages-tutorial-create-workflow)
+ [Langkah 5: Verifikasi alur kerja](#packages-tutorial-verify)
+ [Langkah 6: Blokir impor dari npmjs.com](#packages-tutorial-block)
+ [Langkah 7: Uji fitur pemblokiran](#packages-tutorial-test-block)
+ [Bersihkan](#packages-tutorial-cleanup)

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

Sebelum Anda memulai:
+ Anda membutuhkan CodeCatalyst **ruang**. Untuk informasi selengkapnya, lihat [Membuat ruang](spaces-create.md).
+ Di CodeCatalyst ruang Anda, Anda memerlukan proyek kosong yang disebut:

  ```
  codecatalyst-package-project
  ```

  Gunakan opsi **Mulai dari awal** untuk membuat proyek ini.

  Untuk informasi selengkapnya, lihat [Membuat proyek kosong di Amazon CodeCatalyst](projects-create.md#projects-create-empty).

## Langkah 1: Buat repositori sumber
<a name="packages-tutorial-source-repo"></a>

Pada langkah ini, Anda membuat repositori sumber di. CodeCatalyst Repositori ini menyimpan file sumber tutorial, seperti file `index.js` dan`package.json`.

Untuk informasi selengkapnya tentang repositori sumber, lihat. [Membuat repositori sumber](source-repositories-create.md)

**Untuk membuat repositori sumber**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Arahkan ke proyek Anda,`codecatalyst-package-project`.

1. Di panel navigasi, pilih **Kode**, lalu pilih **Repositori sumber**. 

1. Pilih **Tambahkan repositori**, lalu pilih **Buat** repositori.

1. Dalam **nama Repositori, masukkan:**

   ```
   hello-world-app
   ```

1. Pilih **Buat**.

## Langkah 2: Buat repositori paket CodeCatalyst dan gateway
<a name="packages-tutorial-package-repo"></a>

Pada langkah ini, Anda membuat repositori paket di CodeCatalyst proyek Anda, dan menghubungkannya ke repositori gateway, juga di proyek Anda. CodeCatalyst Anda kemudian mengimpor ketergantungan tutorial,`lodash`, dari npmjs.com ke kedua repositori.

Repositori gateway adalah 'lem' yang menghubungkan repositori paket Anda ke npmjs.com publik CodeCatalyst .

Untuk informasi selengkapnya tentang repositori paket, lihat. [Publikasikan dan bagikan paket perangkat lunak di CodeCatalyst](packages.md)

**catatan**  
Tutorial ini menggunakan istilah *repositori CodeCatalyst paket* dan *repositori gateway* untuk merujuk ke dua repositori yang Anda buat dalam prosedur berikut. CodeCatalyst 

**Untuk membuat CodeCatalyst repositori paket dan gateway**

1. Di panel navigasi, pilih **Paket**. 

1. Pilih **Buat repositori paket**.

1. Dalam **nama Repositori, masukkan:**

   ```
   codecatalyst-package-repository
   ```

1. Pilih **\$1 Pilih repositori upstream**.

1. Pilih **repositori Gateway**.

1. Di dalam **npm-public-registry-gateway**kotak, pilih **Buat**.

1. Pilih **Pilih**.

1. Pilih **Buat**.

   CodeCatalyst membuat repositori paket `codecatalyst-package-repository` yang disebut yang terhubung ke repositori gateway. Repositori gateway terhubung ke registri npmjs.com.

## Langkah 3: Buat aplikasi 'Hello World'
<a name="packages-tutorial-create-app"></a>

Pada langkah ini, Anda membuat aplikasi Node.js 'Hello World' dan mengimpor dependensinya (`lodash`) ke gateway dan CodeCatalyst repositori paket Anda.

Untuk membuat aplikasi, Anda memerlukan mesin pengembangan dengan Node.js dan `npm` klien terkait diinstal.

Tutorial ini mengasumsikan Anda akan menggunakan CodeCatalyst Dev Environment sebagai mesin pengembangan Anda. Meskipun Anda tidak harus menggunakan CodeCatalyst Dev Environment, disarankan karena menyediakan lingkungan kerja yang bersih, memiliki Node.js dan sudah `npm` diinstal sebelumnya, dan mudah dihapus ketika Anda telah menyelesaikan tutorial. Untuk informasi selengkapnya tentang Lingkungan CodeCatalyst Pengembang, lihat[Membuat Lingkungan Pengembangan](devenvironment-create.md).

Gunakan petunjuk berikut untuk meluncurkan CodeCatalyst Dev Environment dan menggunakannya untuk membuat aplikasi 'Hello World'.

**Untuk meluncurkan Lingkungan CodeCatalyst Dev**

1. Di panel navigasi, pilih **Kode**, lalu pilih Lingkungan **Dev**. 

1. Di dekat bagian atas pilih **Create Dev Environment**, lalu pilih **AWS Cloud9 (di browser)**.

1. Pastikan bahwa **Repositori** disetel ke `hello-world-app` dan **cabang yang ada** disetel ke. `main` Pilih **Buat**.

   Lingkungan Dev Anda diluncurkan di tab browser baru, dan repositori (`hello-world-app`) Anda dikloning ke dalamnya.

1. Biarkan kedua tab CodeCatalyst browser terbuka, dan pergi ke prosedur berikutnya.

**Untuk membuat aplikasi Node.js 'Hello World'**

1. Pergi ke Lingkungan Pengembang Anda.

1. Pada prompt terminal, ubah ke direktori root repositori `hello-world-app` sumber:

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

1. Menginisialisasi proyek Node.js:

   ```
   npm init -y
   ```

   Inisialisasi membuat `package.json` file di direktori root. `hello-world-app`

1. Hubungkan klien npm di Lingkungan Dev Anda ke repositori CodeCatalyst paket Anda:

   1. Beralih ke CodeCatalyst konsol.

   1. Di panel navigasi, pilih **Paket**.

   1. Pilih `codecatalyst-package-repository`.

   1. Pilih **Connect to repository**.

   1. Pilih **Buat token**. Token akses pribadi (PAT) dibuat untuk Anda.

   1. Pilih **Salin** untuk menyalin perintah.

   1. Beralih ke Lingkungan Pengembang Anda.

   1. Pastikan Anda berada di `hello-world-app` direktori.

   1. Tempelkan perintah. Mereka terlihat mirip dengan yang berikut:

      ```
      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. Impor `lodash` versi 4.17.20:

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

   npm mencari `lodash` versi 4.17.20 di lokasi berikut, dengan urutan sebagai berikut:
   + Di Lingkungan Dev. Itu tidak dapat menemukannya di sini.
   + Dalam repositori CodeCatalyst paket. Itu tidak dapat menemukannya di sini.
   + Di repositori gateway. Itu tidak dapat menemukannya di sini.
   + Di npmjs.com. Ia menemukannya di sini.

   npm mengimpor `lodash` ke repositori gateway, repositori CodeCatalyst paket, dan Lingkungan Dev.
**catatan**  
Jika Anda tidak menghubungkan klien npm ke repositori CodeCatalyst paket Anda di langkah 4, maka npm akan menarik `lodash` langsung dari npmjs.com dan tidak akan mengimpor paket ke salah satu repositori.

   npm juga memperbarui `package.json` file Anda dengan `lodash` dependensi, dan membuat `node_modules` direktori yang berisi `lodash` dan semua dependensinya.

1. Uji yang berhasil `lodash` diimpor ke Lingkungan Pengembang Anda. Masukkan:

   ```
   npm list
   ```

   Pesan berikut muncul, menunjukkan impor yang berhasil:

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

1. (Opsional) Buka `hello-world-app/package.json` dan verifikasi bahwa baris ***red bold***ditambahkan:

   ```
   {
     "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. Di`/hello-world-app`, buat file yang disebut `index.js` dengan konten berikut:
**Tip**  
Anda dapat menggunakan navigasi samping di Lingkungan Dev Anda untuk membuat file ini.

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

**Untuk menguji bahwa 'lodash' diimpor ke gateway dan repositori CodeCatalyst paket Anda**

1. Beralih ke CodeCatalyst konsol.

1. Di panel navigasi, pilih **Paket**.

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

1. Pastikan `lodash` ditampilkan. Kolom **versi terbaru** menunjukkan`4.17.20`.

1. Ulangi prosedur ini untuk`codecatalyst-package-repository`. Anda mungkin perlu menyegarkan jendela browser untuk melihat paket yang diimpor.

**Untuk menguji 'Hello World' di Lingkungan Dev Anda**

1. Beralih ke Lingkungan Pengembang Anda.

1. Pastikan Anda masih berada di `hello-world-app` direktori, dan kemudian jalankan aplikasi:

   ```
   node index.js
   ```

   Sebuah `Hello World` pesan muncul. Node.js menjalankan aplikasi menggunakan `lodash` paket yang Anda download ke Dev Environment Anda pada langkah sebelumnya.

**Untuk mengabaikan direktori 'node\$1modules' dan komit 'Hello World'**

1. Abaikan `node_modules` direktori. Masukkan:

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

   Ini adalah praktik terbaik untuk menghindari melakukan direktori ini. Juga, melakukan direktori ini akan mengganggu langkah-langkah selanjutnya dalam tutorial ini.

1. Tambahkan, komit, dan dorong:

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

   Aplikasi 'Hello World' dan file proyek ditambahkan ke repositori sumber Anda.

## Langkah 4: Buat alur kerja yang menjalankan 'Hello World'
<a name="packages-tutorial-create-workflow"></a>

Pada langkah ini, Anda membuat alur kerja yang menjalankan aplikasi 'Hello World' menggunakan dependensi. `lodash` Alur kerja mencakup satu *tindakan*, atau tugas, yang disebut`RunHelloWorldApp`. `RunHelloWorldApp`Tindakan ini mencakup perintah dan bagian penting berikut:
+ **`Packages`**

  Bagian ini menunjukkan nama repositori CodeCatalyst paket yang harus dihubungkan oleh tindakan saat menjalankan. `npm install`
+ **`- Run: npm install`** 

  Perintah ini memberitahu npm untuk menginstal dependensi yang ditentukan dalam file. `package.json` Satu-satunya ketergantungan yang ditentukan dalam `package.json` file adalah`lodash`. npm mencari `lodash` di lokasi berikut:
  + Pada gambar Docker menjalankan aksi. Itu tidak dapat menemukannya di sini.
  + Dalam repositori CodeCatalyst paket. Ia menemukannya di sini.

  Setelah npm menemukan`lodash`, ia mengimpornya ke image Docker yang menjalankan tindakan.
+ **`- Run: npm list`**

  Perintah ini mencetak versi mana `lodash` yang diunduh ke gambar Docker yang menjalankan tindakan.
+ **`- Run: node index.js`**

  Perintah ini menjalankan aplikasi 'Hello World' menggunakan dependensi yang ditentukan dalam file. `package.json`

Perhatikan bahwa `RunHelloWorldApp` tindakan tersebut adalah tindakan build, seperti yang ditunjukkan oleh `aws/build@v1` identifier di dekat bagian atas alur kerja. Untuk informasi selengkapnya tentang tindakan build, lihat[Membangun dengan alur kerja](build-workflow-actions.md).

Gunakan petunjuk berikut untuk membuat alur kerja yang menarik `lodash` ketergantungan dari repositori CodeCatalyst paket Anda dan kemudian menjalankan aplikasi 'Hello World' Anda.

**Untuk membuat alur kerja**

1. Beralih ke CodeCatalyst konsol.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih **Buat alur kerja**.

1. Untuk **repositori Sumber, pilih**. `hello-world-app`

1. Untuk **Cabang**, pilih`main`.

   File definisi alur kerja akan dibuat di repositori dan cabang sumber yang dipilih.

1. Pilih **Buat**.

1. Pilih **YAMAL di** dekat bagian atas.

1. Hapus kode sampel YAMM.

1. Tambahkan kode YAMM berikut:

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

   Dalam kode sebelumnya, ganti *codecatalyst-package-repository* dengan nama repositori CodeCatalyst paket yang Anda buat. [Langkah 2: Buat repositori paket CodeCatalyst dan gateway](#packages-tutorial-package-repo)

   Untuk informasi tentang properti dalam file ini, lihat[Membangun dan menguji tindakan YAMB](build-action-ref.md).

1. (Opsional) Pilih **Validasi** untuk memastikan kode YAMM valid sebelum melakukan.

1. Pilih **Terapkan**.

1. Pada kotak dialog **Commit workflow**, masukkan yang berikut ini:

   1. Untuk **nama file Workflow**, pertahankan default,`codecatalyst-package-workflow`.

   1. Untuk **pesan Commit**, masukkan:

      ```
      add initial workflow file
      ```

   1. Untuk **Repositori, pilih**. **hello-world-app**

   1. Untuk **nama Branch**, pilih **main**.

   1. Pilih **Terapkan**.

   Anda sekarang telah membuat alur kerja.

**Untuk menjalankan alur kerja**

1. Di samping alur kerja yang baru saja Anda buat (`codecatalyst-package-workflow`), pilih **Tindakan** lalu pilih **Jalankan**.

   Jalankan alur kerja dimulai.

1. Di notifikasi hijau di bagian atas, di sebelah kanan, pilih tautan ke run. Tautannya terlihat mirip dengan`View Run-1234`.

   Diagram alur kerja muncul, menunjukkan siapa yang memulai proses dan **RunHelloWorldApp**tindakan.

1. Pilih kotak **RunHelloWorldApp**tindakan untuk melihat kemajuan tindakan. 

1. Saat lari selesai, pergi ke[Langkah 5: Verifikasi alur kerja](#packages-tutorial-verify).

## Langkah 5: Verifikasi alur kerja
<a name="packages-tutorial-verify"></a>

Pada langkah ini, Anda memverifikasi bahwa alur kerja berhasil menjalankan aplikasi 'Hello World' dengan ketergantungannya. `lodash`

**Untuk memverifikasi bahwa aplikasi 'Hello World' berjalan menggunakan ketergantungannya**

1. Dalam diagram alur kerja, pilih **RunHelloWorldApp**kotak.

   Daftar pesan log muncul.

1. Perluas pesan `node index.js` log.

   Pesan berikut muncul:

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

   Munculnya `Hello Word` (bukan`hello-world`) menunjukkan bahwa `lodash` ketergantungan berhasil digunakan.

1. Perluas `npm list` log.

   Pesan yang mirip dengan berikut ini muncul:

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

   Pesan ini menunjukkan bahwa `lodash` versi 4.17.20 telah diunduh ke gambar Docker yang menjalankan tindakan alur kerja.

## Langkah 6: Blokir impor dari npmjs.com
<a name="packages-tutorial-block"></a>

 Sekarang `lodash` versi 4.17.20 hadir di gateway dan repositori CodeCatalyst paket Anda, Anda dapat memblokir impor versi lain. Pemblokiran mencegah Anda mengimpor versi yang lebih baru (atau sebelumnya) secara tidak sengaja`lodash`, yang mungkin berisi kode berbahaya. Untuk informasi selengkapnya, lihat [Mengedit kontrol asal paket](package-origin-controls.md) dan [Serangan substitusi ketergantungan](package-origin-controls.md#dependency-substitution-attacks).

Gunakan petunjuk berikut untuk memblokir impor `lodash` ke repositori gateway Anda. Ketika Anda memblokir paket di gateway, mereka juga diblokir di lokasi hilir.

**Untuk memblokir impor ke repositori gateway Anda**

1. Di panel navigasi, pilih **Paket**.

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

1. Pilih `lodash`.

1. Di dekat bagian atas, pilih **Kontrol asal**.

1. Di bawah **Upstream**, pilih **Blokir**.

1. Pilih **Simpan**.

   Anda sekarang telah memblokir impor ke repositori gateway Anda (dan repositori hilir dan komputer) dari npmjs.com.

## Langkah 7: Uji fitur pemblokiran
<a name="packages-tutorial-test-block"></a>

Di bagian ini, Anda memverifikasi bahwa pemblokiran yang Anda atur berfungsi. [Langkah 6: Blokir impor dari npmjs.com](#packages-tutorial-block) **Anda mulai dengan mengonfigurasi 'Hello World' untuk meminta versi 4.17.2 **1** `lodash` alih-alih yang tersedia di repositori gateway Anda, yaitu 4.17.2 0.** Anda kemudian memeriksa apakah aplikasi tidak dapat menarik versi 4.17.21 dari nmpjs.com, yang menunjukkan penyumbatan yang berhasil. Sebagai tes terakhir, Anda membuka blokir impor ke repositori gateway Anda, dan memeriksa apakah aplikasi dapat berhasil menarik versi 4.17.21 dari. `lodash`

Gunakan serangkaian prosedur berikut untuk menguji fitur pemblokiran.

**Sebelum Anda mulai**

1. Beralih ke Lingkungan Pengembang Anda.

1. Tarik `codecatalyst-package-workflow.yaml` file yang Anda buat menggunakan CodeCatalyst konsol sebelumnya:

   ```
   git pull
   ```

**Untuk mengkonfigurasi 'Hello World' untuk meminta versi 4.17.21 dari 'lodash'**

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

1. Ubah `lodash` versi ke 4.17.21 seperti yang ditunjukkan pada: ***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"
     }
   }
   ```

   Sekarang ada ketidakcocokan antara versi dalam `package.json` file (4.17.21) dan versi di gateway dan repositori CodeCatalyst paket (4.17.20).

1. Tambahkan, komit, dan dorong:

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

**Untuk menguji bahwa 'Hello World' tidak dapat menarik versi 4.17.21 dari 'lodash'**

1. Jalankan alur kerja dengan ketidakcocokan versi:

   1. Beralih ke CodeCatalyst konsol.

   1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

   1. Di samping`codecatalyst-package-workflow`, pilih **Tindakan**, lalu pilih **Jalankan.**

      npm `package.json` mencari dependensi dan melihat bahwa versi 4.17.21 dari `lodash` diperlukan oleh 'Hello World'. npm mencari ketergantungan di lokasi berikut, dengan urutan berikut:
      + Pada gambar Docker menjalankan aksi. Itu tidak dapat menemukannya di sini.
      + Dalam repositori CodeCatalyst paket. Itu tidak dapat menemukannya di sini.
      + Di repositori gateway. Itu tidak dapat menemukannya di sini.
      + Di npmjs.com. Ia menemukannya di sini.

      Setelah npm menemukan versi 4.17.21 di npmjs.com, ia mencoba mengimpornya ke repositori gateway, tetapi karena Anda mengatur gateway untuk memblokir impor, impor tidak terjadi. `lodash`

      Karena impor tidak terjadi, alur kerja gagal.

1. Verifikasi bahwa alur kerja gagal:

   1. Di notifikasi hijau di bagian atas, di sebelah kanan, pilih tautan ke run. Tautannya terlihat mirip dengan`View Run-2345`.

   1. Dalam diagram alur kerja, pilih **RunHelloWorldApp**kotak.

   1. Perluas pesan `npm install` log.

      Pesan berikut muncul:

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

      Kesalahan menunjukkan bahwa versi 4.17.21 tidak dapat ditemukan. Ini diharapkan karena Anda memblokirnya.

**Untuk membuka blokir impor dari npmjs.com**

1. Di panel navigasi, pilih **Paket**.

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

1. Pilih `lodash`.

1. Di dekat bagian atas, pilih **Kontrol asal**.

1. Di bawah **Upstream**, pilih **Izinkan**.

1. Pilih **Simpan**.

   Anda sekarang telah membuka blokir impor. `lodash`

   Alur kerja Anda sekarang dapat mengimpor versi 4.17.21 dari. `lodash`

**Untuk menguji apakah impor dari npmjs.com tidak diblokir**

1. Jalankan alur kerja Anda lagi. Kali ini alur kerja harus berhasil karena impor 4.17.21 sekarang harus berfungsi. Untuk menjalankan alur kerja lagi:

   1. **Pilih **CI/CD** dan kemudian pilih Workflows.**

   1. Di samping`codecatalyst-package-workflow`, pilih **Tindakan** dan pilih **Jalankan**.

   1. Di notifikasi hijau di bagian atas, di sebelah kanan, pilih tautan ke run. Tautannya terlihat mirip dengan`View Run-3456`.

      Diagram alur kerja muncul, menunjukkan siapa yang memulai proses dan **RunHelloWorldApp**tindakan.

   1. Pilih kotak **RunHelloWorldApp**tindakan untuk melihat kemajuan tindakan. 

   1. Perluas pesan `npm list` log dan verifikasi bahwa pesan yang mirip dengan yang berikut ini muncul:

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

      Pesan ini menunjukkan bahwa `lodash` versi 4.17.21 telah diunduh.

1. Verifikasi bahwa versi 4.17.21 telah diimpor ke repositori CodeCatalyst dan gateway Anda:

   1. Di panel navigasi, pilih **Paket**.

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

   1. Temukan `lodash` dan pastikan versinya`4.17.21`.
**catatan**  
Meskipun versi 4.17.20 tidak tercantum di halaman ini, Anda dapat menemukannya dengan memilih `lodash` dan kemudian memilih **Versi** di dekat bagian atas.

   1. Ulangi langkah-langkah ini untuk memeriksa bahwa versi 4.17.21 telah diimpor ke. `codecatalyst-package-repository`

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

Bersihkan file dan layanan yang digunakan dalam tutorial ini untuk menghindari biaya untuk mereka.

**Untuk membersihkan tutorial paket**

1. Hapus`codecatalyst-package-project`:

   1. Di CodeCatalyst konsol, naivate ke `codecatalyst-package-project` proyek jika Anda belum ada di sana.

   1. Di panel navigasi, pilih **Pengaturan proyek**.

   1. Pilih **Hapus proyek**, masukkan**delete**, dan pilih **Hapus proyek**.

      CodeCatalyst menghapus semua sumber daya proyek, termasuk sumber, gateway, dan repositori CodeCatalyst paket. Lingkungan Dev juga dihapus.

1. Hapus token PAT:

   1. Pilih nama pengguna Anda di sebelah kanan, lalu pilih **Pengaturan saya**.

   1. Di bawah **Token akses pribadi**, pilih token yang Anda buat dalam tutorial ini dan pilih **Hapus**.

Dalam tutorial ini, Anda belajar cara membuat alur kerja yang menjalankan aplikasi yang menarik dependensinya dari repositori paket. CodeCatalyst Anda juga belajar cara memblokir dan membuka blokir paket dari memasuki gateway dan repositori CodeCatalyst paket Anda.

# Menentukan repositori CodeCatalyst paket dalam alur kerja
<a name="workflows-package-specify-action"></a>

Di CodeCatalyst, Anda dapat menambahkan repositori CodeCatalyst paket ke tindakan build dan pengujian di alur kerja Anda. Repositori paket Anda harus dikonfigurasi dengan format paket, seperti npm. Anda juga dapat memilih untuk menyertakan urutan cakupan untuk repositori paket yang Anda pilih.

Gunakan petunjuk berikut untuk menentukan konfigurasi paket yang akan digunakan dengan tindakan alur kerja.

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

**Untuk menentukan konfigurasi paket yang akan digunakan tindakan (editor visual)**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Dalam diagram alur kerja, pilih tindakan **Build** atau **Test** yang ingin Anda konfigurasikan dengan repositori paket.

1. Pilih **Paket**.

1. Dari menu tarik-turun **Tambahkan konfigurasi**, pilih konfigurasi paket yang ingin Anda gunakan dengan tindakan alur kerja Anda.

1. Pilih **Tambahkan repositori paket**.

1. Di menu tarik-turun **Package repository**, tentukan nama *repositori CodeCatalyst paket* Anda yang ingin digunakan oleh tindakan.

   Untuk informasi selengkapnya tentang repositori paket, lihat. [Package repositori](packages-concepts.md#packages-concepts-repository)

1. (Opsional) Dalam **Lingkup - opsional**, tentukan urutan *cakupan* yang ingin Anda tentukan dalam registri paket Anda.

   Saat mendefinisikan cakupan, repositori paket yang ditentukan dikonfigurasi sebagai registri untuk semua cakupan yang terdaftar. Jika paket dengan cakupan diminta melalui klien npm, itu akan menggunakan repositori itu alih-alih default. Setiap nama lingkup harus diawali dengan “@”.

   Jika `Scopes` dihilangkan, maka repositori paket yang ditentukan dikonfigurasi sebagai registri default untuk semua paket yang digunakan oleh tindakan.

   Untuk informasi selengkapnya tentang cakupan, lihat [Ruang nama Package](packages-concepts.md#packages-concepts-package-namespaces) dan paket [Scoped](https://docs.npmjs.com/cli/v10/using-npm/scope).

1. Pilih **Tambahkan**.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

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

**Untuk menentukan konfigurasi paket yang akan digunakan tindakan (editor YAMG)**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Dalam tindakan **Build** atau **Test**, tambahkan kode yang mirip dengan berikut ini:

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

   Untuk informasi selengkapnya, lihat deskripsi `Packages` properti [Membangun dan menguji tindakan YAMB](build-action-ref.md) untuk tindakan Anda.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

# Menggunakan token otorisasi dalam tindakan alur kerja
<a name="workflows-package-export-token"></a>

Anda dapat menggunakan token yang disediakan oleh tindakan alur kerja untuk mengonfigurasi manajer paket secara manual untuk mengautentikasi dengan repositori CodeCatalyst paket. CodeCatalyst membuat token ini tersedia sebagai variabel lingkungan bagi Anda untuk referensi dalam tindakan Anda.


| Variabel lingkungan | Nilai | 
| --- | --- | 
|  CATALYST\$1MACHINE\$1RESOURCE\$1NAME  |  Identitas pengguna token otorisasi.  | 
|  CATALYST\$1PACKAGES\$1AUTHORIZATION\$1TOKEN  |  Nilai token otorisasi.  | 

**catatan**  
Perhatikan bahwa variabel lingkungan ini hanya akan diisi jika Anda telah mengonfigurasi tindakan Anda untuk mengekspor token otorisasi.

Gunakan petunjuk berikut untuk menggunakan token otorisasi dengan tindakan alur kerja.

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

**Untuk menggunakan token otorisasi yang diekspor dengan tindakan (editor visual)**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Dalam diagram alur kerja, pilih tindakan **Build** atau **Test** yang ingin Anda konfigurasikan dengan repositori paket.

1. Pilih **Paket**.

1. Aktifkan **Token otorisasi ekspor**.

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

**Untuk menggunakan token otorisasi yang diekspor dengan tindakan (editor YAMAL)**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Pilih proyek Anda.

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Dalam tindakan **Build** atau **Test**, tambahkan kode yang mirip dengan berikut ini:

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

   Anda dapat mereferensikan variabel `$CATALYST_MACHINE_RESOURCE_NAME` dan `$CATALYST_PACKAGES_AUTHORIZATION_TOKEN` lingkungan di `Steps` bagian YAMAL Anda. Untuk informasi lebih lanjut, lihat[Contoh: Mengkonfigurasi secara manual untuk `pip` mengautentikasi dengan CodeCatalyst](workflows-working-packages-ex.md#workflows-working-packages-pypi-token).

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

# Contoh: Package repositori dalam alur kerja
<a name="workflows-working-packages-ex"></a>

Contoh berikut menunjukkan cara mereferensikan paket dalam file definisi alur kerja.

**Topics**
+ [Contoh: Mendefinisikan paket dengan `NpmConfiguration`](#workflows-working-packages-ex-basic)
+ [Contoh: Mengganti registri default](#workflows-working-packages-ex-overriding-registry)
+ [Contoh: Mengganti cakupan dalam registri paket Anda](#workflows-working-packages-ex-overriding-scopes)
+ [Contoh: Mengkonfigurasi secara manual untuk `pip` mengautentikasi dengan CodeCatalyst](#workflows-working-packages-pypi-token)

## Contoh: Mendefinisikan paket dengan `NpmConfiguration`
<a name="workflows-working-packages-ex-basic"></a>

Contoh berikut menunjukkan cara mendefinisikan paket dengan `NpmConfiguration` dalam file definisi alur kerja Anda.

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

Contoh ini mengkonfigurasi klien npm seperti:

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

Dalam contoh ini, ada dua repositori yang didefinisikan. Registri default diatur `main-repo` seperti yang didefinisikan tanpa ruang lingkup. `@scope1`Cakupan dikonfigurasi `PackageRegistries` untuk`scoped-repo`.

## Contoh: Mengganti registri default
<a name="workflows-working-packages-ex-overriding-registry"></a>

Contoh berikut menunjukkan cara mengganti registri default.

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

Contoh ini mengkonfigurasi klien npm seperti:

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

Jika Anda menentukan beberapa repositori default, repositori terakhir akan diprioritaskan. Dalam contoh ini, repositori terakhir yang terdaftar adalah`my-repo-3`, artinya npm akan terhubung ke. `my-repo-3` Ini mengesampingkan `my-repo-1` repositori dan. `my-repo-2`

## Contoh: Mengganti cakupan dalam registri paket Anda
<a name="workflows-working-packages-ex-overriding-scopes"></a>

Contoh berikut menunjukkan cara mengganti cakupan dalam registri paket Anda.

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

Contoh ini mengkonfigurasi klien npm seperti:

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

Jika Anda menyertakan cakupan utama, repositori terakhir akan diprioritaskan. Dalam contoh ini, terakhir kali lingkup `@scope2` dikonfigurasi `PackageRegistries` adalah untuk`my-repo-2`. Ini mengesampingkan ruang lingkup yang `@scope2` dikonfigurasi untuk. `my-repo-1`

## Contoh: Mengkonfigurasi secara manual untuk `pip` mengautentikasi dengan CodeCatalyst
<a name="workflows-working-packages-pypi-token"></a>

Contoh berikut menunjukkan cara mereferensikan variabel lingkungan CodeCatalyst otorisasi dalam tindakan build.

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