Sdílet prostřednictvím


Publikování balíčků Cargo pomocí Azure Pipelines

Azure Pipelines umožňuje vývojářům publikovat své balíčky Cargo do informačních kanálů Azure Artifacts a veřejných registrů, jako je Crates.io. V tomto článku se dozvíte, jak publikovat balíčky Cargo do informačního kanálu Azure Artifacts pomocí kanálů YAML i Classic.

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

  • Vytvoření informačního kanálu Azure Artifacts
  • Ověřování pomocí Azure Artifacts
  • Publikování balíčků Cargo

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. Pokud už informační kanál máte, můžete přejít k další části.

  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, zadejte jeho viditelnost a pak zvolte obor informačního kanálu.

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

    A screenshot showing how to create a cargo feed for internal packages.

Ověřování pomocí Azure Artifacts

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

  2. Vyberte Artefakty a pak svůj informační kanál.

  3. Vyberte Připojení pro podávání a pak v levém podokně vyberte Cargo.

  4. Postupujte podle pokynů v části Nastavení projektu přidáním poskytnutého fragmentu do souboru config.toml ve zdrojovém úložišti:

    • 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>"
      
  5. Vytvořte osobní přístupový token s rozsahy čtení a zápisu balíčku>pro ověření v informačním kanálu.

  6. K ověření z kanálu použijte úlohu CargoAuthenticate:

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

    2. Vyberte Kanály, vyberte definici kanálu a pak vyberte Upravit.

    3. Výběrem znaménka + přidáte nový úkol. Vyhledejte úlohu Ověření nákladu a pak vyberte Přidat, aby se přidala do kanálu.

    4. Výběrem ikony se třemi tečky otevřete nové okno zobrazující obsah úložiště a pak zvolte soubor config.toml .

      A screenshot showing the Cargo authenticate task in a classic pipeline.

Publikování krabic do informačního kanálu

  1. V projektu Azure DevOps vyberte Kanály, vyberte definici kanálu a pak vyberte Upravit.

  2. Vyberte přihlášení k + úloze agenta a přidejte novou úlohu. Najděte úlohu PowerShellu prostřednictvím vyhledávací funkce a pak ji výběrem možnosti Přidat přidejte do kanálu.

  3. Zadejte název úkolu, například Publikovat, a jako typ vyberte Vložit . Vložte příkaz publish inline a nahraďte zástupný text názvem informačního kanálu:

    cargo publish --registry <FEED_NAME>
    

A screenshot showing how to publish crates to and Azure Artifacts feed using a classic pipeline.

Příklad

V tomto příkladu nainstalujete rustup na agenta, nastavíme proměnnou prostředí PATH, sestavíme projekt, ověříme se pomocí CargoAuthenticate a nakonec publikujeme naši bednu do informačního kanálu Azure Artifacts:

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- powershell: |
   Invoke-WebRequest -Uri https://sh.rustup.rs -OutFile rustup-init.sh
   bash .\rustup-init.sh -y
   echo "##vso[task.prependpath]$env:USERPROFILE\.cargo\bin"
  displayName: Install

- task: CargoAuthenticate@0
  displayName: 'cargo Authenticate'
  inputs:
    configFile: '.cargo/config.toml'

- script: |
   cargo build --all
  displayName: Build

- powershell: |
   cargo publish --registry CargoInternalFeed
  displayName: Publish

Po dokončení spuštění kanálu by měla být v kanálu k dispozici bedna, jak je znázorněno níže:

A screenshot showing the hello-world-cargo crate published to the feed.