Partilhar via


Publicar pacotes de carga com o Azure Pipelines

O Azure Pipelines permite que os desenvolvedores publiquem seus pacotes de carga em feeds de artefatos do Azure e registros públicos, como Crates.io. Neste artigo, você aprenderá como publicar seus pacotes de carga em um feed de artefatos do Azure usando pipelines YAML e Classic.

Este artigo irá guiá-lo através de como:

  • Criar um feed de Artefatos do Azure
  • Autenticar com artefatos do Azure
  • Publicar pacotes de carga

Pré-requisitos

Criar um feed

O Azure Artifacts recomenda ter um feed dedicado para consumir caixas de crates.io e um feed separado exclusivamente para publicar caixas internas. Se já tiver um feed, pode avançar para a secção seguinte.

  1. Entre em 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 feed, especifique sua Visibilidade e escolha um Escopo para o feed.

  4. Selecione Criar quando terminar.

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

Autenticar com artefatos do Azure

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

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

  3. Selecione Conectar ao feed e, em seguida, selecione Carga 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 com escopo do projeto:

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

      [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 Packaging>Read & escreva escopos para autenticar com seu feed.

  6. Use a tarefa CargoAuthenticate para autenticar a partir do seu pipeline:

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

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

    3. Selecione o + sinal para adicionar uma nova tarefa. Procure a tarefa Autenticação de carga e selecione Adicionar para adicioná-la ao seu pipeline.

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

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

Publique caixas no seu feed

  1. No seu projeto do Azure DevOps, selecione Pipelines, selecione sua definição de pipeline e selecione Editar.

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

  3. Dê um nome à sua tarefa, por exemplo, Publicar e, em seguida, selecione Inline como o tipo. Cole o comando publish inline, substituindo o espaço reservado pelo nome do feed:

    cargo publish --registry <FEED_NAME>
    

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

Exemplo

Neste exemplo, instalaremos rustup no agente, configuraremos a variável de ambiente PATH, criaremos nosso projeto, autenticaremos com CargoAuthenticate e, finalmente, publicaremos nossa caixa em nosso feed de Artefatos do Azure:

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 do pipeline for concluída, sua caixa deve estar disponível em seu feed, conforme mostrado abaixo:

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