

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.

# Publikasikan dan bagikan paket perangkat lunak di CodeCatalyst
<a name="packages"></a>

Amazon CodeCatalyst berisi layanan repositori paket yang dikelola sepenuhnya yang memudahkan tim pengembangan Anda untuk menyimpan dan berbagi paket perangkat lunak yang digunakan untuk pengembangan aplikasi dengan aman. Paket-paket ini disimpan dalam repositori paket, yang dibuat dan diatur dalam proyek di. CodeCatalyst

Sebuah repositori paket tunggal dapat menyimpan paket dari setiap jenis paket yang didukung. CodeCatalyst mendukung format paket berikut:
+ npm
+ Maven
+ NuGet
+ Python

Paket dalam repositori paket dapat ditemukan dan dibagi antara anggota proyek yang berisi repositori.

Untuk mempublikasikan paket ke, dan menggunakan paket dari repositori, konfigurasikan manajer paket untuk menggunakan titik akhir repositori (URL). Anda kemudian dapat menggunakan manajer paket untuk mempublikasikan paket ke repositori. Anda dapat menggunakan manajer paket seperti Maven, Gradle, npm, yarn, nuget, dotnet, pip, dan twine.

Anda juga dapat mengonfigurasi CodeCatalyst alur kerja untuk menggunakan CodeCatalyst repositori paket. Untuk informasi selengkapnya tentang menggunakan paket dalam alur kerja, lihat[Menghubungkan repositori paket ke alur kerja](workflows-packages.md).

Anda dapat membuat paket dalam satu repositori paket tersedia untuk repositori lain dalam proyek yang sama dengan menambahkannya sebagai repositori upstream. Semua versi paket yang tersedia untuk repositori hulu juga tersedia untuk repositori hilir. Untuk informasi selengkapnya, lihat [Mengkonfigurasi dan menggunakan repositori upstream](packages-upstream-repositories.md).

**Anda dapat membuat paket open-source tersedia untuk CodeCatalyst repositori Anda dengan membuat jenis repositori khusus yang disebut gateway.** Upstreaming ke repositori gateway memungkinkan Anda untuk menggunakan paket dari repositori publik populer seperti npmjs.com dan pypi.org, dan secara otomatis menyimpannya di repositori Anda. CodeCatalyst Lihat informasi yang lebih lengkap di [Menghubungkan ke repositori eksternal publik](packages-connect-external.md).

**Topics**
+ [Konsep paket](packages-concepts.md)
+ [Mengkonfigurasi dan menggunakan repositori paket](packages-repositories.md)
+ [Mengkonfigurasi dan menggunakan repositori upstream](packages-upstream-repositories.md)
+ [Menghubungkan ke repositori eksternal publik](packages-connect-external.md)
+ [Menerbitkan dan memodifikasi paket](working-with-packages.md)
+ [Menggunakan npm](packages-npm.md)
+ [Menggunakan Maven](packages-maven.md)
+ [Menggunakan NuGet](packages-nuget.md)
+ [Menggunakan Python](packages-python.md)
+ [Kuota untuk paket](packages-quotas.md)

# Konsep paket
<a name="packages-concepts"></a>

Berikut adalah beberapa konsep dan istilah yang perlu diketahui saat mengelola, menerbitkan, atau mengkonsumsi paket CodeCatalyst.

