Compartilhar via


Publicar pacotes Cargo com o Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022

O Azure Pipelines permite que os desenvolvedores publiquem pacotes Cargo em feeds do Azure Artifacts e em registros públicos, como o Crates.io. Neste artigo, você aprenderá como publicar seus pacotes Cargo em um feed do Azure Artifacts usando pipelines YAML e Clássico.

Este artigo orientará você sobre como:

  • Criar um feed do Azure Artifacts
  • Autenticar com o Azure Artifacts
  • Publicar pacotes Cargo

Pré-requisitos

Criar um feed

O Azure Artifacts recomenda ter um feed dedicado para consumir crates do crates.io e um feed separado exclusivamente para publicar crates internos. Se você já tiver um feed, prossiga para a próxima seção.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione Criar Feed.

  3. Forneça um Nome para o seu feed, especifique sua Visibilidade e, em seguida, escolha um Escopo para o seu feed.

  4. Selecione Criar quando terminar.

    Uma captura de tela mostrando como criar um feed de carga para pacotes internos.

Autenticar com o Azure Artifacts

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed.

  3. Selecione Conectar ao feed e, em seguida, selecione Cargo no painel esquerdo.

  4. Siga as instruções na seção Configuração do projeto adicionando o trecho fornecido ao arquivo config.toml no repositório de origem:

    • Feed do projeto com escopo:

      [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 da organização com escopo:

      [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. Crie um Token de acesso pessoal com escopos de Empacotamento>Leitura e gravação para autenticar com seu feed.

  6. Use a tarefa CargoAuthenticate para autenticar pelo seu pipeline:

    1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

    2. Selecione Pipelines, selecione sua definição de pipeline e depois selecione Editar.

    3. Selecione o sinal + para adicionar uma nova tarefa. Localize a tarefa CargoAuthenticate e selecione Adicionar para adicioná-la ao pipeline.

    4. Selecione o ícone de reticências para abrir uma nova janela que exibe o conteúdo do repositório e escolha o arquivo config.toml.

      Uma captura de tela mostrando a tarefa Autenticação de carga em um pipeline clássico.

Publicar crates no seu feed

  1. No projeto Azure DevOps, selecione Pipelines, selecione a definição do seu pipeline e, em seguida, selecione Editar.

  2. Selecione o sinal + no trabalho do agente para adicionar uma nova tarefa. Procure a tarefa PowerShell por meio da função de pesquisa e selecione Adicionar para adicioná-la ao pipeline.

  3. Dê um nome à sua tarefa, por exemplo, Publicar e, em seguida, selecione Embutido como o tipo. Cole o comando de publicação embutido, substituindo o espaço reservado pelo nome do feed:

    cargo publish --registry <FEED_NAME>
    

Uma captura de tela mostrando como publicar caixas e feed do Azure Artifacts usando um pipeline clássico.

Exemplo

Neste exemplo, instalaremos o rustup no agente, configuraremos a variável de ambiente PATH, criaremos nosso projeto, autenticaremos com o CargoAuthenticate e, finalmente, publicaremos nosso crate em nosso feed do 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

Depois que a execução de pipeline for concluída, o crate deverá ser disponibilizado em seu feed, conforme mostrado abaixo:

Uma captura de tela mostrando a caixa hello-world-cargo publicada no feed.