Condividi tramite


Pubblicare pacchetti Cargo con Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022

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 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.

    Screenshot che mostra come creare un feed di carico per i pacchetti interni.

Eseguire l'autenticazione con Azure Artifacts

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

  2. Selezionare Artefatti e quindi selezionare il feed.

  3. Selezionare Connetti al feed 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 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 .

      Screenshot che mostra l'attività di autenticazione Cargo in una pipeline classica.

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>
    

Screenshot che mostra come pubblicare crate in e feed di Azure Artifacts usando una pipeline classica.

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:

Screenshot che mostra la cassa hello-world-cargo pubblicata nel feed.