Compartir a través de


Publicación de paquetes Cargo con Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022

Azure Pipelines permite a los desarrolladores publicar paquetes de Cargo en fuentes de Azure Artifacts y 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.

Requisitos previos

  • Una organización de Azure DevOps y un proyecto. Cree una organización de o un proyecto de si aún no lo ha hecho.

  • Una fuente de Azure Artifacts. Crear un feed si aún no tiene uno.

Autentificarse con un feed

  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. Copie el fragmento de código proporcionado de la sección de configuración del proyecto y agréguelo al archivo config.toml en su repositorio de origen. El archivo debe tener este aspecto:

    • 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.

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

  2. Seleccione Pipelines y elija la definición correspondiente.

  3. Seleccione Editary agregue el siguiente fragmento de código a la canalización de YAML.

    - task: CargoAuthenticate@0
      displayName: 'Cargo Authenticate'
      inputs:
        configFile: '.cargo/config.toml'    ## Path to the config.toml file that specifies the registries you want to work with. Select the file, not the folder e.g. "/.cargo/config.toml"
    

Publicar cajas en un feed

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

  2. Seleccione Pipelines y elija la definición correspondiente.

  3. Seleccione Editary agregue el siguiente fragmento de código a la canalización de YAML.

    - powershell: |
       cargo publish --registry <FEED_NAME>        ## Replace the placeholder with your feed name
      env:
        SYSTEM_ACCESSTOKEN: $(system.accesstoken)
    

Ejemplo

En el ejemplo siguiente se muestra cómo instalar Rustup en el agente, configurar la variable de entorno PATH, compilar el proyecto, autenticarse con CargoAuthenticate y publicar en una fuente 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 finalizada la ejecución de la canalización, la caja debería estar disponible en el feed, como se muestra a continuación:

Captura de pantalla que muestra el contenedor hello-world-cargo publicado en la fuente.