Orígenes ascendentes de Azure Artifacts

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Con orígenes ascendentes, puede almacenar convenientemente paquetes de varios orígenes en una sola fuente. Esto incluye los paquetes que publica y los que consume de fuentes externas y registros públicos, como NuGet.org, npmjs.com, Maven Central y PyPI. Una vez que haya habilitado orígenes ascendentes, cualquier paquete instalado desde estos orígenes ascendentes, se guardará automáticamente una copia en la fuente.

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.

Ventajas

La habilitación de orígenes ascendentes ofrece varias ventajas para administrar las dependencias del producto dentro de una sola fuente:

  • Simplicidad: al publicar todos los paquetes en una sola fuente, simplifica los archivos de configuración como NuGet.config, npmrc o settings.xml. Con solo una fuente en el archivo de configuración, se reducen las posibilidades de errores y errores, lo que simplifica la configuración.

  • Determinismo: la fuente resuelve las solicitudes de paquete en orden, lo que da lugar a una mayor coherencia al volver a generar el código.

  • Provenance: la fuente conserva información sobre los paquetes que guardó de orígenes ascendentes. Esto le permite comprobar que usa el paquete original y no una copia o una versión potencialmente malintencionada.

  • Tranquilidad: todos los paquetes instalados desde orígenes ascendentes se guardan automáticamente en la fuente. Esto significa que incluso si el origen ascendente está deshabilitado, quitado o en mantenimiento, puede seguir desarrollando y compilando con confianza porque tiene una copia de ese paquete en la fuente.

Procedimientos recomendados: consumidores de paquetes

Para aprovechar al máximo las ventajas de los orígenes ascendentes como consumidor de paquetes, siga estos procedimientos recomendados:

Use una sola fuente en el archivo de configuración:

Para que la fuente proporcione una restauración determinista, asegúrese de que el archivo de configuración, como nuget.config o .npmrc, haga referencia solo a una fuente con los orígenes ascendentes habilitados. Consulte el ejemplo siguiente:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Nota:

NuGet compila varios archivos de configuración para determinar el conjunto completo de opciones que se van a aplicar. <clear />Mediante , puede omitir eficazmente todos los demás orígenes de paquete especificados en archivos de configuración de nivel superior.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Ordene los orígenes ascendentes intencionadamente:

Si usa exclusivamente registros públicos como nuget.org o npmjs.com, el orden de los orígenes ascendentes es irrelevante. Las solicitudes a la fuente siguen la secuencia detallada en la sección de orden de búsqueda.

Sin embargo, al administrar varios orígenes, que pueden incluir una combinación de fuentes y registros públicos, se busca en cada origen ascendente en el orden en que se muestra en los valores de configuración de la fuente. En este caso, se recomienda colocar primero los registros públicos en la lista de orígenes ascendentes.

En algunos escenarios únicos, algunas organizaciones eligen personalizar paquetes de software de código abierto (OSS). Esto podría implicar abordar los problemas de seguridad, mejorar la funcionalidad o cumplir los requisitos específicos que requieren la regeneración interna del paquete en lugar de obtenerlo directamente de un repositorio público. Si su organización sigue esta práctica, es aconsejable colocar el origen ascendente que contiene estos paquetes de sistema operativo modificados antes de los administradores de paquetes públicos. Esta disposición garantiza el uso de las versiones personalizadas de la organización.

Use la vista predeterminada sugerida:

Al agregar una fuente remota como origen ascendente, debe seleccionar la vista de su fuente. Esto permite a los orígenes ascendentes construir un conjunto de paquetes disponibles. Consulte Creación de ascendentes del conjunto de paquetes disponibles para obtener más detalles.

Procedimientos recomendados: propietarios de fuentes o editores de paquetes

Para asegurarse de que la fuente está configurada fácilmente como origen ascendente, considere la posibilidad de aplicar los siguientes procedimientos recomendados:

Use la vista predeterminada:

La vista predeterminada de todas las fuentes recién creadas es la @Local vista, que contiene todos los paquetes publicados en la fuente o guardados desde orígenes ascendentes.

Si desea usar otras vistas, como una vista para las versiones de paquete recién publicadas, puede promover el paquete a la @Release vista y, a continuación, hacer que esa vista esté disponible para los consumidores del paquete.

Construir un gráfico de paquetes:

Para construir un gráfico de paquetes, simplemente conéctese a la vista predeterminada de la fuente e instale el paquete que desea compartir. Cuando el paquete se guarda en la vista predeterminada, los usuarios que quieran consumirlo podrán resolver el gráfico de paquetes e instalar el paquete deseado. Los paquetes de orígenes ascendentes se muestran en función de la vista configurada para el origen ascendente correspondiente.

Orden de búsqueda

En el caso de los administradores de paquetes públicos que admiten varias fuentes como NuGet y Maven, el orden en el que se consultan las fuentes a veces puede ser poco clara o no determinista. Por ejemplo, en NuGet, las consultas paralelas se envían a todas las fuentes del archivo de configuración y las respuestas se procesan de una manera primero en salir (FIFO).

Los orígenes ascendentes abordan este comportamiento no determinista mediante la búsqueda de la fuente y sus orígenes ascendentes en el orden siguiente:

  1. Paquetes que se han publicado directamente en la fuente.

  2. Paquetes que se han guardado desde un origen ascendente.

  3. Paquetes disponibles desde orígenes ascendentes. Se busca en cada origen ascendente en el orden en que aparece en la configuración de la fuente.

Para aprovechar al máximo la característica de búsqueda rápida, se recomienda incluir solo una fuente en el archivo de configuración.

Nota:

No se admite la búsqueda de paquetes en orígenes ascendentes mediante el Explorador de paquetes NuGet.

Guardar paquetes de orígenes ascendentes

Al habilitar orígenes ascendentes para la fuente e instalar un paquete desde un origen ascendente, se guarda una copia automática de ese paquete en la fuente. Esta práctica mejora el rendimiento de la descarga y conserva el ancho de banda de red.

Por ejemplo, puede instalar paquetes directamente desde el origen ascendente mediante un comando como npm install express. Como alternativa, es posible que los paquetes se instalen como parte de un proceso de resolución de dependencias. En el último escenario, la instalación de Express también guardaría sus dependencias, como acepta.

Nota:

Los orígenes ascendentes personalizados solo se admiten para los paquetes npm.

Invalidación de paquetes de orígenes ascendentes

Al habilitar orígenes ascendentes, es importante tener en cuenta que la publicación de una versión de paquete que ya existe en un origen ascendente no será posible. Por ejemplo, si habilita el NuGet.org ascendente, no podrá publicar el paquete Newtonsoft.Json 10.0.3 , ya que esa versión exacta ya existe en NuGet.org.

Si necesita publicar una versión de paquete que ya esté presente en uno de los orígenes ascendentes, debe seguir estos pasos:

  1. Deshabilite el origen ascendente correspondiente.
  2. Publique el paquete.
  3. Vuelva a habilitar el origen ascendente.

Nota:

Las versiones del paquete son inmutables. Los paquetes guardados permanecen en la fuente incluso si el origen ascendente está deshabilitado o quitado.

Estado de mantenimiento de orígenes ascendentes

Si una fuente tiene un origen ascendente con errores, los metadatos de los paquetes del mismo protocolo ya no se pueden actualizar. Para comprobar el estado de mantenimiento de los orígenes ascendentes, siga estos pasos:

  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 el icono Icono de engranaje de engranaje para ir a la configuración de fuente y, a continuación, seleccione Orígenes ascendentes.

    Captura de pantalla que muestra el estado de la última sincronización de los orígenes ascendentes.

  4. Si se produce algún error, se mostrará un mensaje de advertencia. Al hacer clic en el estado Error se proporcionarán detalles adicionales, incluida la causa del error y las instrucciones sobre cómo resolverlo.

    Captura de pantalla que muestra los detalles del error de sincronización.

Nota:

En el caso de registros públicos como NuGet.org, hay un retraso de 3 a 6 horas entre el momento en que se inserta un paquete en el registro público y cuando está disponible para su descarga. Este retraso depende del tiempo del trabajo y la propagación de datos. Sin embargo, cuando el origen ascendente es una fuente de Azure Artifacts, la latencia suele no ser superior a unos minutos.

Orígenes ascendentes sin conexión

Las fuentes ascendentes sirven como una valiosa protección para los consumidores y la infraestructura, protegiéndolos de interrupciones imprevistas. Al instalar un paquete desde un origen ascendente, se guarda una copia de ese paquete en la fuente. En caso de que el origen ascendente experimente tiempo de inactividad, se somete a mantenimiento o deje de estar disponible temporalmente, todavía puede recuperar los paquetes necesarios de la fuente y continuar con el desarrollo.

Preguntas más frecuentes

P: ¿No encuentro mi paquete aunque pueda verlo en uno de los canales ascendentes de mi fuente?

R: Los paquetes de orígenes ascendentes están disponibles en el nivel inferior en cuanto se publican. Sin embargo, el paquete solo aparecerá en la interfaz de usuario de la fuente después de que se haya ingerido. La ingesta se desencadena cuando un lector de fuente y ascendente (colaborador) o superior instala la versión del paquete desde la cadena ascendente.

P: ¿Qué son las vistas de fuente?

R: Las vistas permiten a los desarrolladores compartir de forma selectiva un subconjunto de versiones de paquete que se han probado y validado, excepto los paquetes que aún están en desarrollo o que no cumplen los criterios de calidad. Para obtener más información, consulte ¿Qué son las vistas de fuente?

P: ¿No encuentro la fuente que quiero configurar como origen ascendente?

R: Asegúrese de que el propietario de la fuente comparte una vista como origen ascendente.

P: ¿Puede un usuario con el rol Lector de fuentes descargar paquetes de un origen ascendente?

R: No. Un usuario con el rol Lector de fuentes en una fuente de Azure Artifacts solo puede descargar paquetes guardados en la fuente. Los paquetes se guardan en la fuente cuando un lector de fuente y ascendente (colaborador), un publicador de fuentes (colaborador) o un propietario de fuente instalan esos paquetes desde la cadena ascendente.

P: ¿Qué ocurre cuando un usuario elimina o anula la publicación de un paquete guardado de un origen ascendente?

R: El paquete deja de estar disponible para su descarga desde la fuente y el número de versión está reservado permanentemente. Además, el paquete ya no se guardará desde el origen ascendente. Las versiones anteriores y posteriores del paquete no se verán afectadas.

P: ¿Qué ocurre cuando un usuario deja de usar un paquete guardado desde un origen ascendente?

R: Cuando un usuario deja de usar un paquete, se agrega un mensaje de advertencia a los metadatos del paquete, que se muestra cada vez que el paquete se ve o instala desde la fuente.