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
Un'organizzazione Azure DevOps. Se non è già stato fatto, creare un'organizzazione .
Un progetto Azure DevOps. Creare un progetto se non ne è ancora disponibile uno.
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.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Artefatti e quindi Crea feed.
Specificare un nome per il feed, specificarne Visibilità e quindi scegliere un ambito per il feed.
Al termine, fare clic su Crea.
Eseguire l'autenticazione con Azure Artifacts
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Artefatti e quindi selezionare il feed.
Selezionare Connetti al feed e quindi selezionare Cargo nel riquadro sinistro.
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>"
Creare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti>per l'autenticazione con il feed.
Usare l'attività CargoAuthenticate per eseguire l'autenticazione dalla pipeline:
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Pipeline, selezionare la definizione della pipeline e quindi selezionare Modifica.
Selezionare il
+
segno per aggiungere una nuova attività. Cercare l'attività Autenticazione cargo e quindi selezionare Aggiungi per aggiungerla alla pipeline.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 .
Pubblicare crate nel feed
Dal progetto Azure DevOps selezionare Pipeline, selezionare la definizione della pipeline e quindi selezionare Modifica.
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.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>
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: