Comparteix a través de


Publicación de paquetes Cargo con Azure Pipelines

Azure Pipelines permite a los desarrolladores publicar sus paquetes de Cargo en los feeds de Azure Artifacts y en registros públicos como Crates.io. En este artículo aprenderá a publicar los paquetes Cargo en un feed de Azure Artifacts mediante canalizaciones YAML y Classic.

Este artículo le guiará a través de cómo:

  • Crear un feed de Azure Artifacts.
  • Autentificar con Azure Artifacts
  • Publicar paquetes Cargo

Requisitos previos

  • Una organización de Azure DevOps. Cree una organización, si aún no tiene una.

  • Un proyecto de Azure DevOps. Si aún no tiene un proyecto, cree uno.

Crear feed

Azure Artifacts recomienda tener un feed dedicado para consumir contenedores de crates.io y una fuente independiente exclusivamente para publicar contenedores internos. Si ya tiene un feed, puede continuar en la sección siguiente:

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Seleccione Artefactos y, a continuación, Crear feed.

  3. Asigne un nombre para el feed, especifique su visibilidad y elija un ámbito para el feed.

  4. Seleccione Crear cuando haya terminado.

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

Autentificar con Azure Artifacts

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione la fuente.

  3. Seleccione Conectar al feed y, a continuación, seleccione Cargo en el panel izquierdo.

  4. Siga las instrucciones de la sección Configuración del proyecto añadiendo el fragmento de código proporcionado al archivo config.toml en el repositorio de origen:

    • Fuente con ámbito de proyecto:

      [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 ámbito de organización:

      [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. Cree un token de acceso personal con los ámbitos Empaquetado>Lectura y escritura para autenticarse con el feed.

  6. Utilice la tarea CargoAuthenticate para autenticarse desde la canalización:

    1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

    2. Seleccione Canalizaciones, seleccione la definición de canalización y, a continuación, seleccione Editar.

    3. Seleccione el signo + para agregar una nueva tarea. Busque la tarea Autenticación de Cargo y, a continuación, seleccione Añadir para agregarla a la canalización.

    4. Seleccione el icono de puntos suspensivos para abrir una nueva ventana que muestre el contenido del repositorio y elija el archivo config.toml.

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

Publicación de contenedores en el feed

  1. Desde el proyecto de Azure DevOps, seleccione Canalizaciones, seleccione su definición de canalización y, a continuación, seleccione Editar.

  2. Seleccione el signo + en su trabajo de agente para añadir una nueva tarea. Localice la tarea de PowerShell a través de la función de búsqueda y seleccione Añadir para agregarla a la canalización.

  3. Asigne un nombre a la tarea, por ejemplo, Publicar y, a continuación, seleccione Alineado como tipo. Pegue su comando de publicación alineado, y sustituya el marcador de posición por el nombre de su feed:

    cargo publish --registry <FEED_NAME>
    

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

Ejemplo

En este ejemplo, instalaremos rustup en el agente, configuraremos la variable de entorno PATH, crearemos nuestro proyecto, autenticaremos con CargoAuthenticate y, por último, publicaremos nuestro contenedor en nuestro feed de 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

Una vez completada la ejecución de canalización, el contenedor debe estar disponible en el feed, como se muestra a continuación:

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