Condividi tramite


Usare pacchetti da Crates.io

Servizi di Azure DevOps

Le origini upstream di Azure Artifacts consentono agli sviluppatori di usare pacchetti da registri pubblici come Crates.io e nuget.org. Questo articolo illustra come configurare il progetto e usare la riga di comando per utilizzare i crate da Crates.io.

Questo articolo illustra come:

  • Creare un feed di Azure Artifacts
  • Connessione al feed
  • Utilizzare casse da upstream

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.

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

  2. Selezionare Artefatti e quindi Crea feed.

  3. Immettere un nome per il feed, definirne la visibilità e quindi selezionare l'ambito. Assicurarsi di selezionare la casella di controllo Origini upstream per includere i pacchetti dai registri pubblici.

  4. Al termine, fare clic su Crea.

    Screenshot che mostra come creare un feed per il carico upstream.

Connessione al feed

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

  2. Selezionare Artefatti e quindi selezionare il feed dal menu a discesa.

  3. Selezionare Connessione da inserire e quindi selezionare Cargo nel riquadro di spostamento a sinistra.

  4. Se questa è la prima volta che si usa Cargo con Azure Artifacts, assicurarsi di aver installato rustup.

  5. Aggiungere il frammento specificato nella sezione Installazione del progetto al file .cargo/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>"
    

Configurare un provider di credenziali

Per usare Cargo con Azure Artifacts, è necessario configurare un provider di credenziali. Le impostazioni specificate configureranno un helper di credenziali predefinito per l'utente corrente:

Incollare il frammento di codice seguente nel file %U edizione Standard RPROFILE%.cargo\config.toml:

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

Accedere al registro

  1. Creare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti>per l'autenticazione con il feed.

  2. Eseguire il comando seguente per accedere al Registro di sistema. Sostituire il segnaposto con il nome del feed e incollare il token di accesso personale creato nel passaggio precedente quando richiesto:

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

Salvare i pacchetti da Crates.io

Nota

Per salvare i pacchetti da upstream, è necessario avere il ruolo Feed e lettore upstream (collaboratore) o versione successiva. Per altre informazioni, vedere Autorizzazioni.

Dopo aver configurato il progetto, configurato un provider di credenziali e aver eseguito l'accesso al feed, è possibile iniziare a usare i pacchetti da upstream. Azure Artifacts salva una copia di qualsiasi pacchetto installato da upstream al feed.

In questo esempio viene usato il serde crate, un framework di serializzazione/deserializzazione:

  1. Eseguire il comando seguente nella directory del progetto per aggiungere il crate al file cargo.toml:

    cargo add serde
    
  2. Eseguire il comando seguente per compilare il progetto e usare la cassa:

    cargo build
    

Una volta installato il pacchetto, una copia verrà salvata nel feed. Passare al feed per verificarne la presenza. Il pacchetto deve essere disponibile nel feed, come illustrato di seguito:

Screenshot che mostra la cassa *serde* utilizzata da upstream.