Condividi tramite


Pubblicare pacchetti Cargo con Azure Pipelines

Azure Pipelines consente agli sviluppatori di pubblicare i pacchetti Cargo nei feed di Azure Artifacts e nei registri pubblici, ad esempio Crates.io. Questo articolo illustra come pubblicare i pacchetti Cargo in un feed di Azure Artifacts usando pipeline YAML e classiche.

Questo articolo illustra come:

  • Creare un feed di Azure Artifacts
  • Eseguire l'autenticazione con Azure Artifacts
  • Pubblicare pacchetti Cargo

Prerequisiti

Creare un feed

Azure Artifacts consiglia di disporre di un feed dedicato per l'utilizzo di crate da crates.io e di un feed separato esclusivamente per la pubblicazione di crate interne. Se si dispone già di un feed, è possibile passare alla sezione successiva.

  1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.

  2. Selezionare Artefatti e quindi Crea feed.

  3. Specificare un nome per il feed, specificarne Visibilità e quindi scegliere un ambito per il feed.

  4. Al termine, fare clic su Crea.

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

Eseguire l'autenticazione con Azure Artifacts

  1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.

  2. Selezionare Artefatti e quindi selezionare il feed.

  3. Selezionare Connessione da alimentare e quindi selezionare Cargo nel riquadro sinistro.

  4. Seguire le istruzioni nella sezione Installazione del progetto aggiungendo il frammento fornito al file config.toml nel repository di origine:

    • Feed con ambito progetto:

      [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>"
      
    • Feed con ambito organizzazione:

      [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. Creare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti>per l'autenticazione con il feed.

  6. Usare l'attività CargoAuthenticate per eseguire l'autenticazione dalla pipeline:

    1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.

    2. Selezionare Pipeline, selezionare la definizione della pipeline e quindi selezionare Modifica.

    3. Selezionare il + segno per aggiungere una nuova attività. Cercare l'attività Autenticazione cargo e quindi selezionare Aggiungi per aggiungerla alla pipeline.

    4. Selezionare l'icona con i puntini di sospensione per aprire una nuova finestra che visualizza il contenuto del repository e quindi scegliere il file config.toml .

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

Pubblicare crate nel feed

  1. Dal progetto Azure DevOps selezionare Pipeline, selezionare la definizione della pipeline e quindi selezionare Modifica.

  2. Selezionare l'accesso al processo dell'agente + per aggiungere una nuova attività. Trovare l'attività di PowerShell tramite la funzione di ricerca e quindi selezionare Aggiungi per aggiungerla alla pipeline.

  3. Assegnare un nome all'attività, ad esempio Pubblica e quindi selezionare Inline come tipo. Incollare il comando publish inline, sostituendo il segnaposto con il nome del feed:

    cargo publish --registry <FEED_NAME>
    

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

Esempio

In questo esempio si installerà rustup nell'agente, si configurerà la variabile di ambiente PATH, si compilerà il progetto, si eseguirà l'autenticazione con CargoAuthenticate e infine si pubblicherà il crate nel feed 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

Al termine dell'esecuzione della pipeline, la cassa deve essere disponibile nel feed, come illustrato di seguito:

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