Bagikan melalui


Grafik paket di Azure Artifacts

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Saat merilis paket, sangat penting untuk memastikan bahwa semua dependensi paket tersebut tersedia di umpan Anda dengan mengkonsumsinya dari sumber hulu. Setelah Anda menggunakan paket dari sumber upstream, salinan disimpan ke umpan Anda. Ini memastikan bahwa meskipun sumber hulu menjadi tidak dapat diakses, salinan Anda akan terus tersedia untuk Anda dan konsumen umpan Anda.

Cara upstream membangun set paket yang tersedia

Karena umpan Azure Artifacts dapat memiliki umpan lain sebagai hulu, ada potensi untuk membuat siklus sumber hulu, di mana umpan A upstram untuk memberi umpan B, yang upstream untuk memberi umpan C, dan akhirnya, mengumpankan C upstram kembali ke umpan A. Siklus seperti itu, jika tidak dikelola dengan benar, dapat menyebabkan masalah dengan permintaan paket, membuat perulangan tak terbatas di mana pengguna meminta paket dari umpan A, lalu Permintaan A dari B, lalu permintaan B dari C, dan akhirnya, permintaan C kembali ke A, membentuk perulangan.

Sumber hulu dirancang untuk mencegah situasi tersebut. Saat umpan mencari paket dari sumber hulunya, umpan menerima paket dalam tampilan yang dikonfigurasi untuk sumber hulu tersebut. Ini berarti bahwa umpan kueri A tidak memicu kueri transitif untuk memberi umpan C (A -> B -> C) karena tampilan bersifat baca-saja. Akibatnya, umpan A akan memiliki akses ke paket apa pun dari C yang sebelumnya telah disimpan ke B oleh pengguna, tetapi bukan set lengkap paket yang tersedia di C.

Ini menempatkan tanggung jawab pada umpan B untuk memastikan bahwa paket lokalnya mewakili grafik dependensi lengkap. Dengan demikian, pengguna yang menggunakan paket B melalui sumber hulu dari umpan lain dapat berhasil menyelesaikan grafik dan menginstal paket B yang mereka inginkan tanpa mengalami masalah.

Contoh: membuat set paket yang tersedia

Mari kita pertimbangkan tiga umpan: Fabrikam, Contoso, dan AdventureWorks. Dalam ilustrasi ini, kami akan memeriksa paket yang tersedia ke umpan Fabrikam saat kami memperkenalkan sumber hulu.

Awalnya, Fabrikam tidak memiliki sumber hulu, memungkinkan pengguna yang terhubung ke Fabrikam hanya menginstal versi 1.0.0 dan 2.0.0 dari paket Widget. Demikian pula, Contoso tidak memiliki sumber hulu, membatasi pengguna yang terhubung ke Contoso untuk hanya menginstal versi 1.0.0 dan 3.0.0 dari paket Gizmos. Hal yang sama berlaku untuk umpan AdventureWorks, di mana pengguna yang terhubung hanya dapat menginstal paket Things versi 1.0.0 dan 2.0.0 atau versi 1.0.0.

Ilustrasi yang menunjukkan tiga umpan berbeda tanpa sumber hulu.

Sekarang, mari kita jelajahi skenario di mana Contoso menambahkan AdventureWorks sebagai sumber hulu. Saat pengguna terhubung ke Contoso, mereka mendapatkan akses ke berbagai paket yang lebih luas. Mereka dapat menginstal versi Gizmos, Gadget, atau Things apa pun. Misalnya, jika pengguna menginstal Gadgets@2.0.0, versi paket khusus ini disimpan ke Contoso dengan tautan kembali ke AdventureWorks.

Ilustrasi Contoso menambahkan AdventureWorks sebagai sumber hulu.

Sekarang, mari kita pertimbangkan situasi di mana umpan Fabrikam menambahkan Contoso sebagai sumber hulu. Pengguna yang terhubung ke Fabrikam dapat menginstal versi Widget apa pun, versi Gizmos apa pun, tetapi HANYA versi Gadget tersimpan (2.0.0).

Ilustrasi Fabrikam menambahkan Contoso sebagai sumber hulu.

Pengguna tidak akan dapat menginstal Gadget versi 1.0.0 atau versi Things apa pun, karena versi paket tersebut belum disimpan ke Contoso oleh pengguna Contoso.

Ilustrasi paket yang tersedia untuk pengguna Fabrikam.