Sdílet prostřednictvím


Použití balíčků z Crates.io

Azure DevOps Services | Azure DevOps Server 2022

Upstreamové zdroje Azure Artifacts umožňují vývojářům využívat balíčky z veřejných registrů, jako jsou Crates.io a nuget.org. Tento článek vás provede nastavením projektu a použitím příkazového řádku ke zpracování Crates z Crates.io.

Tento článek vás provede následujícími postupy:

  • Vytvoření informačního kanálu Azure Artifacts
  • Připojení k informačnímu kanálu
  • Spotřebovávat bedny z upstreamu

Požadavky

Vytvoření informačního kanálu

Azure Artifacts doporučuje mít vyhrazený kanál pro využívání krabic z crates.io a samostatného informačního kanálu výhradně pro publikování interních krabic.

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Artefakty a pak vyberte Vytvořit informační kanál.

  3. Zadejte název informačního kanálu, definujte jeho viditelnost a pak vyberte obor. Nezapomeňte zaškrtnout políčko Nadřazené zdroje a zahrnout balíčky z veřejných registrů.

  4. Až budete hotovi, vyberte Vytvořit .

    Snímek obrazovky znázorňující, jak vytvořit informační kanál pro upstream nákladu

Připojení k informačnímu kanálu

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Artefakty a pak v rozevírací nabídce vyberte svůj informační kanál.

  3. Vyberte Připojit k informačnímu kanálu a pak v levém navigačním podokně vyberte Cargo .

  4. Pokud používáte Cargo s Azure Artifacts poprvé, ujistěte se, že jste nainstalovali rustup.

  5. Do souboru .cargo/config.toml ve zdrojovém úložišti přidejte zadaný fragment kódu v části Nastavení projektu:

    • Informační kanál s oborem projektu:
    [registries]
    <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
    
    [source.crates-io]
    replace-with = "<FEED_NAME>"
    
    • Informační kanál s oborem organizace:
    [registries]
    <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
    
    [source.crates-io]
    replace-with = "<FEED_NAME>"
    

Konfigurace zprostředkovatele přihlašovacích údajů

Pokud chcete použít Cargo s Azure Artifacts, musíte nastavit zprostředkovatele přihlašovacích údajů. Za předpokladu, že pro aktuálního uživatele nakonfigurujete výchozí pomocnou rutinu přihlašovacích údajů:

Do souboru %USERPROFILE%.cargo\config.toml vložte následující fragment kódu:

[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]

Přihlášení k registru

  1. Vytvořte osobní přístupový token s rozsahy čtení a zápisu balíčku>pro ověření v informačním kanálu.

  2. Spuštěním následujícího příkazu se přihlaste k registru. Nahraďte zástupný symbol názvem informačního kanálu a po zobrazení výzvy vložte token patu, který jste vytvořili v předchozím kroku:

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

Ukládání balíčků z Crates.io

Poznámka:

Pokud chcete ukládat balíčky z upstreamů, musíte mít roli Feed and Upstream Reader (Spolupracovníci) nebo vyšší. Další podrobnosti najdete v tématu Správa oprávnění .

Teď, když jsme nastavili projekt, nakonfigurovali zprostředkovatele přihlašovacích údajů a přihlásili se k našemu informačnímu kanálu, můžeme začít využívat balíčky z upstreamu. Azure Artifacts ukládá kopii jakéhokoli balíčku, který nainstalujete z upstreamu do informačního kanálu.

V tomto příkladu používáme bednu, serializaci/deserializační architekturu serde :

  1. Spuštěním následujícího příkazu v adresáři projektu přidejte bednu do souboru cargo.toml:

    cargo add serde
    
  2. Spuštěním následujícího příkazu sestavte projekt a spotřebujte bednu:

    cargo build
    

Po instalaci balíčku se do informačního kanálu uloží kopie. Přejděte do informačního kanálu a ověřte jeho přítomnost. Balíček by měl být k dispozici v informačním kanálu, jak je znázorněno níže:

Snímek obrazovky znázorňující bednu *serde* spotřebovanou z upstreamu