## Paket
<a name="packages-concepts-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-package-namespaces) opsional (misalnya, `@types` di `@types/node`)
+ Satu set [versi](#packages-concepts-package-versions) (misalnya,`1.0.0`,`1.0.1`,`1.0.2`)
+ Metadata tingkat paket (misalnya, tag dist npm)

## Ruang nama Package
<a name="packages-concepts-package-namespaces"></a>

Beberapa format paket mendukung nama paket hierarkis untuk mengatur paket ke dalam grup logis dan untuk membantu menghindari tabrakan nama. Paket yang memiliki nama yang sama dapat disimpan di ruang nama yang berbeda. Misalnya, npm mendukung cakupan, dan paket npm `@types/node` memiliki cakupan `@types` dan nama. `node` Ada banyak nama paket lainnya dalam cakupan `@types`. Dalam CodeCatalyst, ruang lingkup (“tipe”) disebut sebagai namespace paket, dan nama (“node”) disebut sebagai nama paket. Untuk paket Maven, namespace paket sesuai dengan groupID Maven. Paket Maven `org.apache.logging.log4j:log4j` memiliki groupID (namespace paket) `org.apache.logging.log4j` dan artifactID (nama paket) `log4j`. Beberapa format paket seperti Python tidak mendukung nama hierarkis dengan konsep yang mirip dengan lingkup npm atau Maven GroupId. Jika Anda tidak memiliki cara untuk mengelompokkan nama paket, akan lebih sulit untuk menghindari tabrakan nama.

## Versi paket
<a name="packages-concepts-package-versions"></a>

*Versi paket* mengidentifikasi versi spesifik dari sebuah paket, seperti `@types/node@12.6.9`. Format nomor versi dan semantik bervariasi untuk format paket yang berbeda. Sebagai contoh, npm paket versi harus sesuai dengan [spesifikasi Versioning Semantik](https://semver.org/). Dalam CodeCatalyst, versi paket terdiri dari pengenal versi, package-version-level metadata, dan satu set aset.

## Aset
<a name="packages-concepts-assets"></a>

*Aset* adalah file individual yang disimpan di dalamnya CodeCatalyst yang terkait dengan versi paket, seperti file npm atau `.tgz` file Maven POM atau JAR.

## Package repositori
<a name="packages-concepts-repository"></a>

*Repositori CodeCatalyst paket* [berisi satu set [paket](#packages-concepts-packages), yang berisi [versi paket](#packages-concepts-package-versions), yang masing-masing memetakan ke satu set aset.](#packages-concepts-assets) Package repositories adalah polyglot, artinya repositori tunggal dapat berisi paket dari jenis apa pun yang didukung. Setiap repositori paket mengekspos titik akhir untuk mengambil dan menerbitkan paket menggunakan alat seperti NuGet CLIs (`dotnet`,`nuget`), CLI, Maven CLI ()`npm`, dan Python (dan). `mvn` CLIs `pip` `twine` Untuk informasi tentang kuota paket CodeCatalyst, termasuk berapa banyak repositori paket yang dapat dibuat di setiap ruang, lihat. [Kuota untuk paket](packages-quotas.md)

Anda dapat menautkan repositori paket ke repositori lain dengan mengaturnya sebagai upstream. Ketika repositori disetel sebagai upstream, Anda dapat menggunakan paket apa pun dari upstream serta repositori upstream tambahan dalam rantai. Untuk informasi selengkapnya, lihat [Repositori hulu](#packages-concepts-upstream-repositories).

Gateway repositori adalah jenis khusus dari repositori paket yang menarik dan menyimpan paket dari otoritas paket eksternal resmi. Untuk informasi selengkapnya, lihat [Repositori gateway](#packages-concepts-gateway-repositories).

## Repositori hulu
<a name="packages-concepts-upstream-repositories"></a>

Anda dapat menggunakan CodeCatalyst untuk membuat hubungan hulu antara dua repositori paket. Repositori paket adalah *hulu* dari yang lain ketika versi paket yang dikandungnya dapat diakses dari titik akhir repositori paket dari repositori hilir. Dengan hubungan hulu, isi dari dua repositori paket secara efektif digabungkan dari sudut pandang klien.

Misalnya, jika manajer paket meminta versi paket yang tidak ada di repositori, kemudian CodeCatalyst akan mencari repositori upstream yang dikonfigurasi untuk versi paket. Repositori upstream dicari dalam urutan mereka dikonfigurasi, dan setelah paket ditemukan, CodeCatalyst akan berhenti mencari. 

## Repositori gateway
<a name="packages-concepts-gateway-repositories"></a>

*Repositori gateway* adalah jenis khusus dari repositori paket yang terhubung ke otoritas paket resmi eksternal yang didukung. Saat Anda menambahkan repositori gateway sebagai repositori [upstream](#packages-concepts-upstream-repositories), Anda dapat menggunakan paket dari otoritas paket resmi yang sesuai. Repositori hilir Anda tidak berkomunikasi dengan repositori publik, sebaliknya, semuanya dimediasi oleh repositori gateway. Paket yang dikonsumsi dengan cara ini disimpan di repositori gateway dan repositori hilir yang menerima permintaan asli.

Repositori gateway sudah ditentukan sebelumnya, tetapi harus dibuat di setiap proyek yang akan digunakan. Daftar berikut berisi setiap repositori gateway yang dapat dibuat CodeCatalyst dan otoritas paket yang terhubung dengannya.
+ **npm-public-registry-gateway**menyediakan paket npm dari npmjs.com.
+ **maven-central-gateway**menyediakan paket Maven dari repositori Maven Central.
+ **google-android-gateway**menyediakan paket Maven dari Google Android.
+ **commonsware-gateway** menyediakan paket Maven dari. CommonsWare
+ **gradle-plugins-gateway**menyediakan paket Maven dari Plugin Gradle.
+ **nuget-gallery-gateway**menyediakan NuGet paket dari NuGet Galeri.
+ **pypi-gateway menyediakan** paket Python dari Indeks Paket Python.

# Mengkonfigurasi dan menggunakan repositori paket
<a name="packages-repositories"></a>

Di CodeCatalyst, paket disimpan dan dikelola di dalam repositori paket. Untuk mempublikasikan paket ke CodeCatalyst atau menggunakan paket dari CodeCatalyst (atau repositori paket publik yang didukung), Anda harus membuat repositori paket dan menghubungkan manajer paket Anda ke paket tersebut.

**Topics**
+ [Membuat repositori paket](packages-repositories-create.md)
+ [Menghubungkan ke repositori paket](packages-repositories-connect.md)
+ [Menghapus repositori paket](packages-repositories-delete.md)

# Membuat repositori paket
<a name="packages-repositories-create"></a>

Lakukan langkah-langkah berikut untuk membuat repositori paket di. CodeCatalyst

**Untuk membuat repositori paket**

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

1. Arahkan ke proyek di mana Anda ingin membuat repositori paket.

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

1. Pada halaman **Package repositories**, pilih **Create package** repository.

1. Di bagian **Package repository details**, tambahkan yang berikut ini:

   1. **Nama repositori**. Pertimbangkan untuk menggunakan nama deskriptif dengan detail seperti proyek atau nama tim Anda, atau bagaimana repositori akan digunakan.

   1. (Opsional) **Deskripsi**. Deskripsi repositori sangat membantu ketika Anda memiliki beberapa repositori di beberapa tim dalam sebuah proyek.

1. Di bagian **Repositori Upstream, pilih Pilih repositori** **upstream untuk menambahkan repositori** paket apa pun yang ingin Anda akses melalui repositori paket Anda. CodeCatalyst **Anda dapat menambahkan **repositori Gateway untuk terhubung ke repositori** paket eksternal atau repositori lainnya. CodeCatalyst **

   1. Ketika sebuah paket diminta dari repositori paket, repositori upstream akan dicari dalam urutan mereka muncul dalam daftar ini. Setelah paket ditemukan, CodeCatalyst akan berhenti mencari. Untuk mengubah urutan repositori upstream, Anda dapat drag dan drop repositori dalam daftar.

1. Pilih **Buat** untuk membuat repositori paket Anda.

# Menghubungkan ke repositori paket
<a name="packages-repositories-connect"></a>

Untuk memublikasikan ke, atau menggunakan paket dari CodeCatalyst, Anda harus mengkonfigurasi manajer paket Anda dengan informasi titik akhir repositori paket dan kredenal Anda. CodeCatalyst Jika Anda belum membuat repositori, Anda dapat melakukannya dengan mengikuti instruksi di. [Membuat repositori paket](packages-repositories-create.md)

Untuk petunjuk tentang cara menghubungkan manajer paket ke repositori CodeCatalyst paket, lihat dokumentasi berikut.
+ [Mengkonfigurasi dan menggunakan Gradle Groovy](packages-maven-gradle.md)
+ [Mengkonfigurasi dan menggunakan mvn](packages-maven-mvn.md)
+ [Mengkonfigurasi dan menggunakan nuget atau dotnet CLI](packages-nuget-cli.md)
+ [Mengkonfigurasi dan menggunakan npm](packages-npm-use.md)
+ [Mengkonfigurasi pip dan menginstal paket Python](packages-python-pip.md)
+ [Mengkonfigurasi Twine dan menerbitkan paket Python](packages-python-twine.md)

# Menghapus repositori paket
<a name="packages-repositories-delete"></a>

Lakukan langkah-langkah berikut untuk menghapus repositori paket di. CodeCatalyst

**Untuk menghapus repositori paket**

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

1. Arahkan ke proyek yang berisi repositori paket yang ingin Anda hapus.

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

1. Pada halaman **Package repositories**, pilih repositori yang ingin Anda hapus.

1. Pilih **Hapus**.

1. Tinjau informasi yang diberikan tentang efek menghapus repositori paket.

1. Masuk `delete` ke kolom input dan pilih **Hapus**.

# Mengkonfigurasi dan menggunakan repositori upstream
<a name="packages-upstream-repositories"></a>

Anda dapat menghubungkan kedua repositori gateway, dan repositori CodeCatalyst paket lainnya, sebagai upstream ke repositori paket Anda. Hal ini memungkinkan klien manajer paket untuk mengakses paket yang terkandung dalam lebih dari satu repositori paket dengan menggunakan endpoint repositori paket tunggal. Berikut ini adalah manfaat utama menggunakan repositori hulu:
+ Anda hanya perlu mengonfigurasi manajer paket Anda dengan satu titik akhir repositori untuk menarik dari berbagai sumber.
+ Paket yang dikonsumsi dari repositori upstream disimpan di repositori hilir Anda, yang memastikan paket Anda tersedia meskipun repositori upstream mengalami pemadaman yang tidak terduga atau paket di repositori upstream dihapus.

Anda dapat menambahkan repositori upstream saat Anda membuat repositori paket. Anda juga dapat menambah atau menghapus repositori upstream dari repositori paket yang ada di konsol. CodeCatalyst 

Saat Anda menambahkan repositori gateway sebagai repositori upstream, repositori paket terhubung ke repositori paket publik repositori gateway yang sesuai. Untuk daftar repositori paket publik yang didukung, lihat. [Repositori paket eksternal yang didukung dan repositori gateway mereka](packages-connect-external.md#packages-upstream-repositories-supported-external)

Anda dapat menautkan beberapa repositori bersama-sama sebagai repositori upstream. Misalnya, tim Anda membuat repositori bernama `project-repo` dan sudah menggunakan repositori lain bernama yang telah **npm-public-registry-gateway**ditambahkan sebagai repositori upstream, yang terhubung ke repositori npm publik,. `team-repo` `npmjs.com` Anda dapat menambahkan `team-repo` sebagai repositori upstream ke. `project-repo` Dalam hal ini, Anda hanya perlu mengkonfigurasi manajer paket Anda untuk digunakan `project-repo` untuk menarik paket dari`project-repo`,`team-repo`,`npm-public-registry-gateway`, dan`npmjs.com`.

**Topics**
+ [Menambahkan repositori hulu](packages-upstream-repositories-add.md)
+ [Mengedit urutan pencarian repositori hulu](packages-upstream-repositories-search-order.md)
+ [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)
+ [Menghapus repositori upstream](packages-upstream-repositories-remove.md)

# Menambahkan repositori hulu
<a name="packages-upstream-repositories-add"></a>

Menambahkan repositori paket publik atau repositori CodeCatalyst paket lain sebagai repositori upstream ke repositori hilir Anda membuat semua paket di repositori upstream tersedia untuk manajer paket yang terhubung ke repositori hilir.

**Untuk menambahkan repositori upstream**

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

1. Pada halaman **Package repositories**, pilih repositori paket yang ingin Anda tambahkan repositori upstream.

1. **Di bawah nama repositori paket, pilih **Upstream dan pilih Pilih repositori upstream**.**

1. Di **Pilih tipe hulu**, pilih salah satu dari berikut ini:
   + **Repositori gerbang**

     Anda dapat memilih dari daftar repositori gateway yang tersedia.
**catatan**  
Untuk terhubung ke otoritas paket eksternal publik seperti Maven Central, npmjs.com, atau Nuget Gallery, CodeCatalyst menggunakan repositori gateway sebagai repositori perantara yang mencari dan menyimpan paket yang ditarik dari repositori eksternal. Ini menghemat waktu dan transfer data karena semua repositori paket dalam proyek akan menggunakan paket dari repositori perantara gateway. Untuk informasi selengkapnya, lihat [Menghubungkan ke repositori eksternal publik](packages-connect-external.md).
   + **CodeCatalyst repositori**

     Anda dapat memilih dari daftar repositori CodeCatalyst paket yang tersedia di proyek Anda.

1. **Ketika Anda telah memilih semua repositori yang ingin Anda tambahkan sebagai repositori upstream, **pilih Pilih, lalu pilih Simpan**.**

   Untuk informasi selengkapnya tentang mengubah urutan pencarian repositori hulu, lihat. [Mengedit urutan pencarian repositori hulu](packages-upstream-repositories-search-order.md)

Ketika Anda telah menambahkan repositori upstream, Anda dapat menggunakan manajer paket yang terhubung ke repositori lokal Anda untuk mengambil paket dari repositori upstream. Anda tidak perlu memperbarui konfigurasi manajer paket Anda. Untuk informasi selengkapnya tentang meminta versi paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

# Mengedit urutan pencarian repositori hulu
<a name="packages-upstream-repositories-search-order"></a>

CodeCatalyst mencari repositori upstream dalam urutan pencarian yang dikonfigurasi. Ketika sebuah paket ditemukan, CodeCatalyst berhenti mencari. Anda dapat mengubah urutan repositori upstream yang dicari untuk paket.

**Untuk mengedit urutan pencarian repositori hulu**

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

1. Pada halaman **Package repositories**, pilih repositori paket yang urutan pencarian repositori hulu yang ingin Anda edit.

1. **Di bawah nama repositori paket, pilih Upstreams.**

1. Di bagian **Repositori Upstream, Anda dapat melihat repositori** upstream dan urutan pencariannya. Untuk mengubah urutan pencarian, seret dan lepas repositori dalam daftar.

1. **Setelah selesai mengedit urutan pencarian repositori upstream, pilih Simpan.**

# Meminta versi paket dengan repositori hulu
<a name="packages-upstream-repositories-request"></a>

Contoh berikut menunjukkan skenario yang mungkin ketika manajer paket meminta paket dari repositori CodeCatalyst paket yang memiliki repositori upstream.

Untuk contoh ini, manajer paket, seperti`npm`, meminta versi paket dari repositori paket bernama `downstream` yang memiliki beberapa repositori upstream. Ketika paket diminta, hal berikut dapat terjadi:
+  Jika `downstream` berisi versi paket yang diminta, akan dikembalikan ke klien. 
+  Jika `downstream` tidak berisi versi paket yang diminta, CodeCatalyst cari di repositori upstream, dalam `downstream` urutan pencarian yang dikonfigurasi. Jika versi paket ditemukan, referensi untuk itu akan disalin ke `downstream`, dan versi paket dikembalikan ke klien. 
+  Jika tidak ada `downstream` atau repositori upstream yang berisi versi paket, `Not Found` respons HTTP 404 dikembalikan ke klien.

 Jumlah maksimum repositori hulu langsung yang diizinkan untuk satu repositori adalah 10. Jumlah maksimum repositori yang CodeCatalyst dicari saat versi paket diminta adalah 25. 

## Retensi paket dari repositori hulu
<a name="package-retention-upstream-repos"></a>

Jika versi paket yang diminta ditemukan di repositori upstream, referensi untuk itu dipertahankan dan selalu tersedia di repositori yang memintanya. Ini memastikan bahwa Anda memiliki akses ke paket Anda jika ada pemadaman tak terduga dari repositori upstream. Versi paket yang dipertahankan tidak terpengaruh oleh salah satu dari berikut ini: 
+  Menghapus repositori hulu. 
+  Memutuskan koneksi repositori hulu dari repositori hilir. 
+  Menghapus versi paket dari repositori hulu. 
+  Mengedit versi paket di repositori hulu (misalnya, dengan menambahkan aset baru ke dalamnya). 

## Mengambil paket melalui hubungan hulu
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst dapat mengambil paket melalui beberapa repositori tertaut yang disebut repositori upstream. Jika repositori CodeCatalyst paket memiliki koneksi upstream ke repositori CodeCatalyst paket lain yang memiliki koneksi upstream ke repositori gateway, permintaan paket yang tidak ada di repositori upstream disalin dari repositori eksternal. Misalnya, pertimbangkan konfigurasi berikut: repositori bernama `repo-A` memiliki koneksi upstream ke repositori gateway,. `npm-public-registry-gateway` `npm-public-registry-gateway`memiliki koneksi hulu ke repositori paket publik,. [https://npmjs.com](https://npmjs.com)

![\[Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


Jika `npm` dikonfigurasi untuk menggunakan `repo-A` repositori, menjalankan `npm install` memulai penyalinan paket dari ke. [https://npmjs.com](https://npmjs.com)`npm-public-registry-gateway` Versi yang dipasang juga ditarik ke dalam `repo-A`. Contoh berikut menginstal `lodash`.

```
$ npm config get registry
https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/
$ npm install lodash
+ lodash@4.17.20
added 1 package from 2 contributors in 6.933s
```

Setelah berjalan`npm install`, hanya `repo-A` berisi versi terbaru (`lodash 4.17.20`) karena itulah versi yang diambil oleh `npm` from`repo-A`.

 Karena `npm-public-registry-gateway` memiliki koneksi upstream eksternal ke [https://npmjs.com](https://npmjs.com), semua versi paket yang diimpor dari [https://npmjs.com](https://npmjs.com)disimpan di`npm-public-registry-gateway`. Versi paket ini dapat diambil oleh repositori hilir mana pun dengan koneksi hulu yang mengarah ke. `npm-public-registry-gateway` 

Isi `npm-public-registry-gateway` menyediakan cara bagi Anda untuk melihat semua paket dan versi paket yang diimpor dari waktu [https://npmjs.com](https://npmjs.com)ke waktu.

## Retensi paket dalam repositori menengah
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst memungkinkan Anda untuk rantai repositori hulu. Misalnya, `repo-A` dapat memiliki `repo-B` sebagai repositori upstream dan `repo-B` dapat memiliki `repo-C` sebagai repositori upstream. Konfigurasi ini membuat versi paket di `repo-B` dan `repo-C` tersedia dari `repo-A`. 

![\[Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Ketika manajer paket terhubung ke repositori `repo-A` dan mengambil versi paket dari repositori`repo-C`, versi paket tidak dipertahankan dalam repositori. `repo-B` Versi paket hanya disimpan di repositori hilir terjauh, yang dalam contoh ini adalah. `repo-A` Itu tidak disimpan di repositori perantara apa pun. Ini juga berlaku untuk rantai yang lebih panjang; misalnya, jika ada empat repositori:`repo-A`,`repo-B`,`repo-C`, dan`repo-D`, dan manajer paket yang terhubung untuk `repo-A` mengambil versi paket dari`repo-D`, versi paket akan dipertahankan `repo-A` tetapi tidak di atau. `repo-B` `repo-C` 

Perilaku retensi paket serupa saat menarik versi paket dari repositori paket publik, kecuali bahwa versi paket selalu dipertahankan di repositori gateway yang memiliki koneksi hulu langsung ke repositori publik. Misalnya, `repo-A` memiliki `repo-B` sebagai repositori hulu. `repo-B`memiliki `npm-public-registry-gateway` sebagai repositori upstream, yang memiliki koneksi upstream ke repositori publik, **npmjs.com**; lihat diagram di bawah ini.

![\[Diagram repositori hulu yang menunjukkan tiga repositori dirantai bersama dengan koneksi hulu eksternal ke npmjs.com.\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 **Jika manajer paket terhubung untuk `repo-A` meminta versi paket tertentu, *lodash 4.17.20* misalnya, dan versi paket tidak ada di salah satu dari tiga repositori, itu akan diambil dari npmjs.com.** **Ketika *lodash 4.17.20* diambil, itu dipertahankan karena itu adalah repositori hilir terjauh dan `repo-A` `npm-public-registry-gateway` karena memiliki koneksi hulu ke repositori eksternal publik, npmjs.com.** *lodash 4.17.20* tidak dipertahankan `repo-B` karena itu adalah repositori perantara. 

# Menghapus repositori upstream
<a name="packages-upstream-repositories-remove"></a>

Jika Anda tidak lagi ingin mengakses paket dalam repositori upstream, Anda dapat menghapus repositori upstream dari repositori paket.

**Awas**  
Saat Anda menghapus repositori upstream, Anda dapat memutuskan rantai hubungan hulu, yang dapat merusak proyek atau build Anda.

**Untuk menghapus repositori upstream**

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

1. Pada halaman **Package repositories**, pilih repositori paket dari mana Anda ingin menghapus repositori upstream.

1. **Di bawah nama repositori paket, pilih Upstreams.**

1. Di bagian **Edit repositori hulu, temukan repositori** upstream yang ingin Anda hapus dan pilih. ![\[Remove\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/remove.png)

1. **Setelah selesai menghapus repositori upstream, pilih Simpan.**

# Menghubungkan ke repositori eksternal publik
<a name="packages-connect-external"></a>

Anda dapat menghubungkan repositori CodeCatalyst paket ke repositori eksternal publik yang didukung dengan menambahkan repositori gateway yang sesuai sebagai repositori upstream. Repositori gateway bertindak sebagai repositori perantara yang mencari dan menyimpan paket yang ditarik dari repositori eksternal. Ini menghemat waktu dan transfer data karena semua repositori paket dalam proyek dapat menggunakan paket yang disimpan dari repositori gateway.

**Untuk terhubung ke repositori publik menggunakan repositori gateway**

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

1. Dalam **Paket**, pilih halaman **repositori Gateway**. Anda dapat melihat daftar repositori gateway yang didukung dan deskripsinya. 

1. Untuk menggunakan repositori gateway, pertama-tama Anda harus membuatnya. Jika repositori gateway telah dibuat, tanggal dan waktu pembuatannya akan ditampilkan. Jika belum, pilih **Buat** untuk membuatnya.

1. Untuk menggunakan paket dari repositori gateway, Anda harus mengatur koneksi upstream ke sana dari repositori. CodeCatalyst Pilih **Package repositories** dan pilih paket repositori yang ingin Anda sambungkan.

1. **Untuk terhubung ke repositori publik, pilih **Upstream dan pilih Pilih repositori upstream**.**

1. Pilih **repositori Gateway** pilih repositori gateway yang sesuai dengan repositori publik yang ingin Anda sambungkan sebagai repositori upstream.

1. **Ketika Anda telah memilih semua repositori gateway yang ingin Anda tambahkan sebagai repositori upstream, pilih Select.**

1. **Setelah selesai memesan repositori upstream, pilih Simpan.**

Untuk informasi selengkapnya tentang repositori upstream, lihat. [Mengkonfigurasi dan menggunakan repositori upstream](packages-upstream-repositories.md)

Ketika Anda telah menambahkan repositori gateway sebagai repositori upstream, Anda dapat menggunakan manajer paket yang terhubung ke repositori lokal Anda untuk mengambil paket dari repositori paket eksternal publik yang sesuai dengannya. Anda tidak perlu memperbarui konfigurasi manajer paket Anda. Paket yang dikonsumsi dengan cara ini disimpan di repositori gateway dan repositori paket lokal Anda. Untuk informasi selengkapnya tentang meminta versi paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

## Repositori paket eksternal yang didukung dan repositori gateway mereka
<a name="packages-upstream-repositories-supported-external"></a>

CodeCatalyst mendukung penambahan koneksi hulu ke otoritas paket resmi berikut dengan repositori gateway.


| Jenis paket repositori | Deskripsi | Nama repositori gateway | 
| --- | --- | --- | 
| npm | registri publik npm | npm-public-registry-gateway | 
| Python | Indeks Paket Python | pypi-gateway | 
| Maven | Maven Central | maven-central-gateway | 
| Maven | Repositori Google Android | google-android-gateway | 
| Maven | CommonsWare | commonsware-gateway | 
| Maven | Repositori plugin Gradle | gradle-plugins-gateway | 
| NuGet | NuGet Galeri | nuget-gallery-gateway | 

# Menerbitkan dan memodifikasi paket
<a name="working-with-packages"></a>

*Paket* dalam CodeCatalyst adalah bundel perangkat lunak dan metadata yang diperlukan untuk menyelesaikan dependensi dan menginstal perangkat lunak. Untuk daftar format paket yang didukung CodeCatalyst, lihat[Publikasikan dan bagikan paket perangkat lunak di CodeCatalyst](packages.md). Bagian ini memberikan informasi tentang penerbitan, melihat, menghapus paket, dan memperbarui status versi paket.

**Topics**
+ [Menerbitkan paket ke CodeCatalyst repositori paket](package-publishing.md)
+ [Melihat detail versi paket](working-with-packages-view.md)
+ [Menghapus versi paket](working-with-packages-delete.md)
+ [Memperbarui status versi paket](working-with-packages-update-version-status.md)
+ [Mengedit kontrol asal paket](package-origin-controls.md)

# Menerbitkan paket ke CodeCatalyst repositori paket
<a name="package-publishing"></a>

 Anda dapat mempublikasikan versi dari semua jenis paket yang didukung ke repositori CodeCatalyst paket dengan menggunakan alat manajer paket. Langkah-langkah untuk mempublikasikan versi paket adalah sebagai berikut:

**Untuk mempublikasikan versi paket ke CodeCatalyst repositori paket**

1. Jika belum, [buat repositori paket](packages-repositories-create.md).

1. Hubungkan manajer paket Anda ke repositori paket Anda. Untuk petunjuk tentang cara menghubungkan manajer paket npm ke repositori CodeCatalyst paket, lihat. [Mengkonfigurasi dan menggunakan npm](packages-npm-use.md)

1. Gunakan pengelola paket yang terhubung untuk mempublikasikan versi paket Anda.

**Contents**
+ [Publikasi dan repositori hulu](#package-publishing-upstreams)
+ [Paket privat dan repositori publik](#package-publishing-upstreams-direct)
+ [Penimpaan aset paket](#package-publishing-overwrite-assets)

## Publikasi dan repositori hulu
<a name="package-publishing-upstreams"></a>

Di CodeCatalyst, Anda tidak dapat mempublikasikan versi paket yang ada di repositori upstream yang dapat dijangkau atau repositori publik. Misalnya, Anda ingin mempublikasikan paket npm, ke repositori paket, `lodash@1.0``myrepo`, dan terhubung ke npmjs.com melalui repositori gateway yang `myrepo` dikonfigurasi sebagai repositori upstream. Jika `lodash@1.0` ada di repositori upstream atau di npmjs.com, CodeCatalyst menolak setiap upaya untuk mempublikasikannya dengan mengeluarkan kesalahan konflik 409. `myrepo` Ini membantu mencegah Anda menerbitkan paket dengan nama dan versi yang sama secara tidak sengaja sebagai paket di repositori upstream, yang dapat mengakibatkan perilaku yang tidak terduga. 

Anda masih dapat mempublikasikan versi berbeda dari nama paket yang ada di repositori upstream. Misalnya, jika `lodash@1.0` ada dalam repositori hulu, tapi `lodash@1.1` tidak, Anda dapat memublikasikan `lodash@1.1` ke repositori hilir.

## Paket privat dan repositori publik
<a name="package-publishing-upstreams-direct"></a>

 CodeCatalyst tidak mempublikasikan paket yang disimpan dalam CodeCatalyst repositori ke repositori publik, seperti npmjs.com atau Maven Central. CodeCatalyst mengimpor paket dari repositori publik ke dalam CodeCatalyst repositori, tetapi tidak memindahkan paket ke arah yang berlawanan. Paket yang Anda publikasikan ke CodeCatalyst repositori tetap pribadi dan hanya tersedia untuk CodeCatalyst proyek di mana repositori berada.

## Penimpaan aset paket
<a name="package-publishing-overwrite-assets"></a>

 Anda tidak dapat memublikasikan kembali aset paket yang sudah ada dengan konten yang berbeda. Misalnya, anggaplah Anda sudah memublikasikan paket Maven dengan aset JAR `mypackage-1.0.jar`. Anda hanya dapat mempublikasikan aset itu lagi jika checksum aset lama dan baru identik. Untuk menerbitkan ulang aset yang sama dengan konten baru, hapus versi paket terlebih dahulu. Mencoba untuk memublikasikan ulang nama aset yang sama dengan konten yang berbeda akan mengakibatkan kesalahan konflik HTTP 409. 

Untuk format paket yang mendukung beberapa aset (Python dan Maven), Anda dapat menambahkan aset baru dengan nama berbeda ke versi paket yang ada kapan saja, dengan asumsi Anda memiliki izin yang diperlukan. Karena npm dan NuGet hanya mendukung satu aset per versi paket, untuk memodifikasi versi paket yang diterbitkan Anda harus menghapusnya terlebih dahulu. 

 Jika Anda mencoba untuk memublikasikan kembali aset yang sudah ada (misalnya, `mypackage-1.0.jar`), dan isi dari aset yang dipublikasikan dan aset baru identik, operasi akan berhasil karena operasi idempoten. 

# Melihat detail versi paket
<a name="working-with-packages-view"></a>

Anda dapat menggunakan CodeCatalyst konsol untuk melihat detail tentang versi paket tertentu.

**Untuk melihat detail versi paket**

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

1. Pada halaman **Package repositories**, pilih repositori yang berisi versi paket yang ingin Anda lihat detailnya.

1. Cari versi paket di tabel **Paket**. Anda dapat menggunakan bilah pencarian untuk memfilter paket berdasarkan nama dan format paket. Pilih paket dari daftar.

1. Di halaman **Package details**, pilih **Versions**, lalu pilih versi yang ingin Anda lihat.

# Menghapus versi paket
<a name="working-with-packages-delete"></a>

Anda dapat menghapus versi paket dari halaman **detail versi Package** di CodeCatalyst konsol.

**Untuk menghapus versi paket**

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

1. Pada halaman **Package repositories**, pilih repositori yang berisi versi paket yang ingin Anda hapus.

1. Cari dan pilih paket dari tabel.

1. Pada halaman **Package details**, pilih **Versions** dan pilih versi yang ingin Anda hapus.

1. Pada halaman **Detail versi Package**, pilih **Tindakan versi** lalu pilih **Hapus**.

1. Masukkan *hapus* ke bidang teks dan pilih **Hapus**.

# Memperbarui status versi paket
<a name="working-with-packages-update-version-status"></a>

Setiap versi paket CodeCatalyst memiliki status yang menjelaskan status saat ini dan ketersediaan versi paket. Anda dapat mengubah status versi paket di CodeCatalyst konsol. Untuk informasi selengkapnya tentang kemungkinan nilai status versi paket dan artinya, lihat[Status versi paket](#package-version-status).

**Untuk memperbarui status versi paket**

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

1. Pada halaman **Package repositories**, pilih repositori yang berisi versi paket yang ingin Anda perbarui statusnya.

1. Cari dan pilih paket dari tabel.

1. Pada halaman **Package details**, pilih **Versions** dan kemudian pilih versi yang ingin Anda lihat.

1. Pada halaman **detail versi Package**, pilih **Actions** lalu pilih **Unlist**, **Archive**, atau **Dispose**. Untuk informasi tentang setiap status versi paket, lihat[Status versi paket](#package-version-status).

1. Masukkan teks konfirmasi ke dalam bidang teks, lalu pilih **Batalkan Daftar**, **Arsipkan**, atau **Buang**, tergantung pada status yang Anda perbarui.

## Status versi paket
<a name="package-version-status"></a>

Berikut ini adalah nilai yang mungkin untuk status versi paket. Anda dapat mengubah status versi paket di konsol. Untuk informasi selengkapnya, lihat [Memperbarui status versi paket](#working-with-packages-update-version-status).
+  **Diterbitkan**: Versi paket berhasil diterbitkan dan dapat diminta oleh manajer paket. Versi paket akan disertakan dalam daftar versi paket yang dikembalikan ke manajer paket; misalnya, dalam output dari`npm view <package-name> versions`. Semua aset versi paket tersedia dari repositori. 
+  **Belum Selesai**: Upaya terakhir untuk memublikasikan tidak selesai. Saat ini hanya versi paket Maven dapat memiliki status **Belum Selesai**. Hal ini dapat terjadi ketika klien mengunggah satu atau beberapa aset untuk versi paket tetapi tidak memublikasikan file `maven-metadata.xml` untuk paket yang mencakup versi tersebut. 
+  **Tidak terdaftar**: Aset versi paket tersedia untuk diunduh dari repositori, tetapi versi paket tidak termasuk dalam daftar versi yang dikembalikan ke manajer paket. Misalnya, untuk paket npm, output dari `npm view <package-name> versions` tidak termasuk versi paket. Ini berarti bahwa logika resolusi ketergantungan npm tidak memilih versi paket karena versi tidak muncul dalam daftar versi yang tersedia. Namun, jika versi paket **Tidak Terdaftar** sudah direferensikan dalam sebuah `npm package-lock.json` file, itu masih dapat diunduh dan diinstal; misalnya, saat menjalankan. `npm ci` 
+  **Diarsipkan**: Aset versi paket tidak dapat diunduh. Versi paket tidak akan dimasukkan dalam daftar versi yang dikembalikan ke manajer paket. Karena aset tidak tersedia, konsumsi versi paket oleh klien diblokir. Jika build aplikasi Anda bergantung pada versi yang diperbarui ke **Archived**, build akan gagal, kecuali versi paket telah di-cache secara lokal. Anda tidak dapat menggunakan pengelola paket atau alat build untuk menerbitkan ulang versi paket yang **Diarsipkan** karena masih ada di repositori. Namun, Anda dapat mengubah status versi paket kembali ke **Tidak Terdaftar** atau **Diterbitkan** di konsol. 
+  **Disposed**: Versi paket tidak muncul dalam daftar, dan aset tidak dapat diunduh dari repositori. Perbedaan utama antara **Disposed** dan **Archived** adalah bahwa dengan status **Disposed**, aset versi paket dihapus secara permanen oleh. CodeCatalyst Untuk alasan ini, Anda tidak dapat memindahkan versi paket dari **Dibuang** ke **Diarsipkan**, **Tidak Terdaftar**, atau **Dipublikasikan**. Versi paket tidak dapat digunakan karena aset telah dihapus. Ketika versi paket telah ditandai sebagai **Disposed**, Anda tidak ditagih untuk penyimpanan aset paket. 

 Selain status dalam daftar sebelumnya, versi paket juga dapat dihapus. Setelah dihapus, versi paket tidak ada di repositori dan Anda dapat dengan bebas menerbitkan ulang versi paket itu dengan menggunakan manajer paket atau alat build. 

## Nama paket, versi paket, dan normalisasi nama aset
<a name="package-name-normalization"></a>

CodeCatalyst menormalkan nama paket, versi paket, dan nama aset sebelum menyimpannya, yang berarti nama atau versi CodeCatalyst mungkin berbeda dari nama atau versi yang disediakan saat paket diterbitkan. Untuk informasi selengkapnya tentang cara nama dan versi dinormalisasi CodeCatalyst untuk setiap jenis paket, lihat dokumentasi berikut.
+ [Normalisasi nama paket Python](python-name-normalization.md)
+ [NuGet nama paket, versi, dan normalisasi nama aset](nuget-name-normalization.md)

CodeCatalyst tidak melakukan normalisasi pada format paket lainnya.

# Mengedit kontrol asal paket
<a name="package-origin-controls"></a>

Di Amazon CodeCatalyst, versi paket dapat ditambahkan ke repositori paket dengan menerbitkannya secara langsung, menariknya ke bawah dari repositori upstream, atau menelannya dari repositori publik eksternal melalui gateway. Jika Anda mengizinkan versi paket ditambahkan baik dengan penerbitan langsung dan menelan dari repositori publik, maka Anda rentan terhadap serangan substitusi ketergantungan. Untuk informasi selengkapnya, lihat [Serangan substitusi ketergantungan](#dependency-substitution-attacks). Untuk melindungi diri Anda dari serangan substitusi dependensi, konfigurasikan kontrol asal paket pada paket dalam repositori untuk membatasi bagaimana versi paket itu dapat ditambahkan ke repositori.

Anda harus mempertimbangkan untuk mengonfigurasi kontrol asal paket untuk membuat versi baru dari paket yang berbeda berasal dari kedua sumber internal, seperti penerbitan langsung, dan sumber eksternal, seperti repositori publik. Secara default, kontrol asal paket dikonfigurasi berdasarkan bagaimana versi pertama paket ditambahkan ke repositori.

## Pengaturan kontrol asal paket
<a name="package-origin-control-settings"></a>

Dengan kontrol asal paket, Anda dapat mengonfigurasi bagaimana versi paket dapat ditambahkan ke repositori. Daftar berikut mencakup pengaturan dan nilai kontrol asal paket yang tersedia.

**Publikasikan**

Pengaturan ini mengonfigurasi apakah versi paket dapat dipublikasikan langsung ke repositori menggunakan manajer paket atau alat serupa.
+ **ALLOW**: Versi Package dapat dipublikasikan secara langsung.
+ **BLOCK**: Versi Package tidak dapat dipublikasikan secara langsung.

**Hulu**

Pengaturan ini mengonfigurasi apakah versi paket dapat dicerna dari eksternal, repositori publik, atau disimpan dari repositori hulu saat diminta oleh manajer paket.
+ **ALLOW**: Setiap versi paket dapat dipertahankan dari repositori lain yang dikonfigurasi sebagai CodeCatalyst repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.
+ **BLOCK**: Versi Package tidak dapat dipertahankan dari CodeCatalyst repositori lain yang dikonfigurasi sebagai repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.

### Pengaturan kontrol asal paket default
<a name="default-package-origin-control-settings"></a>

Kontrol asal paket default untuk sebuah paket akan didasarkan pada bagaimana versi pertama paket itu ditambahkan ke repositori paket.
+ Jika versi paket pertama diterbitkan secara langsung oleh manajer paket, pengaturannya adalah **Publish: ALLOW dan **Upstream:**** BLOCK.
+ Jika versi paket pertama dicerna dari sumber publik, pengaturannya adalah **Publish: BLOCK dan **Upstream:**** ALLOW.

## Skenario kontrol akses paket umum
<a name="package-origin-control-scenarios"></a>

Bagian ini menjelaskan beberapa skenario umum ketika versi paket ditambahkan ke repositori CodeCatalyst paket. Pengaturan kontrol asal paket diatur untuk paket baru tergantung pada bagaimana versi paket pertama ditambahkan.

Dalam skenario berikut, *paket internal* diterbitkan langsung dari manajer paket ke repositori Anda, seperti paket yang Anda pertahankan. *Paket eksternal adalah paket* yang ada di repositori publik yang dapat dicerna ke dalam repositori Anda melalui repositori gateway upstream.

**Versi paket eksternal diterbitkan untuk paket internal yang ada**

Dalam skenario ini, pertimbangkan paket internal, *PackageA*. Tim Anda menerbitkan versi paket pertama untuk *PackageA* ke repositori paket. CodeCatalyst Karena ini adalah versi paket pertama untuk paket itu, pengaturan kontrol asal paket secara otomatis diatur ke **Publish: Allow** and **Upstream: Block**. Setelah paket diterbitkan di repositori Anda, paket dengan nama yang sama dipublikasikan ke repositori publik yang terhubung ke repositori paket Anda. CodeCatalyst Ini bisa berupa percobaan serangan substitusi ketergantungan terhadap paket internal, atau bisa juga kebetulan. Terlepas dari itu, kontrol asal paket dikonfigurasi untuk memblokir konsumsi versi eksternal baru untuk melindungi diri dari serangan potensial.

Pada gambar berikut, *RepoA adalah repositori* CodeCatalyst paket Anda dengan koneksi upstream ke repositori. `npm-public-registry-gateway` Repositori Anda berisi versi 1.1 dan 2.1 dari *PackageA*, tetapi versi 3.0 dipublikasikan ke repositori publik. Biasanya, *RepOA* akan menelan versi 3.0 setelah paket diminta oleh manajer paket. Karena konsumsi paket disetel ke **Block**, versi 3.0 tidak tertelan ke dalam repositori CodeCatalyst paket Anda dan tidak tersedia untuk manajer paket yang terhubung dengannya.

![\[Grafik sederhana yang menunjukkan versi paket eksternal baru yang diblokir dari repositori publik.\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/package-origin-controls-one.png)


**Versi paket internal diterbitkan untuk paket eksternal yang ada**

Dalam skenario ini, sebuah paket, *PackageB*, ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta *PackageB*, versi paket diserap ke dalam repositori Anda dari repositori publik. **Karena ini adalah versi paket pertama dari *PackageB* yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk **Publish: BLOCK dan Upstream: ALLOW**.** Kemudian, Anda mencoba mempublikasikan versi dengan nama paket yang sama ke repositori. Anda mungkin tidak mengetahui paket publik dan mencoba mempublikasikan paket yang tidak terkait dengan nama yang sama, atau Anda mungkin mencoba menerbitkan versi yang ditambal, atau Anda mungkin mencoba untuk secara langsung mempublikasikan versi paket persis yang sudah ada secara eksternal. CodeCatalyst menolak versi yang Anda coba terbitkan, tetapi Anda dapat secara eksplisit mengganti penolakan dan mempublikasikan versinya, jika perlu.

Pada gambar berikut, *RepoA adalah repositori* CodeCatalyst paket Anda dengan koneksi upstream ke repositori. `npm-public-registry-gateway` Repositori paket Anda berisi versi 3.0 yang dicerna dari repositori publik. Anda ingin mempublikasikan versi 1.2 ke repositori paket Anda. Biasanya, Anda dapat mempublikasikan versi 1.2 ke *RePoA*, tetapi karena penerbitan diatur ke **Blokir**, versi 1.2 tidak dapat dipublikasikan.

![\[Grafik sederhana yang menampilkan penerbitan paket diblokir.\]](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/package-origin-controls-two.png)


**Menerbitkan versi paket yang ditambal dari paket eksternal yang ada**

Dalam skenario ini, sebuah paket, *PackageB*, ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori paket Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta *PackageB*, versi paket diserap ke dalam repositori Anda dari repositori publik. **Karena ini adalah versi paket pertama dari *PackageB* yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk **Publish: BLOCK dan Upstream: ALLOW**.** Tim Anda memutuskan untuk menerbitkan versi paket yang ditambal dari paket ini ke repositori. Untuk dapat mempublikasikan versi paket secara langsung, tim Anda mengubah pengaturan kontrol asal paket menjadi **Publish:** ALLOW dan **Upstream: BLOCK**. Versi paket ini sekarang dapat dipublikasikan langsung ke repositori Anda dan dicerna dari repositori publik. Setelah tim Anda menerbitkan versi paket yang ditambal, tim Anda mengembalikan setelan asal paket ke **Publish: BLOCK dan **Upstream**: ALLOW**.

## Mengedit kontrol asal paket
<a name="edit-package-origin-controls"></a>

Kontrol asal paket dikonfigurasi secara otomatis berdasarkan bagaimana versi paket pertama dari sebuah paket ditambahkan ke repositori paket. Untuk informasi selengkapnya, lihat [Pengaturan kontrol asal paket default](#default-package-origin-control-settings). Untuk menambah atau mengedit kontrol asal paket untuk paket dalam repositori CodeCatalyst paket, lakukan langkah-langkah dalam prosedur berikut.

**Untuk menambah atau mengedit kontrol asal paket**

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

1. Pilih repositori paket yang berisi paket yang ingin Anda edit. 

1. Dalam tabel **Paket**, cari dan pilih paket yang ingin Anda edit.

1. Dari halaman ringkasan paket, pilih **Kontrol asal**.

1. Di **kontrol Origin**, pilih kontrol asal paket yang ingin Anda atur untuk paket ini. Kedua pengaturan kontrol asal paket, **Publish** dan **Upstream**, harus diatur pada saat yang sama.
   + Untuk mengizinkan penerbitan versi paket secara langsung, di **Publikasikan**, pilih **Izinkan**. Untuk memblokir penerbitan versi paket, pilih **Blokir**.
   + ****Untuk memungkinkan konsumsi paket dari repositori eksternal dan menarik paket dari repositori upstream, di sumber Upstream, pilih Izinkan.**** **Untuk memblokir semua konsumsi dan penarikan versi paket dari repositori eksternal dan upstream, pilih Blokir.**

1. Pilih **Simpan**.

## Publikasi dan repositori hulu
<a name="package-publishing-upstreams"></a>

Di CodeCatalyst, Anda tidak dapat mempublikasikan versi paket yang ada di repositori upstream yang dapat dijangkau atau repositori publik. Misalnya, misalkan Anda ingin mempublikasikan paket `lodash@1.0` npm ke repositori,`myrepo`, dan `myrepo` memiliki repositori upstream dengan koneksi eksternal ke npmjs.com. Pertimbangkan skenario berikut.

1. Pengaturan kontrol asal paket aktif `lodash` adalah **Publish: ALLOW dan** **Upstream: ALLOW.** Jika `lodash@1.0` ada di repositori upstream atau di npmjs.com, CodeCatalyst menolak setiap upaya untuk mempublikasikannya dengan mengeluarkan kesalahan konflik 409. `myrepo` Anda masih dapat mempublikasikan versi yang berbeda, seperti`lodash@1.1`.

1. Pengaturan kontrol asal paket aktif `lodash` adalah **Publish: ALLOW dan** **Upstream: BLOCK**. Anda dapat mempublikasikan versi apa pun `lodash` ke repositori Anda yang belum ada karena versi paket tidak dapat dijangkau.

1. Pengaturan kontrol asal paket aktif `lodash` adalah **Publish: BLOCK** dan **Upstream: ALLOW.** Anda tidak dapat mempublikasikan versi paket apa pun langsung ke repositori Anda.

## Serangan substitusi ketergantungan
<a name="dependency-substitution-attacks"></a>

Package manager menyederhanakan proses pengemasan dan berbagi kode yang dapat digunakan kembali. Paket-paket ini mungkin paket pribadi yang dikembangkan oleh organisasi untuk digunakan dalam aplikasi mereka, atau mereka mungkin publik, biasanya paket open-source yang dikembangkan di luar organisasi dan didistribusikan oleh repositori paket publik. Saat meminta paket, pengembang mengandalkan manajer paket mereka untuk mengambil versi baru dari dependensi mereka. Serangan substitusi dependensi, juga dikenal sebagai serangan kebingungan ketergantungan, mengeksploitasi fakta bahwa manajer paket biasanya tidak memiliki cara untuk membedakan versi paket yang sah dari versi berbahaya. 

Serangan substitusi dependensi termasuk dalam subset serangan yang dikenal sebagai serangan rantai pasokan perangkat lunak. Serangan rantai pasokan perangkat lunak adalah serangan yang memanfaatkan kerentanan di mana saja dalam rantai pasokan perangkat lunak.

Serangan substitusi dependensi dapat menargetkan siapa saja yang menggunakan paket dan paket yang dikembangkan secara internal yang diambil dari repositori publik. Penyerang mengidentifikasi nama paket internal dan kemudian secara strategis menempatkan kode berbahaya dengan nama yang sama di repositori paket publik. Biasanya, kode berbahaya diterbitkan dalam paket dengan nomor versi tinggi. Package manager mengambil kode berbahaya dari feed publik ini karena mereka percaya bahwa paket berbahaya adalah versi terbaru dari paket. Hal ini menyebabkan “kebingungan” atau “substitusi” antara paket yang diinginkan dan paket berbahaya, yang menyebabkan kode dikompromikan.

Untuk mencegah serangan substitusi dependensi, Amazon CodeCatalyst menyediakan kontrol asal paket. Package origin control adalah pengaturan yang mengontrol bagaimana paket dapat ditambahkan ke repositori Anda. Kontrol dikonfigurasi secara otomatis ketika versi paket pertama dari paket baru ditambahkan ke CodeCatalyst repositori Kontrol dapat memastikan versi paket tidak dapat dipublikasikan langsung ke repositori Anda dan dicerna dari sumber publik, melindungi Anda dari serangan substitusi ketergantungan. Untuk informasi selengkapnya tentang kontrol asal paket dan cara mengubahnya, lihat[Mengedit kontrol asal paket](#package-origin-controls).

# Menggunakan npm
<a name="packages-npm"></a>

Topik-topik ini menjelaskan bagaimana Anda dapat menggunakan`npm`, manajer paket Node.js, dengan CodeCatalyst.

**catatan**  
CodeCatalyst mendukung `node v4.9.1` dan kemudian `npm v5.0.0` dan kemudian.

**Topics**
+ [Mengkonfigurasi dan menggunakan npm](packages-npm-use.md)
+ [penanganan tanda npm](packages-npm-tags.md)

# Mengkonfigurasi dan menggunakan npm
<a name="packages-npm-use"></a>

Untuk menggunakannya `npm` CodeCatalyst, Anda harus terhubung `npm` ke repositori paket Anda dan menyediakan token akses pribadi (PAT) untuk otentikasi. Anda dapat melihat instruksi untuk menghubungkan `npm` ke repositori paket Anda di konsol. CodeCatalyst 

**Contents**
+ [Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure)
+ [Menginstal paket npm dari repositori CodeCatalyst paket](#npm-install)
+ [Menginstal paket npm dari npmjs melalui CodeCatalyst](#npm-install-npmjs)
+ [Menerbitkan paket npm ke repositori CodeCatalyst paket Anda](#npm-publish)
+ [dukungan perintah npm](#npm-commands)
  + [Perintah yang didukung yang berinteraksi dengan repositori paket](#supported-commands-that-interact-with-a-repository)
  + [Perintah sisi klien yang didukung](#supported-client-side-commands)
  + [Perintah tidak didukung](#unsupported-commands)

## Mengkonfigurasi npm dengan CodeCatalyst
<a name="npm-configure"></a>

Petunjuk berikut menjelaskan cara mengautentikasi dan menghubungkan `npm` ke repositori CodeCatalyst paket Anda. Untuk informasi selengkapnya tentang npm, lihat dokumentasi [resmi npm](https://docs.npmjs.com/).

**Untuk terhubung `npm` ke repositori CodeCatalyst paket Anda**

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

1. Arahkan ke proyek Anda.

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

1. Pilih repositori paket Anda dari daftar.

1. Pilih **Connect to repository**.

1. Dalam **detail Konfigurasi**, di **klien Package manager**, pilih **klien npm**.

1. Pilih sistem operasi Anda untuk melihat langkah-langkah konfigurasi yang sesuai.

1. Token akses pribadi (PAT) diperlukan untuk mengautentikasi npm dengan. CodeCatalyst Jika Anda sudah memiliki token, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya menggunakan langkah-langkah berikut.

   1. **(Opsional):** Perbarui **nama PAT** dan **Tanggal kedaluwarsa**.

   1. Pilih **Buat token**.

   1. Salin dan simpan PAT Anda di lokasi yang aman.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog. Kredensil harus berumur pendek untuk meminimalkan lamanya waktu penyerang dapat menggunakan kredensil setelah menyalahgunakannya.

1. Jalankan perintah berikut dari direktori root proyek Anda untuk mengonfigurasi npm dengan repositori paket Anda. Perintah akan melakukan hal berikut:
   + Buat `.npmrc` file tingkat proyek jika proyek Anda tidak memilikinya.
   + Tambahkan informasi titik akhir repositori paket ke file tingkat proyek Anda. `.npmrc`
   + Tambahkan kredensyal Anda (PAT) ke file tingkat pengguna `.npmrc` Anda.

   Ganti nilai-nilai berikut.
**catatan**  
Jika Anda menyalin dari instruksi konsol, nilai-nilai dalam perintah berikut diperbarui untuk Anda dan tidak perlu diubah.
   + Ganti *username* dengan nama CodeCatalyst pengguna Anda.
   + Ganti *PAT* dengan CodeCatalyst PAT Anda.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   npm set registry=https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/ --location project
   npm set //packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/:_authToken=username:PAT
   ```

   **Untuk npm 6 atau lebih rendah:** Untuk membuat npm selalu meneruskan token auth ke CodeCatalyst, bahkan untuk `GET` permintaan, setel variabel konfigurasi always-auth dengan sebagai berikut. `npm config set`

   ```
   npm set //packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/:always-auth=true --location project
   ```

## Menginstal paket npm dari repositori CodeCatalyst paket
<a name="npm-install"></a>

Setelah Anda menghubungkan npm ke repositori Anda dengan mengikuti langkah-langkah di[Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure), Anda dapat menjalankan `npm` perintah di repositori Anda.

Anda dapat menginstal paket npm yang ada di repositori CodeCatalyst paket Anda atau salah satu repositori hulu dengan perintah. `npm install`

```
npm install lodash
```

## Menginstal paket npm dari npmjs melalui CodeCatalyst
<a name="npm-install-npmjs"></a>

Anda dapat menginstal paket npm dari [npmjs.com](https://www.npmjs.com/) melalui repositori dengan mengonfigurasi CodeCatalyst repositori dengan koneksi upstream ke repositori gateway yang terhubung ke npmjs.com,. **npm-public-registry-gateway** Paket yang diinstal dari npmjs dicerna dan disimpan di repositori gateway, dan repositori paket hilir terjauh.

**Untuk menginstal paket dari npmjs**

1. Jika Anda belum melakukannya, konfigurasikan `npm` dengan repositori CodeCatalyst paket Anda dengan mengikuti langkah-langkah di. [Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure) 

1. Periksa apakah repositori Anda telah menambahkan repositori gateway, **npm-public-registry-gateway**, sebagai koneksi upstream. Anda dapat memeriksa sumber hulu mana yang ditambahkan atau ditambahkan **npm-public-registry-gateway**sebagai sumber hulu dengan mengikuti instruksi [Menambahkan repositori hulu](packages-upstream-repositories-add.md) dan memilih repositori. **npm-public-registry-gateway**

1. Instal paket dengan `npm install` perintah.

   ```
   npm install package_name
   ```

Untuk informasi selengkapnya tentang meminta paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

## Menerbitkan paket npm ke repositori CodeCatalyst paket Anda
<a name="npm-publish"></a>

Setelah selesai[Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure), Anda dapat menjalankan `npm` perintah.

Anda dapat mempublikasikan paket npm ke repositori CodeCatalyst paket dengan perintah. `npm publish`

```
npm publish
```

Untuk selengkapnya tentang cara membuat paket npm, lihat [Membuat Modul Node.js](https://docs.npmjs.com/getting-started/creating-node-modules) di *npm* Docs.

## dukungan perintah npm
<a name="npm-commands"></a>

Bagian berikut merangkum `npm` perintah yang didukung oleh repositori CodeCatalyst paket, selain mencantumkan perintah tertentu yang tidak didukung.

**Topics**
+ [Perintah yang didukung yang berinteraksi dengan repositori paket](#supported-commands-that-interact-with-a-repository)
+ [Perintah sisi klien yang didukung](#supported-client-side-commands)
+ [Perintah tidak didukung](#unsupported-commands)

### Perintah yang didukung yang berinteraksi dengan repositori paket
<a name="supported-commands-that-interact-with-a-repository"></a>

Bagian ini mencantumkan `npm` perintah di mana `npm` klien membuat satu atau lebih permintaan ke registri yang dikonfigurasi (misalnya,`npm config set registry`). Perintah ini telah diverifikasi untuk berfungsi dengan benar ketika dipanggil terhadap repositori CodeCatalyst paket.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [bug](https://docs.npmjs.com/cli/bugs)   |  Menebak lokasi URL pelacak bug paket, dan kemudian mencoba membukanya.  | 
|   [ci](https://docs.npmjs.com/cli/ci)   |  Menginstal proyek dari awal.  | 
|   [mencela](https://docs.npmjs.com/cli/deprecate)   |  Menghentikan penggunaan versi paket.  | 
|   [dist-tag](https://docs.npmjs.com/cli/dist-tag)   |  Memodifikasi tanda distribusi paket.  | 
|   [dokumen](https://docs.npmjs.com/cli/docs)   |  Menebak lokasi URL dokumentasi paket, dan kemudian mencoba membukanya dengan menggunakan parameter `--browser` konfigurasi.  | 
|   [dokter](https://docs.npmjs.com/cli/doctor)   |  Menjalankan serangkaian pemeriksaan untuk memvalidasi bahwa instalasi npm Anda dapat mengelola paket Anda JavaScript .  | 
|   [menginstal](https://docs.npmjs.com/cli/install)   |  Menginstal paket.  | 
|   [install-ci-test](https://docs.npmjs.com/cli/install-ci-test)   |  Menginstal proyek dari awal dan menjalankan pengujian. Alias:`npm cit`. Perintah ini menjalankan`npm ci`, diikuti segera oleh`npm test`.  | 
|   [uji instalasi](https://docs.npmjs.com/cli/install-test)   |  Menginstal paket dan menjalankan tes. Menjalankan`npm install`, diikuti segera oleh`npm test`.  | 
|   [ketinggalan zaman](https://docs.npmjs.com/cli/outdated)   |  Memeriksa registri yang dikonfigurasi untuk menentukan apakah ada paket yang diinstal sudah usang.  | 
|   [ping](https://docs.npmjs.com/cli/ping)   |  Ping registri npm yang dikonfigurasi atau diberikan dan memverifikasi autentikasi.  | 
|   [mempublikasikan](https://docs.npmjs.com/cli/publish)   |  Memublikasikan versi paket ke registri.  | 
|   [perbarui](https://docs.npmjs.com/cli/update)   |  Menebak lokasi URL repositori paket, dan kemudian mencoba membukanya dengan menggunakan parameter konfigurasi. `--browser`  | 
|   [melihat](https://docs.npmjs.com/cli/view)   |  Menampilkan metadata paket. Dapat juga digunakan untuk mencetak properti metadata.  | 

### Perintah sisi klien yang didukung
<a name="supported-client-side-commands"></a>

Perintah ini tidak memerlukan interaksi langsung dengan repositori paket, jadi CodeCatalyst tidak memerlukan apa pun untuk mendukungnya.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [bin (warisan)](https://docs.npmjs.com/cli/v8/commands/npm-bin)   |  Menampilkan `bin` direktori npm.  | 
|   [membangun](https://docs.npmjs.com/cli/v6/commands/npm-build)   |  Membangun paket.  | 
|   [tembolok](https://docs.npmjs.com/cli/cache)   |  Memanipulasi cache paket.  | 
|   [penyelesaian](https://docs.npmjs.com/cli/completion)   |  Memungkinkan penyelesaian tab di semua perintah npm.  | 
|   [konfigurasi](https://docs.npmjs.com/cli/config)   |  Memperbarui isi pengguna dan file `npmrc` global.  | 
|   [dedupe](https://docs.npmjs.com/cli/dedupe)   |  Mencari pohon paket lokal dan mencoba menyederhanakan struktur dengan memindahkan dependensi lebih jauh ke atas pohon di mana mereka dapat dibagikan secara lebih efektif oleh beberapa paket dependen.  | 
|   [sunting](https://docs.npmjs.com/cli/edit)   |  Mengedit paket yang diinstal. Memilih ketergantungan dalam direktori kerja saat ini dan membuka direktori paket di editor default.  | 
|   [jelajahi](https://docs.npmjs.com/cli/explore)   |  Menelusuri paket yang diinstal. Memunculkan subshell di direktori paket terinstal yang ditentukan. Jika perintah ditentukan, maka itu dijalankan di subshell, yang kemudian segera dimatikan.  | 
|   [membantu](https://docs.npmjs.com/cli/help)   |  Mendapat bantuan mengenai npm.  | 
|   [bantuan-pencarian](https://docs.npmjs.com/cli/help-search)   |  Menelusuri dokumentasi bantuan npm.  | 
|   [init](https://docs.npmjs.com/cli/init)   |  Membuat file `package.json`.  | 
|   [tautan](https://docs.npmjs.com/cli/link)   |  Symlink direktori paket.  | 
|   [ls](https://docs.npmjs.com/cli/ls)   |  Daftar paket yang diinstal.  | 
|   [paket](https://docs.npmjs.com/cli/pack)   |  Membuat tarball dari sebuah paket.  | 
|   [prefix](https://docs.npmjs.com/cli/prefix)   |  Menampilkan awalan. Ini adalah direktori induk terdekat untuk berisi `package.json` file, kecuali juga `-g` ditentukan.  | 
|   [memangkas](https://docs.npmjs.com/cli/prune)   |  Menghapus paket yang tidak tercantum pada daftar dependensi paket induk.  | 
|   [membangun kembali](https://docs.npmjs.com/cli/rebuild)   |  Menjalankan perintah `npm build` pada folder yang cocok.  | 
|   [mulai ulang](https://docs.npmjs.com/cli/restart)   |  Menjalankan skrip stop, restart, dan start paket serta pra-skrip dan post-script terkait.  | 
|   [akar](https://docs.npmjs.com/cli/root)   |  Mencetak `node_modules` direktori efektif ke standar.  | 
|   [run-skrip](https://docs.npmjs.com/cli/run-script)   |  Menjalankan skrip paket arbitrer.  | 
|   [shrinkwrap](https://docs.npmjs.com/cli/shrinkwrap)   |  Mengunci versi dependensi untuk publikasi.  | 
|   [copot pemasangan](https://docs.npmjs.com/cli/uninstall)   |  Meng-uninstall paket.  | 

### Perintah tidak didukung
<a name="unsupported-commands"></a>

`npm`Perintah ini tidak didukung oleh repositori CodeCatalyst paket.


****  

| Perintah | Deskripsi | Catatan | 
| --- | --- | --- | 
|   [akses](https://docs.npmjs.com/cli/access)   |  Menetapkan tingkat akses pada paket yang dipublikasikan.  |  CodeCatalyst menggunakan model izin yang berbeda dari repositori npmjs publik.  | 
|   [adduser](https://docs.npmjs.com/cli/adduser)   |  Menambahkan akun pengguna registri  |  CodeCatalyst menggunakan model pengguna yang berbeda dari repositori npmjs publik.  | 
|   [audit](https://docs.npmjs.com/cli/audit)   |  Menjalankan audit keamanan.  |  CodeCatalyst saat ini tidak menjual data kerentanan keamanan.  | 
|   [kait](https://docs.npmjs.com/cli/v9/commands/npm-hook)   |  Mengelola kait npm, termasuk menambahkan, menghapus, mendaftar, dan memperbarui.  |  CodeCatalyst saat ini tidak mendukung mekanisme pemberitahuan perubahan apa pun.  | 
|   [Login](https://docs.npmjs.com/cli-commands/adduser.html)   |  Mengautentikasi pengguna. Ini adalah nama lain untuk `npm adduser`.   |  CodeCatalyst menggunakan model otentikasi yang berbeda dari repositori npmjs publik. Untuk informasi, lihat [Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure).  | 
|   [logout](https://docs.npmjs.com/cli/logout)   |  Keluar dari registri.  |  CodeCatalyst menggunakan model otentikasi yang berbeda dari repositori npmjs publik. Tidak ada cara untuk keluar dari CodeCatalyst repositori, tetapi token otentikasi kedaluwarsa setelah waktu kedaluwarsa yang dapat dikonfigurasi. Durasi token default adalah 12 jam.   | 
|   [pemilik](https://docs.npmjs.com/cli/owner)   |  Mengelola pemilik paket.  |  CodeCatalyst menggunakan model izin yang berbeda dari repositori npmjs publik.  | 
|   [profil](https://docs.npmjs.com/cli/profile)   |  Mengubah pengaturan pada profil registri Anda.  |  CodeCatalyst menggunakan model pengguna yang berbeda dari repositori npmjs publik.  | 
|   [pencarian](https://docs.npmjs.com/cli/search)   |  Mencari registri untuk paket yang cocok dengan istilah pencarian.  |  CodeCatalyst tidak mendukung `search` perintah.  | 
|   [bintang](https://docs.npmjs.com/cli/star)   |  Menandai paket favorit Anda.  |  CodeCatalyst saat ini tidak mendukung mekanisme favorit apa pun.  | 
|   [bintang](https://docs.npmjs.com/cli/stars)   |  Melihat paket yang ditandai sebagai favorit.  |  CodeCatalyst saat ini tidak mendukung mekanisme favorit apa pun.  | 
|   [tim](https://docs.npmjs.com/cli/team)   |  Mengelola tim dan keanggotaan tim.  |  CodeCatalyst menggunakan model keanggotaan pengguna dan grup yang berbeda dari repositori npmjs publik.  | 
|   [t](https://docs.npmjs.com/cli/token)oken   |  Mengelola token autentikasi Anda.  |  CodeCatalyst menggunakan model yang berbeda untuk mendapatkan token otentikasi. Untuk informasi, lihat [Mengkonfigurasi npm dengan CodeCatalyst](#npm-configure).  | 
|   [batalkan publikasi](https://docs.npmjs.com/cli/unpublish)   |  Menghapus paket dari registri.  |  CodeCatalyst tidak mendukung penghapusan versi paket dari repositori dengan menggunakan klien npm. Anda dapat menghapus paket di konsol.  | 
|   [whoami](https://docs.npmjs.com/cli/whoami)   |  Menampilkan nama pengguna npm.  |  CodeCatalyst menggunakan model pengguna yang berbeda dari repositori npmjs publik.  | 

# penanganan tanda npm
<a name="packages-npm-tags"></a>

registri npm mendukung *tanda*, yang merupakan alias string untuk versi paket. Anda dapat menggunakan tag untuk memberikan alias alih-alih menggunakan nomor versi. Misalnya, Anda memiliki proyek dengan beberapa aliran pengembangan dan Anda menggunakan tag yang berbeda untuk setiap aliran (misalnya,,`stable`, `beta``dev`,`canary`). Untuk informasi lebih lanjut, lihat [dist-tag](https://docs.npmjs.com/cli/dist-tag) di *npm* Docs. 

Secara default, npm menggunakan tanda `latest` untuk mengidentifikasi versi paket saat ini. `npm install pkg` (tanpa penentu `@version` atau `@tag`) menginstal tanda terbaru. Biasanya, proyek hanya menggunakan tag terbaru untuk versi rilis stabil. Tanda lain digunakan untuk versi yang tidak stabil atau pra-rilis. 

## Mengedit tag dengan klien npm
<a name="editing-tags-with-the-npm-client"></a>

 Tiga `npm dist-tag` perintah (`add`,`rm`, dan`ls`) berfungsi dengan cara yang sama di repositori CodeCatalyst paket seperti yang berfungsi di registri [npm default](https://registry.npmjs.com/).

## tanda npm dan repositori hulu
<a name="packages-tags-and-upstreams"></a>

Saat `npm` meminta tag untuk paket dan versi paket itu juga ada di repositori upstream, CodeCatalyst gabungkan tag sebelum mengembalikannya ke klien. Misalnya, repositori bernama `R` memiliki repositori upstream bernama. `U` Tabel berikut menunjukkan tag untuk paket bernama `web-helper` yang ada di kedua repositori.


****  

| Repositori | Nama paket | Tanda paket | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *terbaru* (alias untuk versi 1.0.0)  | 
|  U  |  `web-helper`  |   *alfa* (alias untuk versi 1.0.1)  | 

*Dalam hal ini, ketika klien npm mengambil tag untuk `web-helper` paket dari repositori`R`, ia menerima tag *terbaru* dan alpha.* Versi yang ditunjukkan oleh tanda tidak akan berubah.

*Ketika tag yang sama hadir pada paket yang sama di repositori upstream dan lokal, CodeCatalyst gunakan tag yang terakhir diperbarui.* Misalnya, anggap tanda pada *webhelper* telah dimodifikasi agar terlihat seperti berikut ini.


****  

| Repositori | Nama paket | Tanda paket | Terakhir diperbarui | 
| --- | --- | --- | --- | 
|  R  |  `web-helper`  |   *terbaru* (alias untuk versi 1.0.0)  |  1 Januari 2023  | 
|  U  |  `web-helper`  |   *terbaru* (alias untuk versi 1.0.1)  |  1 Juni 2023  | 

*Dalam hal ini, ketika klien npm mengambil tag untuk paket *web-helper* dari repositori`R`, tag *terbaru* akan alias versi 1.0.1 karena diperbarui terakhir.* Ini memudahkan untuk menggunakan versi paket baru di repositori upstream yang belum ada di repositori lokal dengan menjalankannya. `npm update`

# Menggunakan Maven
<a name="packages-maven"></a>

Format repositori Maven digunakan oleh banyak bahasa yang berbeda, termasuk Java, Kotlin, Scala, dan Clojure. Ini didukung oleh berbagai alat pembangun, termasuk Maven, Gradle, Scala SBT, Apache Ivy, dan Leiningen. 

Kami telah menguji dan mengkonfirmasi kompatibilitas dengan CodeCatalyst untuk versi berikut:
+ **Maven** terbaru versi: 3.6.3.
+ Versi **Gradle** terbaru: 6.4.1. Versi 5.5.1 juga telah diuji.

**Topics**
+ [Mengkonfigurasi dan menggunakan Gradle Groovy](packages-maven-gradle.md)
+ [Mengkonfigurasi dan menggunakan mvn](packages-maven-mvn.md)
+ [Menerbitkan paket dengan curl](packages-maven-curl.md)
+ [Menggunakan checksum dan snapshot Maven](packages-maven-checksums-snapshots.md)

# Mengkonfigurasi dan menggunakan Gradle Groovy
<a name="packages-maven-gradle"></a>

Untuk menggunakan Gradle Groovy CodeCatalyst, Anda harus menghubungkan Gradle Groovy ke repositori paket Anda dan menyediakan token akses pribadi (PAT) untuk otentikasi. Anda dapat melihat petunjuk untuk menghubungkan Gradle Groovy ke repositori paket Anda di konsol. CodeCatalyst 

**Contents**
+ [Mengambil dependensi dari CodeCatalyst](#gradle-fetch-dependencies)
+ [Mengambil plugin dari CodeCatalyst](#gradle-fetch-plugins)
+ [Mengambil paket dari repositori paket eksternal melalui CodeCatalyst](#gradle-install-public)
+ [Menerbitkan paket ke CodeCatalyst](#gradle-publish-packages)
+ [Menjalankan build Gradle di IntelliJ IDEA](#gradle-intellij)
  + [Metode 1: Masukkan PAT ke dalam `gradle.properties`](#gradle-intellij-gradle-properties)
  + [Metode 2: Letakkan PAT dalam file terpisah](#gradle-intellij-file)

## Mengambil dependensi dari CodeCatalyst
<a name="gradle-fetch-dependencies"></a>

Petunjuk berikut menjelaskan cara mengonfigurasi Gradle Groovy untuk mengambil dependensi repositori paket Anda. CodeCatalyst 

**Untuk menggunakan Gradle Groovy untuk mengambil dependensi dari repositori paket CodeCatalyst**

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

1. Arahkan ke proyek Anda.

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

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **Gradle Groovy** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi Gradle Groovy. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Perbarui file properti gradle Anda dengan kredensi akses Anda. Ganti *username* dengan CodeCatalyst nama pengguna Anda dan ganti *PAT* dengan token akses CodeCatalyst pribadi Anda. Anda dapat menggunakan nilai apa pun untuk *spaceUsername* dan *spacePassword* selama Anda menggunakan nilai yang sama dalam langkah-langkah berikut.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Untuk mengambil dependensi dari CodeCatalyst dalam build Gradle, salin cuplikan `maven` kode dan tambahkan ke `repositories` bagian dalam file project Anda. `build.gradle` Ganti nilai-nilai berikut. Anda dapat menggunakan nilai apa pun *spaceName* selama Anda menggunakan nilai yang sama dalam langkah-langkah berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   maven {
     name = 'spaceName'
     url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
     credentials(PasswordCredentials)
   }
   ```

1. (Opsional) Untuk menggunakan repositori CodeCatalyst paket sebagai satu-satunya sumber untuk dependensi proyek Anda, hapus bagian lain dalam repositori dari file. `build.gradle` Jika Anda memiliki lebih dari satu repositori, Gradle menelusuri setiap repositori untuk dependensi sesuai urutan pencantumannya.

## Mengambil plugin dari CodeCatalyst
<a name="gradle-fetch-plugins"></a>

Secara default Gradle akan menyelesaikan plugin dari [Portal Plugin Gradle](https://plugins.gradle.org/) publik. Langkah-langkah berikut mengonfigurasi proyek Gradle Anda untuk menyelesaikan plugin dari repositori CodeCatalyst paket Anda.

**Untuk menggunakan Gradle untuk mengambil plugin dari repositori paket CodeCatalyst**

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

1. Arahkan ke proyek Anda.

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

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **Gradle** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi Gradle dengan. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Perbarui file properti gradle Anda dengan kredensi akses Anda. Ganti *username* dengan CodeCatalyst nama pengguna Anda dan ganti *PAT* dengan token akses CodeCatalyst pribadi Anda. Anda dapat menggunakan nilai apa pun untuk *spaceUsername* dan *spacePassword* selama Anda menggunakan nilai yang sama dalam langkah-langkah berikut.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Tambahkan `pluginManagement` blok ke `settings.gradle` file Anda. `pluginManagement`Blok harus muncul sebelum pernyataan lain di`settings.gradle`. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *spaceName* dengan nilai nama yang digunakan pada langkah sebelumnya.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   pluginManagement {
       repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

   Hal ini akan memastikan bahwa Gradle menyelesaikan plugin dari repositori yang ditentukan. Repositori harus memiliki koneksi upstream yang dikonfigurasi ke Gradle Plugin Portal (`gradle-plugins-store`) sehingga plugin Gradle yang umum diperlukan tersedia untuk build. Untuk informasi selengkapnya, lihat [Dokumentasi Gradle](https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories).

## Mengambil paket dari repositori paket eksternal melalui CodeCatalyst
<a name="gradle-install-public"></a>

Anda dapat menginstal paket Maven dari repositori publik melalui repositori dengan mengonfigurasinya dengan koneksi upstream ke gateway yang mewakili CodeCatalyst repositori gateway. Paket yang diinstal dari repositori gateway dicerna dan disimpan di repositori Anda. CodeCatalyst

CodeCatalyst mendukung repositori paket Maven publik berikut.
+ maven-central-gateway
+ google-android-gateway
+ gradle-plugins-gateway
+ gerbang commonsware-

**Untuk menginstal paket dari repositori paket Maven publik**

1. Jika Anda belum melakukannya, konfigurasikan Gradle dengan repositori CodeCatalyst paket Anda dengan mengikuti langkah-langkah di atau. [Mengambil dependensi dari CodeCatalyst](#gradle-fetch-dependencies) [Mengambil plugin dari CodeCatalyst](#gradle-fetch-plugins) 

1. Pastikan repositori Anda telah menambahkan repositori gateway yang ingin Anda instal sebagai koneksi hulu. Anda dapat melakukan ini dengan mengikuti petunjuk [Menambahkan repositori hulu](packages-upstream-repositories-add.md) dan memilih repositori paket publik yang ingin Anda tambahkan sebagai upstream.

Untuk informasi selengkapnya tentang meminta paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

## Menerbitkan paket ke CodeCatalyst
<a name="gradle-publish-packages"></a>

Bagian ini menjelaskan cara mempublikasikan pustaka Java yang dibangun dengan Gradle Groovy ke repositori. CodeCatalyst

**Untuk menggunakan Gradle Groovy untuk memublikasikan paket ke repositori paket CodeCatalyst**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **Gradle Groovy** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi Gradle dengan. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Perbarui file properti gradle Anda dengan kredensi akses Anda. Ganti *username* dengan CodeCatalyst nama pengguna Anda dan ganti *PAT* dengan token akses CodeCatalyst pribadi Anda. Anda dapat menggunakan nilai apa pun untuk *spaceUsername* dan *spacePassword* selama Anda menggunakan nilai yang sama dalam langkah-langkah berikut.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Tambahkan `maven-publish` plugin ke `plugins` bagian `build.gradle` file proyek.

   ```
   plugins {
       id 'java-library'
       id 'maven-publish'
   }
   ```

1. Selanjutnya, tambahkan bagian `publishing` ke file `build.gradle` proyek. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   publishing {
       publications {
           mavenJava(MavenPublication) {
               groupId = 'group-id'
               artifactId = 'artifact-id'
               version = 'version'
               from components.java
           }
       }
       repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

   Plugin `maven-publish` menghasilkan file POM berdasarkan `groupId`, `artifactId`, dan `version` yang ditentukan dalam bagian `publishing`.

1. Setelah perubahan ke `build.gradle` selesai, jalankan perintah berikut untuk membangun proyek dan mengunggah ke repositori.

   ```
   ./gradlew publish
   ```

1. Arahkan ke repositori paket Anda di CodeCatalyst konsol untuk memeriksa apakah paket berhasil dipublikasikan. Anda akan melihat paket dalam daftar **Paket** repositori paket Anda.

Untuk informasi selengkapnya, lihat topik berikut di situs web Gradle:
+  [Membangun Perpustakaan Java](https://guides.gradle.org/building-java-libraries/) 
+  [Menerbitkan proyek sebagai modul](https://docs.gradle.org/current/userguide/publishing_setup.html) 

## Menjalankan build Gradle di IntelliJ IDEA
<a name="gradle-intellij"></a>

Anda dapat menjalankan build Gradle di IntelliJ IDEA yang menarik dependensi dari. CodeCatalyst Untuk mengautentikasi Gradle dengan CodeCatalyst, Anda harus menggunakan token akses pribadi (PAT). Anda dapat menyimpan CodeCatalyst PAT Anda di `gradle.properties` atau file terpisah pilihan Anda.

### Metode 1: Masukkan PAT ke dalam `gradle.properties`
<a name="gradle-intellij-gradle-properties"></a>

Gunakan metode ini jika Anda tidak menggunakan `gradle.properties` file dan dapat menimpa isinya dengan PAT Anda. Jika Anda menggunakan`gradle.properties`, Anda dapat memodifikasi metode ini untuk menambahkan PAT alih-alih menimpa konten file.

**catatan**  
Contoh menunjukkan file `gradle.properties` yang berada di `GRADLE_USER_HOME`.

Pertama, buat PAT jika Anda tidak memilikinya.

**Untuk membuat token akses pribadi (PAT)**

1. Di bilah menu atas, pilih lencana profil Anda, lalu pilih **Pengaturan saya**. 
**Tip**  
Anda juga dapat menemukan profil pengguna Anda dengan membuka halaman anggota untuk proyek atau ruang dan memilih nama Anda dari daftar anggota.

1. Dalam **nama PAT**, masukkan nama deskriptif untuk PAT Anda.

1. Di **Tanggal kedaluwarsa**, tinggalkan tanggal default atau pilih ikon kalender untuk memilih tanggal kustom. Tanggal kedaluwarsa default menjadi satu tahun dari tanggal saat ini.

1. Pilih **Buat**.

   Anda juga dapat membuat token ini ketika Anda memilih Repositori **klon untuk repositori** sumber.

1. Simpan rahasia PAT di lokasi yang aman. 
**penting**  
Rahasia PAT hanya ditampilkan sekali. Anda tidak dapat mengambilnya setelah Anda menutup jendela. 

Selanjutnya, perbarui `build.gradle` file Anda dengan cuplikan berikut:

```
repositories {
    maven {
        name = 'spaceName'
        url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
        credentials(PasswordCredentials)
    }
}
```

### Metode 2: Letakkan PAT dalam file terpisah
<a name="gradle-intellij-file"></a>

Gunakan metode ini jika Anda tidak ingin memodifikasi file `gradle.properties`.

Pertama, buat PAT jika Anda tidak memilikinya.

**Untuk membuat token akses pribadi (PAT)**

1. Di bilah menu atas, pilih lencana profil Anda, lalu pilih **Pengaturan saya**. 
**Tip**  
Anda juga dapat menemukan profil pengguna Anda dengan membuka halaman anggota untuk proyek atau ruang dan memilih nama Anda dari daftar anggota.

1. Dalam **nama PAT**, masukkan nama deskriptif untuk PAT Anda.

1. Di **Tanggal kedaluwarsa**, tinggalkan tanggal default atau pilih ikon kalender untuk memilih tanggal kustom. Tanggal kedaluwarsa default menjadi satu tahun dari tanggal saat ini.

1. Pilih **Buat**.

   Anda juga dapat membuat token ini ketika Anda memilih Repositori **klon untuk repositori** sumber.

1. Simpan rahasia PAT di lokasi yang aman. 
**penting**  
Rahasia PAT hanya ditampilkan sekali. Anda tidak dapat mengambilnya setelah Anda menutup jendela. 

**Untuk menempatkan PAT Anda dalam file terpisah**

1. Perbarui `build.gradle` file Anda dengan cuplikan berikut. Ganti*space\$1name*,*proj\$1name*, dan *repo\$1name* dengan nama CodeCatalyst pengguna, nama spasi, nama proyek, dan nama repositori paket Anda.

   ```
   def props = new Properties()
   file("fileName").withInputStream { props.load(it) }
                     
   repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

1. Tulis PAT Anda ke dalam file yang ditentukan dalam `build.gradle` file Anda:

   ```
   echo "codecatalystArtifactsToken=PAT" > fileName
   ```

# Mengkonfigurasi dan menggunakan mvn
<a name="packages-maven-mvn"></a>

Anda menggunakan `mvn` perintah untuk menjalankan build Maven. Anda harus mengkonfigurasi `mvn` untuk menggunakan repositori paket Anda dan menyediakan token akses pribadi (PAT) untuk otentikasi.

**Contents**
+ [Mengambil dependensi dari CodeCatalyst](#mvn-fetch-dependencies)
+ [Mengambil paket dari repositori paket eksternal melalui CodeCatalyst](#mvn-install-public)
+ [Menerbitkan paket ke CodeCatalyst](#mvn-publish-packages)
+ [Menerbitkan paket pihak ketiga](#publishing-third-party-packages)

## Mengambil dependensi dari CodeCatalyst
<a name="mvn-fetch-dependencies"></a>

Untuk mengonfigurasi `mvn` untuk mengambil dependensi dari CodeCatalyst repositori, Anda harus mengedit file konfigurasi Maven, `settings.xml` dan secara opsional, file Project Model Object (POM) proyek Anda. File POM berisi informasi tentang proyek dan informasi konfigurasi untuk Maven untuk membangun proyek seperti dependensi, direktori build, direktori sumber, direktori sumber pengujian, plugin, dan tujuan.

**Untuk digunakan `mvn` untuk mengambil dependensi dari repositori paket Anda CodeCatalyst**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **mvn** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi`mvn`. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Tambahkan profil yang berisi repositori Anda ke file Anda`settings.xml`. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   <profiles>
     <profile>
       <id>repo_name</id>
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
       <repositories>
           <repository>
             <id>repo_name</id>
             <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
           </repository>
       </repositories>
     </profile>
   </profiles>
   ```

1. Tambahkan server Anda ke daftar server di `settings.xml` file Anda. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.
   + Ganti *username* dengan nama CodeCatalyst pengguna Anda.
   + Ganti *PAT* dengan CodeCatalyst PAT Anda.

   ```
   <servers>
     <server>
       <id>repo_name</id>
       <username>username</username>
       <password>PAT</password>
     </server>
   </servers>
   ```

1. (Opsional) Tetapkan cermin di `settings.xml` file Anda yang menangkap semua koneksi dan merutekkannya ke repositori Anda alih-alih repositori gateway.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   <mirrors>
     <mirror>
       <id>repo_name</id>
       <name>repo_name</name>
       <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
       <mirrorOf>*</mirrorOf>
     </mirror>
   </mirrors>
   ```

**penting**  
Anda dapat menggunakan nilai apa pun dalam elemen `<id>`, tetapi harus sama di elemen `<server>` dan `<repository>`. Hal ini memungkinkan kredensi yang ditentukan untuk dimasukkan dalam permintaan untuk. CodeCatalyst

Setelah membuat perubahan konfigurasi ini, Anda dapat membangun proyek.

```
mvn compile
```

## Mengambil paket dari repositori paket eksternal melalui CodeCatalyst
<a name="mvn-install-public"></a>

Anda dapat menginstal paket Maven dari repositori publik melalui repositori dengan mengonfigurasinya dengan koneksi upstream ke gateway yang mewakili CodeCatalyst repositori gateway. Paket yang diinstal dari repositori gateway dicerna dan disimpan di repositori Anda. CodeCatalyst

Saat ini, CodeCatalyst mendukung repositori paket Maven publik berikut.
+ maven-central-gateway
+ google-android-gateway
+ gradle-plugins-gateway
+ gerbang commonsware-

**Untuk menginstal paket dari repositori paket Maven publik**

1. Jika Anda belum melakukannya, konfigurasikan `mvn` dengan repositori CodeCatalyst paket Anda dengan mengikuti langkah-langkah di. [Mengambil dependensi dari CodeCatalyst](#mvn-fetch-dependencies)

1. Pastikan repositori Anda telah menambahkan repositori gateway yang ingin Anda instal sebagai koneksi hulu. Untuk memeriksa sumber hulu mana yang ditambahkan atau menambahkan repositori gateway sebagai sumber hulu, ikuti instruksi di. [Menambahkan repositori hulu](packages-upstream-repositories-add.md)

Untuk informasi selengkapnya tentang meminta paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

## Menerbitkan paket ke CodeCatalyst
<a name="mvn-publish-packages"></a>

Untuk mempublikasikan paket Maven dengan `mvn` ke CodeCatalyst repositori, Anda juga harus mengedit `~/.m2/settings.xml` dan proyek POM.

**Untuk digunakan `mvn` untuk mempublikasikan paket ke CodeCatalyst repositori paket Anda**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **mvn** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi`mvn`. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Konfigurasikan variabel lingkungan pada mesin lokal Anda dengan PAT Anda. Anda akan menggunakan variabel lingkungan ini dalam `setting.xml` file Anda.

   ```
   export CODECATALYST_ARTIFACTS_TOKEN=your_PAT
   ```

1. Tambahkan bagian `<servers>` ke `settings.xml`dengan referensi ke variabel lingkungan `CodeCatalyst_ARTIFACTS_TOKEN` sehingga Maven meneruskan token dalam permintaan HTTP.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>repo-name</id>
               <username>username</username>
               <password>${env.CodeCatalyst_ARTIFACTS_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Tambahkan bagian `<distributionManagement>` ke `pom.xml`.

   ```
   <project>
   ...
        <distributionManagement>
            <repository>
                <id>repo_name</id>
                <name>repo_name</name>
                <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
            </repository>
        </distributionManagement>
   ...
   </project>
   ```

Setelah membuat perubahan konfigurasi ini, Anda dapat membangun proyek dan memublikasikannya ke repositori yang ditentukan.

```
mvn deploy
```

Anda dapat menavigasi ke repositori paket Anda di CodeCatalyst konsol untuk memeriksa apakah paket berhasil diterbitkan.

## Menerbitkan paket pihak ketiga
<a name="publishing-third-party-packages"></a>

Anda dapat mempublikasikan paket Maven pihak ketiga ke CodeCatalyst repositori dengan. `mvn deploy:deploy-file` Ini dapat membantu pengguna yang ingin mempublikasikan paket dan hanya memiliki file JAR dan tidak memiliki akses ke kode sumber paket atau file POM.

Perintah `mvn deploy:deploy-file` akan menghasilkan file POM berdasarkan informasi yang dikirimkan pada baris perintah.

Pertama, buat PAT jika Anda tidak memilikinya.

**Untuk membuat token akses pribadi (PAT)**

1. Di bilah menu atas, pilih lencana profil Anda, lalu pilih **Pengaturan saya**. 
**Tip**  
Anda juga dapat menemukan profil pengguna Anda dengan membuka halaman anggota untuk proyek atau ruang dan memilih nama Anda dari daftar anggota.

1. Dalam **nama PAT**, masukkan nama deskriptif untuk PAT Anda.

1. Di **Tanggal kedaluwarsa**, tinggalkan tanggal default atau pilih ikon kalender untuk memilih tanggal kustom. Tanggal kedaluwarsa default menjadi satu tahun dari tanggal saat ini.

1. Pilih **Buat**.

   Anda juga dapat membuat token ini ketika Anda memilih Repositori **klon untuk repositori** sumber.

1. Simpan rahasia PAT di lokasi yang aman. 
**penting**  
Rahasia PAT hanya ditampilkan sekali. Anda tidak dapat mengambilnya setelah Anda menutup jendela. 

**Untuk mempublikasikan paket Maven pihak ketiga**

1. Buat file `~/.m2/settings.xml` dengan konten berikut ini:

   ```
   <settings>
       <servers>
           <server>
               <id>repo_name</id>
               <username>username</username>
               <password>PAT}</password>
           </server>
       </servers>
   </settings>
   ```

1. Jalankan perintah `mvn deploy:deploy-file`:

   ```
   mvn deploy:deploy-file -DgroupId=commons-cli          \
   -DartifactId=commons-cli       \
   -Dversion=1.4                  \
   -Dfile=./commons-cli-1.4.jar   \
   -Dpackaging=jar                \
   -DrepositoryId=repo-name      \
   -Durl=https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/
   ```
**catatan**  
Contoh sebelumnya diterbitkan. `commons-cli 1.4` Ubah groupId, artifactID, versi, dan file argumen untuk memublikasikan JAR yang berbeda.

Instruksi ini didasarkan pada contoh dalam [Panduan untuk menyebarkan pihak JARs ke-3 ke repositori jarak jauh](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) dari dokumentasi *Apache* Maven. 

 Untuk informasi selengkapnya, lihat topik tersebut di situs web Apache Maven Project:
+  [Menyiapkan Beberapa Repositori](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Pengaturan Referensi](https://maven.apache.org/settings.html) 
+  [Manajemen Distribusi](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profil](https://maven.apache.org/pom.html#Profiles) 

# Menerbitkan paket dengan curl
<a name="packages-maven-curl"></a>

Bagian ini menunjukkan bagaimana menggunakan klien HTTP `curl` untuk mempublikasikan paket Maven ke repositori CodeCatalyst paket. Menerbitkan paket dengan `curl` dapat berguna jika Anda tidak memiliki atau ingin menginstal klien Maven di lingkungan Anda.

**Untuk menerbitkan paket Maven dengan `curl`**

1. Anda harus menyimpan token akses pribadi (PAT) ke dalam variabel lingkungan untuk mengautentikasi`curl`. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuat satu dan mengkonfigurasi variabel lingkungan.

   1. Buat PAT dengan mengikuti langkah-langkahnya[Berikan akses repositori pengguna dengan token akses pribadi](ipa-tokens-keys.md). Salin PAT untuk menyimpannya dalam variabel lingkungan.

   1. Pada baris perintah mesin lokal Anda, konfigurasikan variabel lingkungan dengan PAT Anda.

      ```
      export CodeCatalyst_ARTIFACTS_TOKEN=your_PAT
      ```

1. Gunakan `curl` perintah berikut untuk mempublikasikan JAR ke CodeCatalyst repositori. Ganti*username*,*space\$1name*,*proj\$1name*, dan *repo\$1name* dengan nama CodeCatalyst pengguna, nama spasi, nama proyek, dan nama repositori paket Anda.

   ```
   curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/1.0/my-app-1.0.jar \
        --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @target/path/to/my-app-1.0.jar
   ```

1. Gunakan `curl` perintah berikut untuk mempublikasikan POM ke CodeCatalyst repositori. Ganti*username*,*space\$1name*,*proj\$1name*, dan *repo\$1name* dengan nama CodeCatalyst pengguna, nama spasi, nama proyek, dan nama repositori paket Anda.

   ```
   curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/1.0/my-app-1.0.pom \
        --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @target/my-app-1.0.pom
   ```

1. Pada titik ini, paket Maven akan berada di CodeCatalyst repositori Anda dengan status. `Unfinished` Untuk dapat menggunakan paket, artefak tersebut harus berstatus `Published`. Anda dapat memindahkan paket dari `Unfinished` ke `Published` dengan mengunggah `maven-metadata.xml` file ke paket Anda, atau mengubah status di CodeCatalyst konsol.

   1.  Opsi 1: Gunakan `curl` perintah berikut untuk menambahkan `maven-metadata.xml` file ke paket Anda. Ganti*username*,*space\$1name*,*proj\$1name*, dan *repo\$1name* dengan nama CodeCatalyst pengguna, nama spasi, nama proyek, dan nama repositori paket Anda. 

      ```
      curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/maven-metadata.xml \
           --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
           --data-binary @target/maven-metadata.xml
      ```

      Berikut ini adalah contoh isi `maven-metadata.xml` file:

      ```
      <metadata modelVersion="1.1.0">
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <versioning>
              <latest>1.0</latest>
              <release>1.0</release>
              <versions>
                  <version>1.0</version>
              </versions>
              <lastUpdated>20200731090423</lastUpdated>
          </versioning>
      </metadata>
      ```

   1.  Opsi 2: Perbarui status paket ke `Published` CodeCatalyst konsol. Untuk informasi tentang cara memperbarui status versi paket, lihat[Memperbarui status versi paket](working-with-packages-update-version-status.md). 

Jika Anda hanya memiliki file JAR paket, Anda dapat mempublikasikan versi paket habis pakai ke CodeCatalyst repositori menggunakan. `mvn` Ini dapat berguna jika Anda tidak memiliki akses ke kode sumber paket atau POM. Lihat [Menerbitkan paket pihak ketiga](packages-maven-mvn.md#publishing-third-party-packages) untuk rincian selengkapnya.

# Menggunakan checksum dan snapshot Maven
<a name="packages-maven-checksums-snapshots"></a>

Bagian berikut menjelaskan cara menggunakan checksum Maven dan snapshot Maven di. CodeCatalyst

## Menggunakan checksum Maven
<a name="maven-checksums"></a>

 Ketika paket Maven diterbitkan ke repositori CodeCatalyst paket, checksum yang terkait dengan setiap *aset* atau file dalam paket digunakan untuk memvalidasi unggahan. Contoh aset adalah file *jar*, *pom*, dan *war*. Untuk setiap aset, paket Maven berisi beberapa file checksum yang menggunakan nama aset dengan ekstensi tambahan, seperti atau. `md5` `sha1` Sebagai contoh, file checksum untuk file bernama `my-maven-package.jar` mungkin `my-maven-package.jar.md5` dan `my-maven-package.jar.sha1`. 

 Setiap paket Maven juga berisi file. `maven-metadata.xml` File ini harus diunggah agar publikasi berhasil. Jika ketidakcocokan checksum terdeteksi selama pengunggahan file paket apa pun, publikasi akan berhenti. Hal ini dapat mencegah `maven-metadata.xml` untuk diunggah. Ketika itu terjadi, status paket Maven diatur ke. `Unfinished` Anda tidak dapat mengunduh aset yang merupakan bagian paket dengan status ini. 

Ingat hal berikut jika terjadi ketidakcocokan checksum ketika Anda memublikasikan paket Maven: 
+  Jika ketidakcocokan checksum terjadi sebelum `maven-metadata.xml` diunggah, status paket tidak diatur ke `Unfinished`. Paket ini tidak terlihat dan asetnya tidak dapat digunakan. Ketika hal ini terjadi, cobalah salah satu dari berikut ini, dan kemudian mencoba untuk mengunduh aset lagi. 
  + Jalankan perintah yang menerbitkan paket Maven lagi. Langkah ini mungkin bekerja jika masalah jaringan merusak file checksum selama pengunduhan. Jika masalah jaringan teratasi saat dicoba lagi, checksum cocok dan unduhan berhasil. 
  +  Jika menerbitkan ulang paket Maven tidak berfungsi, hapus paket dan kemudian publikasikan ulang. 
+  Jika ketidakcocokan checksum terjadi setelah `maven-metadata.xml` diunggah, status paket diatur ke `Published`. Anda dapat menggunakan aset apa pun dari paket, termasuk yang memiliki ketidakcocokan checksum. Saat Anda mengunduh aset, checksum yang CodeCatalyst dihasilkan oleh diunduh dengannya. Jika file yang diunduh dikaitkan dengan ketidakcocokan checksum, file checksum yang diunduh mungkin tidak cocok dengan checksum yang diunggah saat paket dipublikasikan. 

## Menggunakan snapshot Maven
<a name="maven-snapshots"></a>

 *Snapshot* Maven adalah versi khusus dari paket Maven yang mengacu pada kode cabang produksi terbaru. Ini adalah versi pengembangan sebelum versi rilis akhir. Anda dapat mengidentifikasi versi snapshot paket Maven dengan akhiran `SNAPSHOT` yang ditambahkan ke versi paket. Sebagai contoh, snapshot versi `1.1` adalah `1.1-SNAPSHOT`. Untuk informasi selengkapnya, lihat [What is a SNAPSHOT version?](https://maven.apache.org/guides/getting-started/index.html#What_is_a_SNAPSHOT_version) di situs Apache Maven Project. 

 CodeCatalyst mendukung penerbitan dan penggunaan snapshot Maven. Anda dapat mempublikasikan snapshot Maven ke CodeCatalyst repositori atau, jika Anda terhubung langsung, ke repositori upstream. Namun, versi snapshot di repositori paket dan salah satu repositori hulu tidak didukung. Misalnya, jika Anda mengunggah paket Maven dengan versi `1.2-SNAPSHOT` ke repositori paket Anda, CodeCatalyst tidak mendukung pengunggahan paket Maven dengan versi snapshot yang sama ke salah satu repositori hulu. Skenario ini mungkin mengembalikan hasil yang tak terduga. 

 Ketika snapshot Maven dipublikasikan, versi sebelumnya disimpan dalam versi baru yang disebut *build*. Setiap kali snapshot Maven dipublikasikan, versi build baru dibuat. Semua versi snapshot sebelumnya dipertahankan dalam versi build. Ketika snapshot Maven dipublikasikan, statusnya diatur ke `Published` dan status build yang berisi versi sebelumnya diatur ke `Unlisted`. 

 Jika Anda meminta snapshot, versi dengan status `Published` dikembalikan. Ini selalu merupakan versi terbaru snapshot Maven. Anda juga dapat meminta build tertentu dari snapshot. 

Untuk menghapus semua versi build snapshot Maven, gunakan konsol. CodeCatalyst 

# Menggunakan NuGet
<a name="packages-nuget"></a>

Topik-topik ini menjelaskan cara mengkonsumsi dan mempublikasikan `NuGet` paket menggunakan CodeCatalyst.

**catatan**  
CodeCatalyst mendukung [NuGetversi 4.8](https://docs.microsoft.com/en-us/nuget/release-notes/nuget-4.8-rtm) dan lebih tinggi.

**Topics**
+ [Menggunakan CodeCatalyst Visual Studio](packages-nuget-visual-studio.md)
+ [Mengkonfigurasi dan menggunakan nuget atau dotnet CLI](packages-nuget-cli.md)
+ [NuGet nama paket, versi, dan normalisasi nama aset](nuget-name-normalization.md)
+ [NuGet kompatibilitas](packages-nuget-compatibility.md)

# Menggunakan CodeCatalyst Visual Studio
<a name="packages-nuget-visual-studio"></a>

 Anda dapat mengkonsumsi paket CodeCatalyst langsung dari Visual Studio. 

Untuk mengkonfigurasi dan menggunakan NuGet dengan alat CLI seperti `dotnet` atau`nuget`, lihat. [Mengkonfigurasi dan menggunakan nuget atau dotnet CLI](packages-nuget-cli.md)

**Contents**
+ [Mengkonfigurasi Visual Studio dengan CodeCatalyst](#packages-nuget-vs-configure)
  + [Windows](#packages-nuget-vs-configure-windows)
  + [macOS](#packages-nuget-vs-configure-mac)

## Mengkonfigurasi Visual Studio dengan CodeCatalyst
<a name="packages-nuget-vs-configure"></a>

### Windows
<a name="packages-nuget-vs-configure-windows"></a>

**Untuk mengkonfigurasi Visual Studio dengan CodeCatalyst**

1. Token akses pribadi (PAT) diperlukan untuk mengautentikasi dengan CodeCatalyst. Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, ikuti instruksi [Berikan akses repositori pengguna dengan token akses pribadi](ipa-tokens-keys.md) untuk membuatnya.

1. Gunakan `nuget` atau `dotnet` untuk mengkonfigurasi repositori paket dan kredensialnya.

------
#### [ dotnet ]

   **Pengguna Linux dan macOS:** Karena enkripsi tidak didukung pada platform non-Windows, Anda harus menambahkan `--store-password-in-clear-text` bendera ke perintah berikut. Perhatikan bahwa ini akan menyimpan kata sandi Anda sebagai teks biasa di file konfigurasi Anda.

   ```
   dotnet nuget add source https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/v3/index.json --name repo_name --password PAT --username user_name
   ```

------
#### [ nuget ]

   ```
   nuget sources add -name repo_name -Source https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/v3/index.json -password PAT --username user_name
   ```

------

   Contoh output:

   ```
   Package source with Name: repo_name added successfully.
   ```

1. Konfigurasikan Visual Studio untuk menggunakan sumber paket baru Anda. Di Visual Studio, pilih **Tools**, lalu pilih **Options**.

1. Di menu **Options**, perluas bagian **NuGet Package Manager** dan pilih **Package Sources**.

1. Dalam daftar **Sumber paket yang tersedia**, pastikan *repo\$1name* sumber Anda diaktifkan. **Jika Anda telah mengonfigurasi repositori paket Anda dengan koneksi upstream ke NuGet Galeri, nonaktifkan sumber nuget.org.**

### macOS
<a name="packages-nuget-vs-configure-mac"></a>

**Untuk mengkonfigurasi Visual Studio dengan CodeCatalyst**

1. Token akses pribadi (PAT) diperlukan untuk mengautentikasi dengan CodeCatalyst. Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, ikuti instruksi [Berikan akses repositori pengguna dengan token akses pribadi](ipa-tokens-keys.md) untuk membuatnya.

1. Pilih **Preferensi** dari bilah menu.

1. Di **NuGet**bagian ini, pilih **Sumber**.

1. Pilih **Tambah** dan tambahkan informasi repositori Anda.

   1. Untuk **Nama**, masukkan nama repositori CodeCatalyst paket Anda.

   1. Untuk **Lokasi**, masukkan titik akhir repositori CodeCatalyst paket Anda. Cuplikan berikut menunjukkan contoh titik akhir. Ganti*space-name*,*proj-name*, dan *repo-name* dengan nama CodeCatalyst spasi, nama proyek, dan nama repositori Anda.

      ```
      https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/
      ```

   1. Untuk **Nama Pengguna**, masukkan nilai yang valid.

   1. Untuk **Kata Sandi**, masukkan PAT Anda.

1. Pilih **Tambahkan sumber**.

1. **Jika Anda telah mengonfigurasi repositori paket Anda dengan koneksi upstream ke NuGet Galeri, nonaktifkan sumber nuget.org.**

Setelah konfigurasi, Visual Studio dapat menggunakan paket dari CodeCatalyst repositori Anda, repositori hulu, atau [NuGetdari.org](https://www.nuget.org/) jika Anda mengonfigurasinya sebagai sumber upstream. Untuk informasi selengkapnya tentang browsing dan menginstal NuGet paket di Visual Studio, lihat [Menginstal dan mengelola paket di Visual Studio menggunakan NuGet Package Manager](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio) dalam *NuGet dokumentasi*.

# Mengkonfigurasi dan menggunakan nuget atau dotnet CLI
<a name="packages-nuget-cli"></a>

Anda dapat menggunakan alat CLI seperti `NuGet` dan `dotnet` untuk mempublikasikan dan mengkonsumsi paket dari. CodeCatalyst Dokumen ini memberikan informasi tentang mengonfigurasi alat CLI dan menggunakannya untuk memublikasikan atau menggunakan paket.

**Contents**
+ [Mengkonfigurasi dengan NuGet CodeCatalyst](#nuget-configure-cli)
+ [Mengkonsumsi NuGet paket dari CodeCatalyst repositori](#nuget-consume-cli)
+ [Mengkonsumsi NuGet paket dari NuGet .org melalui CodeCatalyst](#nuget-consume-nuget-gallery)
+ [Menerbitkan NuGet paket ke CodeCatalyst](#nuget-publish-cli)

## Mengkonfigurasi dengan NuGet CodeCatalyst
<a name="nuget-configure-cli"></a>

Untuk mengonfigurasi NuGet dengan CodeCatalyst, tambahkan titik akhir repositori dan token akses pribadi ke file NuGet konfigurasi Anda untuk mengizinkan `nuget` atau terhubung `dotnet` ke repositori paket Anda CodeCatalyst .

**Untuk mengkonfigurasi NuGet dengan CodeCatalyst repositori paket Anda**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Dalam kotak dialog **Connect to repository**, pilih **NuGet**atau **dotnet** dari daftar klien manajer paket. 

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi NuGet . CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. `dotnet`Konfigurasikan `nuget` atau gunakan NuGet titik akhir dan PAT repositori Anda. CodeCatalyst Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *username* dengan nama CodeCatalyst pengguna Anda.
   + Ganti *PAT* dengan CodeCatalyst PAT Anda.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   1. Untuk`nuget`, gunakan `nuget sources add` perintah.

      ```
      nuget sources add -name "repo_name" -Source "https://packages.region.codecatalyst.aws/nuget/space_name/proj_name/repo_name/v3/index.json" -username "username" -password "PAT"
      ```

   1. Untuk`dotnet`, gunakan `dotnet nuget add source` perintah.

      **Pengguna Linux dan macOS**: Karena enkripsi tidak didukung pada platform non-Windows, Anda harus menambahkan `--store-password-in-clear-text` bendera ke perintah berikut. Perhatikan bahwa ini akan menyimpan kata sandi Anda sebagai teks biasa di file konfigurasi Anda.

      ```
      dotnet nuget add source "https://packages.region.codecatalyst.aws/nuget/space_name/proj_name/repo_name/v3/index.json" -n "proj_name/repo_name" -u "username" -p "PAT" --store-password-in-clear-text
      ```

Setelah Anda mengonfigurasi NuGet CodeCatalyst, Anda dapat [menggunakan NuGet paket](#nuget-consume-cli) yang disimpan di repositori Anda atau salah satu CodeCatalyst repositori hulu dan [mempublikasikan NuGet ](#nuget-publish-cli) paket ke repositori Anda. CodeCatalyst 

## Mengkonsumsi NuGet paket dari CodeCatalyst repositori
<a name="nuget-consume-cli"></a>

Setelah Anda [mengonfigurasi NuGet CodeCatalyst](#nuget-configure-cli), Anda dapat menggunakan NuGet paket yang disimpan di repositori Anda atau salah satu CodeCatalyst repositori hulu.

Untuk menggunakan versi paket dari repositori atau salah satu CodeCatalyst repositori hulu dengan nuget atau dotnet, jalankan perintah berikut. Ganti *packageName* dengan nama paket yang ingin Anda konsumsi dan *packageSourceName* dengan nama sumber untuk repositori CodeCatalyst paket Anda di file NuGet konfigurasi Anda, yang seharusnya menjadi nama repositori.

**Untuk menginstal paket dengan `dotnet`**

```
dotnet add packageName --source packageSourceName
```

**Untuk menginstal paket dengan `nuget`**

```
nuget install packageName --source packageSourceName
```

*Untuk informasi selengkapnya, lihat [Mengelola paket menggunakan CLI nuget](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-nuget-cli) [atau Menginstal dan mengelola paket menggunakan CLI dotnet di Dokumentasi Microsoft](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-dotnet-cli).*

## Mengkonsumsi NuGet paket dari NuGet .org melalui CodeCatalyst
<a name="nuget-consume-nuget-gallery"></a>

**Anda dapat menggunakan NuGet paket dari [NuGet.org](https://www.nuget.org/) melalui CodeCatalyst repositori dengan mengonfigurasi repositori dengan koneksi upstream ke .org. NuGet** Paket yang dikonsumsi dari **NuGet.org** dicerna dan disimpan di CodeCatalyst repositori Anda.

**Untuk mengkonsumsi paket dari NuGet .org**

1. Jika Anda belum melakukannya, konfigurasikan manajer NuGet paket Anda dengan repositori CodeCatalyst paket Anda dengan mengikuti langkah-langkah di. [Mengkonfigurasi dengan NuGet CodeCatalyst](#nuget-configure-cli) 

1. Pastikan repositori Anda telah menambahkan **NuGet.org sebagai koneksi** upstream. **Anda dapat memeriksa sumber upstream mana yang ditambahkan atau menambahkan **Nuget.org** sebagai sumber upstream dengan mengikuti petunjuk [Menambahkan repositori hulu](packages-upstream-repositories-add.md) dan memilih repositori toko. NuGet **

## Menerbitkan NuGet paket ke CodeCatalyst
<a name="nuget-publish-cli"></a>

Setelah Anda [mengonfigurasi NuGet CodeCatalyst](#nuget-configure-cli), Anda dapat menggunakan `nuget` atau `dotnet` mempublikasikan versi paket ke CodeCatalyst repositori.

Untuk mendorong versi paket ke CodeCatalyst repositori, jalankan perintah berikut dengan path lengkap ke `.nupkg` file Anda dan nama sumber untuk CodeCatalyst repositori Anda di file konfigurasi Anda. NuGet 

**Untuk mempublikasikan paket dengan `dotnet`**

```
dotnet nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
```

**Untuk mempublikasikan paket dengan `nuget`**

```
nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
```

# NuGet nama paket, versi, dan normalisasi nama aset
<a name="nuget-name-normalization"></a>

CodeCatalyst menormalkan nama paket dan aset serta versi paket sebelum menyimpannya, yang berarti nama atau versi CodeCatalyst mungkin berbeda dari yang disediakan saat paket atau aset diterbitkan.

**Normalisasi nama paket:** CodeCatalyst menormalkan nama NuGet paket dengan mengonversi semua huruf menjadi huruf kecil.

**Normalisasi versi Package:** CodeCatalyst menormalkan versi NuGet paket menggunakan pola yang sama seperti. NuGet Informasi berikut berasal dari [nomor versi Normalisasi](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#normalized-version-numbers) dari NuGet dokumentasi. 
+ Nol terkemuka dihapus dari nomor versi:
  + `1.00`diperlakukan sebagai `1.0`
  + `1.01.1`diperlakukan sebagai `1.1.1`
  + `1.00.0.1`diperlakukan sebagai `1.0.0.1`
+ Nol di bagian keempat dari nomor versi akan dihilangkan:
  + `1.0.0.0`diperlakukan sebagai `1.0.0`
  + `1.0.01.0`diperlakukan sebagai `1.0.1`
+ SemVer 2.0.0 build metadata dihapus:
  + `1.0.7+r3456`diperlakukan sebagai `1.0.7`

**Normalisasi nama aset Package:** CodeCatalyst membangun nama aset NuGet paket dari nama paket dan versi paket yang dinormalisasi.

# NuGet kompatibilitas
<a name="packages-nuget-compatibility"></a>

 Panduan ini berisi informasi CodeCatalyst tentang kompatibilitas dengan berbagai NuGet alat dan versi. 

**Topics**
+ [NuGet Kompatibilitas umum](#nuget-version-support)
+ [NuGet dukungan baris perintah](#nuget-command-line-support)

## NuGet Kompatibilitas umum
<a name="nuget-version-support"></a>

CodeCatalyst mendukung NuGet 4.8 dan lebih tinggi.

CodeCatalyst hanya mendukung V3 dari protokol NuGet HTTP. Ini berarti bahwa beberapa perintah CLI yang mengandalkan V2 protokol tidak didukung. Lihat [dukungan perintah nuget](#nuget-command-support) bagian berikut untuk informasi lebih lanjut.

CodeCatalyst tidak mendukung PowerShellGet 2.x.

## NuGet dukungan baris perintah
<a name="nuget-command-line-support"></a>

CodeCatalyst mendukung alat CLI NuGet (`nuget`) dan .NET Core (`dotnet`).

### dukungan perintah nuget
<a name="nuget-command-support"></a>

Karena CodeCatalyst hanya mendukung protokol HTTP V3, perintah berikut tidak akan berfungsi saat digunakan terhadap CodeCatalyst sumber daya: NuGet
+ `list`: Perintah `nuget list` menampilkan daftar paket dari sumber tertentu. Untuk mendapatkan daftar paket dalam repositori CodeCatalyst paket, arahkan ke repositori di konsol. CodeCatalyst 

# Menggunakan Python
<a name="packages-python"></a>

Topik-topik ini menjelaskan cara menggunakan`pip`, manajer paket Python, dan`twine`, utilitas penerbitan paket Python, dengan. CodeCatalyst

**Topics**
+ [Mengkonfigurasi pip dan menginstal paket Python](packages-python-pip.md)
+ [Mengkonfigurasi Twine dan menerbitkan paket Python](packages-python-twine.md)
+ [Normalisasi nama paket Python](python-name-normalization.md)
+ [Kompatibilitas Python](packages-python-compatibility.md)

# Mengkonfigurasi pip dan menginstal paket Python
<a name="packages-python-pip"></a>

Untuk menggunakannya `pip` CodeCatalyst, Anda harus terhubung `pip` ke repositori paket Anda dan memberikan token akses pribadi untuk otentikasi. Anda dapat melihat instruksi untuk menghubungkan `pip` ke repositori paket Anda di konsol. CodeCatalyst Setelah Anda mengautentikasi dan `pip` terhubung CodeCatalyst, Anda dapat menjalankan `pip` perintah.

**Contents**
+ [Menginstal paket Python dari CodeCatalyst dengan pip](#pip-install)
+ [Mengkonsumsi paket Python dari PyPI melalui CodeCatalyst](#pip-install-pypi)
+ [dukungan perintah pip](#pip-command-support)
  + [Perintah yang didukung yang berinteraksi dengan repositori](#supported-pip-commands-that-interact-with-a-repository)
  + [Perintah sisi klien yang didukung](#supported-pip-client-side-commands)

## Menginstal paket Python dari CodeCatalyst dengan pip
<a name="pip-install"></a>

Petunjuk berikut menjelaskan cara mengkonfigurasi `pip` untuk menginstal paket Python dari repositori CodeCatalyst paket Anda atau salah satu repositori hulu.

**Untuk mengkonfigurasi dan menggunakan `pip` untuk menginstal paket Python dari repositori paket Anda CodeCatalyst**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **pip** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi pip dengan. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Gunakan `pip config` perintah untuk mengatur URL CodeCatalyst registri dan kredensialnya. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
   + Ganti *username* dengan nama CodeCatalyst pengguna Anda.
   + Ganti *PAT* dengan CodeCatalyst PAT Anda.
   + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
   + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
   + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

   ```
   pip config set global.index-url https://username:PAT@https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/simple/
   ```

1. Dengan asumsi bahwa sebuah paket ada dalam repositori Anda atau salah satu repositori hulu, Anda dapat menginstalnya dengan `pip install`. Misalnya, gunakan perintah berikut untuk menginstal paket `requests`.

   ```
   pip install requests
   ```

   Gunakan `-i` opsi untuk kembali sementara untuk menginstal paket dari [https://pypi.org alih-alih repositori](https://pypi.org) CodeCatalyst paket Anda.

   ```
   pip install -i https://pypi.org/simple requests
   ```

## Mengkonsumsi paket Python dari PyPI melalui CodeCatalyst
<a name="pip-install-pypi"></a>

**Anda dapat menggunakan paket Python dari [Indeks Paket Python (PyPI)](https://www.pypi.org/) melalui repositori dengan mengonfigurasi CodeCatalyst repositori dengan koneksi upstream ke PyPI.** Paket yang dikonsumsi dari **PyPI** dicerna dan disimpan di repositori Anda. CodeCatalyst 

**Untuk mengkonsumsi paket dari PyPI**

1. Jika Anda belum melakukannya, konfigurasikan pip dengan repositori CodeCatalyst paket Anda dengan mengikuti langkah-langkah di. [Menginstal paket Python dari CodeCatalyst dengan pip](#pip-install) 

1. Pastikan repositori Anda telah menambahkan **PyPI** sebagai sumber upstream. Anda dapat memeriksa sumber upstream mana yang ditambahkan atau menambahkan **PyPI** sebagai sumber upstream dengan mengikuti instruksi dan memilih repositori [Menambahkan repositori hulu](packages-upstream-repositories-add.md) penyimpanan **PyPI**.

Untuk informasi selengkapnya tentang meminta paket dari repositori upstream, lihat. [Meminta versi paket dengan repositori hulu](packages-upstream-repositories-request.md)

## dukungan perintah pip
<a name="pip-command-support"></a>

Bagian berikut merangkum perintah pip yang didukung, oleh CodeCatalyst repositori, selain perintah tertentu yang tidak didukung.

**Topics**
+ [Perintah yang didukung yang berinteraksi dengan repositori](#supported-pip-commands-that-interact-with-a-repository)
+ [Perintah sisi klien yang didukung](#supported-pip-client-side-commands)

### Perintah yang didukung yang berinteraksi dengan repositori
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

Bagian ini berisi daftar `pip` tempat klien `pip` membuat satu atau beberapa permintaan ke registri yang telah dikonfigurasi. Perintah-perintah ini telah diverifikasi untuk berfungsi dengan benar ketika dipanggil terhadap repositori CodeCatalyst paket.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [menginstal](https://pip.pypa.io/en/stable/reference/pip_install/)   |  Menginstal paket.  | 
|   [Unduh](https://pip.pypa.io/en/stable/reference/pip_download/)   |  Mengunduh paket.  | 

CodeCatalyst tidak mengimplementasikan`pip search`. [Jika Anda telah mengonfigurasi `pip` dengan repositori CodeCatalyst paket, menjalankan `pip search` akan mencari dan menampilkan paket dari PyPI.](https://pypi.org/)

### Perintah sisi klien yang didukung
<a name="supported-pip-client-side-commands"></a>

Perintah ini tidak memerlukan interaksi langsung dengan repositori, jadi CodeCatalyst tidak perlu melakukan apa pun untuk mendukungnya.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [copot pemasangan](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  Meng-uninstall paket.  | 
|   [membekukan](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  Output paket terinstal dalam format persyaratan.  | 
|   [daftar](https://pip.pypa.io/en/stable/reference/pip_list/)   |  Daftar paket terinstal.  | 
|   [menunjukkan](https://pip.pypa.io/en/stable/reference/pip_show/)   |  Menampilkan informasi tentang paket terinstal.  | 
|   [periksa](https://pip.pypa.io/en/stable/reference/pip_check/)   |  Verifikasi bahwa paket yang diinstal memiliki dependensi yang kompatibel.  | 
|   [konfigurasi](https://pip.pypa.io/en/stable/reference/pip_config/)   |  Mengelola konfigurasi lokal dan global.  | 
|   [roda](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  Membangun wheel dari kebutuhan Anda.  | 
|   [hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  Menghitung hash dari arsip paket.  | 
|   [penyelesaian](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  Membantu penyelesaian perintah.  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  Menampilkan informasi yang berguna untuk debugging.  | 
|  help  |  Menampilkan bantuan untuk perintah.  | 

# Mengkonfigurasi Twine dan menerbitkan paket Python
<a name="packages-python-twine"></a>

Untuk menggunakannya `twine` CodeCatalyst, Anda harus terhubung `twine` ke repositori paket Anda dan memberikan token akses pribadi untuk otentikasi. Anda dapat melihat instruksi untuk menghubungkan `twine` ke repositori paket Anda di konsol. CodeCatalyst Setelah Anda mengautentikasi dan `twine` terhubung CodeCatalyst, Anda dapat menjalankan `twine` perintah.

## Menerbitkan paket CodeCatalyst dengan Twine
<a name="packages-twine-publish"></a>

Petunjuk berikut menjelaskan cara mengautentikasi dan menghubungkan `twine` ke repositori CodeCatalyst paket Anda.

**Untuk mengkonfigurasi dan menggunakan `twine` untuk mempublikasikan paket ke CodeCatalyst repositori paket Anda**

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

1. Pada halaman ikhtisar untuk proyek Anda, pilih **Paket**.

1. Pilih repositori paket Anda dari daftar repositori paket.

1. Pilih **Connect to repository**.

1. Di kotak dialog **Connect to repository**, pilih **Twine** dari daftar klien manajer paket.

1. Anda akan memerlukan token akses pribadi (PAT) untuk mengautentikasi benang. CodeCatalyst Jika Anda sudah memilikinya, Anda dapat menggunakannya. Jika tidak, Anda dapat membuatnya di sini.

   1. Pilih **Buat token**.

   1. Pilih **Salin** untuk menyalin PAT Anda.
**Awas**  
Anda tidak akan dapat melihat atau menyalin PAT Anda lagi setelah Anda menutup kotak dialog.

1. Anda dapat mengkonfigurasi benang dengan `.pypirc` file, atau dengan variabel lingkungan.

   1. **Untuk mengkonfigurasi dengan `.pypirc` file.**

      Buka `~/.pypirc` di editor pilihan Anda.

      Tambahkan server indeks untuk CodeCatalyst, termasuk repositori, nama pengguna, dan PAT yang Anda buat dan salin di langkah sebelumnya. Ganti nilai-nilai berikut.
**catatan**  
Jika menyalin dari instruksi konsol, nilai berikut harus diperbarui untuk Anda dan tidak boleh diubah.
      + Ganti *username* dengan nama CodeCatalyst pengguna Anda.
      + Ganti *PAT* dengan CodeCatalyst PAT Anda.
      + Ganti *space\$1name* dengan nama CodeCatalyst spasi Anda.
      + Ganti *proj\$1name* dengan nama CodeCatalyst proyek Anda.
      + Ganti *repo\$1name* dengan nama repositori CodeCatalyst paket Anda.

      ```
      [distutils]
      index-servers = proj-name/repo-name
      
      [proj-name/repo-name]
      repository = https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/
      password = PAT
      username = username
      ```

   1. **Untuk mengkonfigurasi dengan variabel lingkungan.**

      Mengatur variabel lingkungan berikut. Dalam `TWINE_REPOSITORY_URL` nilai, perbarui*space\$1name*,*proj\$1name*, dan *repo\$1name* dengan nama CodeCatalyst ruang, proyek, dan repositori paket Anda.

      ```
      export TWINE_USERNAME=username
      ```

      ```
      export TWINE_PASSWORD=PAT
      ```

      ```
      export TWINE_REPOSITORY_URL="https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/"
      ```

1. Publikasikan distribusi Python dengan perintah. `twine upload`

# Normalisasi nama paket Python
<a name="python-name-normalization"></a>

CodeCatalyst menormalkan nama paket sebelum menyimpannya, yang berarti nama paket CodeCatalyst mungkin berbeda dari nama yang diberikan saat paket diterbitkan.

Untuk paket Python, saat melakukan normalisasi nama paket diberi huruf kecil dan semua instance karakter`.`,`-`, dan `_` diganti dengan satu karakter. `-` Jadi nama paket `pigeon_cli` dan `pigeon.cli` dinormalisasi dan disimpan sebagai`pigeon-cli`. Nama yang tidak dinormalisasi dapat digunakan oleh pip dan benang. Untuk informasi selengkapnya tentang normalisasi nama paket Python, lihat [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names) dalam dokumentasi Python.

# Kompatibilitas Python
<a name="packages-python-compatibility"></a>

 Meskipun CodeCatalyst tidak mendukung `/simple/` API, itu mendukung operasi `Legacy` API. CodeCatalyst tidak mendukung operasi PyPI `XML-RPC` atau `JSON` API. 

Untuk informasi lebih lanjut, lihat berikut ini pada repositori Python Packaging Authority. GitHub
+ [API Legacy](https://warehouse.pypa.io/api-reference/legacy.html)
+ [XML-RPC API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [API JSON](https://docs.pypi.org/api/json/)

# Kuota untuk paket
<a name="packages-quotas"></a>

Tabel berikut menjelaskan kuota dan batas untuk paket di Amazon CodeCatalyst. Untuk informasi selengkapnya tentang kuota di Amazon CodeCatalyst, lihat[Kuota untuk CodeCatalyst](quotas.md).


| Sumber daya | Kuota bawaan | 
| --- | --- | 
| Package repositori | Maksimal 1000 per ruang. | 
| Repositori hulu langsung |  Maksimal 10 per repositori paket.  | 
| Repositori paket upstream dicari |  Maksimal 25 repositori upstream dicari per versi paket yang diminta.  | 
| Ukuran file aset Package |  Maksimal 5GB per paket aset.  | 
|  Aset paket  |  Maksimal 150 per versi paket.  | 