Uso de paquetes de Crates.io

Azure DevOps Services

Los orígenes ascendentes de Azure Artifacts permiten a los desarrolladores consumir paquetes de registros públicos, como Crates.io y nuget.org. Este artículo le guiará a través de la configuración del proyecto y el uso de la línea de comandos para consumir Crates desde Crates.io.

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

  • Crear un feed de Azure Artifacts.
  • Conectar a la fuente
  • Consumo de contenedores de nivel superior

Requisitos previos

Crear feed

Azure Artifacts recomienda tener un feed dedicado para consumir contenedores de crates.io y una fuente independiente exclusivamente para publicar contenedores internos.

  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. Escriba un nombre para la fuente, defina su visibilidad y, a continuación, seleccione el ámbito. Asegúrese de activar la casilla Orígenes ascendentes para incluir paquetes de registros públicos.

  4. Seleccione Crear cuando haya terminado.

    Captura de pantalla que muestra cómo crear una fuente para la carga ascendente.

Conectar a la fuente

  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 en el menú desplegable.

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

  4. Si es la primera vez que usa Cargo con Azure Artifacts, asegúrese de que ha instalado rustup.

  5. Agregue el fragmento de código proporcionado en la sección Configuración del proyecto al archivo .cargo/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>"
    

Configuración de un proveedor de credenciales

Para usar Cargo con Azure Artifacts, debe configurar un proveedor de credenciales. La configuración proporcionada configurará un asistente de credenciales predeterminado para el usuario actual:

Pegue el fragmento de código siguiente en %USERPROFILE%.cargo\config.toml:

[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]

Inicie sesión en el registro.

  1. Cree un token de acceso personal con los ámbitos Empaquetado>Lectura y escritura para autenticarse con el feed.

  2. Ejecute el siguiente comando para iniciar sesión en el registro. Reemplace el marcador de posición por el nombre de la fuente y pegue el token de acceso personal que creó en el paso anterior cuando se le solicite:

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

Guardar paquetes de Crates.io

Nota:

Para guardar paquetes de nivel superior, debe tener el rol Lector de fuente y ascendente (colaborador) o superior. Para más información, consulte Permisos.

Ahora que hemos configurado nuestro proyecto, configurado un proveedor de credenciales e iniciado sesión en nuestra fuente, podemos empezar a consumir paquetes de nivel superior. Azure Artifacts guarda una copia de cualquier paquete que instale desde la cadena ascendente a la fuente.

En este ejemplo, usamos el serde contenedor , un marco de serialización y deserialización:

  1. Ejecute el siguiente comando en el directorio del proyecto para agregar el contenedor a su cargo.toml:

    cargo add serde
    
  2. Ejecute el siguiente comando para compilar el proyecto y consumir el contenedor:

    cargo build
    

Una vez instalado el paquete, se guardará una copia en la fuente. Vaya a la fuente para comprobar su presencia. El paquete debe estar disponible en la fuente, como se muestra a continuación:

Captura de pantalla que muestra el contenedor *serde* consumido desde la cadena ascendente.