Publicación y restauración de paquetes de Cargo

Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Mediante el uso de Azure Artifacts, puede publicar y restaurar paquetes de Cargo desde sus propias fuentes y registros públicos, como crates.io. Use Azure Artifacts para hospedar crates internos, conectarse a registros de origen y administrar el acceso a los paquetes desde un único feed. Este inicio rápido le guía en la creación de una fuente de distribución, la configuración de su proyecto de Cargo y la publicación y el consumo de paquetes de Cargo mediante Azure Artifacts.

Requisitos previos

Producto Requisitos
Azure DevOps - Una organización de Azure DevOps.
- Un Azure DevOps project.
- Descargar e instalar rustup. Necesita Cargo 1.74.0 o una versión posterior.

Crear un canal

Si ya tiene una fuente de Azure Artifacts, vaya a la sección siguiente. De lo contrario, siga estos pasos para crear un canal. Azure Artifacts recomienda usar un canal para consumir crates de registros públicos como crates.io y un canal independiente para publicar crates internos.

  1. Inicie sesión en Azure DevOps y vaya al proyecto.

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

  3. Introduzca un Nombre para el canal, elija su Visibilidad y, a continuación, seleccione un Ámbito. Asegúrese de activar la casilla Orígenes ascendentes para incluir paquetes de registros públicos.

  4. Seleccione Crear cuando haya terminado.

Conexión a una fuente

Para poder publicar o restaurar paquetes desde la fuente, primero debe configurar el proyecto para autenticarse y conectarse a la fuente.

  1. Inicie sesión en Azure DevOps y vaya al proyecto.

  2. Seleccione Artefactos y, a continuación, seleccione el feed en el menú desplegable.

  3. Seleccione Conectar a la fuente y, a continuación, seleccione Cargo en el panel de navegación izquierdo.

  4. Siga los pasos descritos en la sección configuración de Project para configurar el config.toml archivo.

  5. En la misma página, siga las instrucciones de las secciones Configurar un proveedor de credenciales e Iniciar sesión en el Registro para configurar el proveedor de credenciales y conectarse a la fuente. Para ver los pasos detallados, consulte Cargo: configuración del proyecto.

Importante

La compatibilidad con Cargo en Azure Artifacts requiere Rust 1.74 o versiones posteriores, que incluye compatibilidad con la característica registry-auth. Para actualizar la versión de Rust, ejecute rustup update

Importante

Cargo está actualmente en versión preliminar y podría requerir la cadena de herramientas nocturna con la registry-authcaracterística inestable habilitada. Para habilitar registry-auth, agregue la siguiente configuración a .cargo/config.toml.

[unstable]
registry-auth = true

Para usar la cadena de herramientas nocturna, ejecute el siguiente comando:

rustup default nightly

Publicar paquetes

Antes de publicar un paquete de Cargo, asegúrate de haber completado los pasos de Conectarse a una fuente para poder autenticarte con tu fuente de Azure Artifacts.

En el directorio que contiene el archivo Cargo.toml , ejecute el siguiente comando para publicar el paquete:

cargo publish

Si se produce un error GLib-GObject-CRITICAL - libsecret-CRITICAL, asegúrese de seguir estos pasos:

  1. Compruebe que libsecret está instalado:

    sudo apt update && sudo apt install libsecret-1-0
    
  2. Asegúrese de que se está ejecutando gnome-keyring :

    gnome-keyring-daemon --start --components=secrets
    
  3. Actualice Rust a la versión estable más reciente y establezca estable como cadena de herramientas predeterminada:

    rustup update  
    rustup default stable  
    
  4. Si el problema persiste, vuelva a ejecutar cargo publish con registro detallado para recopilar más información:

    RUST_LOG=debug cargo publish --registry <REGISTRY_NAME>
    

Restaurar paquetes

Antes de restaurar las dependencias, asegúrese de completar los pasos descritos en Conexión a una fuente para que pueda autenticarse con la fuente de Azure Artifacts.

  1. Asegúrese de que sus dependencias estén listadas en la sección [dependencies] del archivo Cargo.toml.

  2. Si está usando crates directamente desde su feed privado de Azure Artifacts, especifique explícitamente el registro de la siguiente manera:

    [dependencies]
    CRATE_NAME = { version = "VERSION_NUMBER", registry = "FEED_NAME" }
    
  3. Si hace referencia a paquetes de crates.io a través de la fuente upstream mediante la configuración replace-with, especifíquelos como se indica a continuación:

    [dependencies]
    CRATE_NAME = "VERSION_NUMBER"
    
  4. Ejecute el siguiente comando en el directorio de su proyecto para compilar su proyecto y restaurar las dependencias desde el feed:

    cargo build
    

Los crates descargados se almacenan en caché localmente en ~/.cargo/registry/cache/<registry-hash>/, donde registry-hash es un identificador único basado en la URL del feed.