¿Qué son los orígenes ascendentes?
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Los orígenes ascendentes de Azure Artifacts permiten a los desarrolladores almacenar convenientemente paquetes de varios orígenes en una sola fuente, incluidos los que publica y los instalados desde fuentes externas o registros públicos, como NuGet.org, npmjs.com. Una vez habilitados los orígenes ascendentes, cualquier paquete instalado desde un origen ascendente se guarda automáticamente en el feed.
Nota:
Para guardar paquetes de orígenes ascendentes, debe tener el rol de Lector de fuentes y ascendentes (Colaborador) o superior. Consulte Administrar permisos para obtener más detalles.
¿Por qué usar orígenes ascendentes?
La habilitación de orígenes ascendentes proporciona varias ventajas para administrar las dependencias del producto dentro de una sola fuente:
simplicidad: almacenar todos los paquetes en una sola fuente simplifica los archivos de configuración como NuGet.config, npmrc o settings.xml. Con una sola fuente en el archivo de configuración, se reducen las probabilidades de errores y se simplifica la configuración.
Compilaciones coherentes: su fuente resuelve las solicitudes de paquetes en un orden definido, garantizando compilaciones más predecibles y fiables.
Integridad de Paquetes: El feed retiene los metadatos sobre los paquetes guardados de fuentes upstream, lo que le permite verificar su autenticidad y asegurarse de que está utilizando las versiones originales, no copias ni versiones potencialmente malintencionadas.
Fiabilidad: los paquetes instalados desde orígenes ascendentes se guardan automáticamente en la fuente. Esto garantiza el acceso continuado incluso si el origen ascendente deja de estar disponible debido al mantenimiento u otros problemas, por lo que puede seguir desarrollando y creando con confianza.
Procedimientos recomendados para consumidores de paquetes
Para aprovechar al máximo las ventajas de las fuentes de origen como consumidor de paquetes, siga estas mejores prácticas:
1. Uso de 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 orígenes ascendentes habilitados.
Ejemplos:
registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/ always-auth=true
<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. El uso de
<clear />
garantiza que todos los demás orígenes de paquete especificados en los archivos de configuración de nivel superior se omiten.
2. Ordena tus fuentes ascendentes intencionadamente
Si solo usa registros públicos como NuGet.org o npmjs.com, el orden de los orígenes ascendentes no importa. Las solicitudes a la fuente siguen la secuencia que se describe en la sección orden de búsqueda.
Sin embargo, cuando administra varios orígenes, como una combinación de fuentes y registros públicos, se busca en cada origen ascendente en el orden definido en la 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 modifican paquetes de software de código abierto (OSS) para abordar problemas de seguridad, mejorar la funcionalidad o cumplir requisitos internos específicos que requieren volver a generar el paquete internamente en lugar de obtenerlo directamente desde un repositorio público. Si su organización sigue esta práctica, coloque el origen ascendente que contiene estos paquetes de sistema operativo personalizados antes de otros registros públicos. Esto garantiza que las versiones personalizadas se usen en lugar de las públicas.
Procedimientos recomendados para propietarios de fuentes y editores de paquetes
Para asegurarse de que la fuente se puede configurar fácilmente como origen ascendente, siga estos procedimientos recomendados:
1. Usar la vista predeterminada
La vista predeterminada de todos los feeds recién creados es @Local
, que contiene todos los paquetes publicados en tu feed, así como los paquetes guardados de fuentes ascendentes.
Si desea usar otras vistas, como una vista para las versiones de paquete recién publicadas, puede promover los paquetes a la vista de @Release
y, a continuación, hacer que esa vista esté disponible para los consumidores de destino. Consulte Vistas de fuentes para obtener más información.
2. 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. Una vez guardado un paquete en la vista predeterminada, los usuarios que quieran consumirlo podrán resolver el gráfico de paquetes e instalar la versión deseada. Los paquetes de orígenes ascendentes se muestran en función de la vista configurada para el origen ascendente correspondiente. Consulte Cómo las fuentes ascendentes construyen el conjunto de paquetes disponibles para obtener más detalles.
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, NuGet envía consultas paralelas a todas las fuentes del archivo de configuración y procesa las respuestas de una manera primero en salir (FIFO), lo que puede provocar resultados incoherentes.
Las fuentes ascendentes eliminan esta incertidumbre al aplicar un orden de búsqueda estructurado, mediante la búsqueda del feed y sus fuentes ascendentes en el orden siguiente:
Paquetes que se han publicado directamente en la fuente.
Paquetes que se han guardado desde un origen ascendente.
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.
Nota:
Azure Artifacts no admite la búsqueda de paquetes en orígenes ascendentes mediante el Explorador de paquetes NuGet en Visual Studio.
Guardar paquetes de orígenes ascendentes
Cuando se habilita un origen ascendente en la fuente, Azure Artifacts guardará automáticamente una copia de cualquier paquete instalado por un colaborador o superior desde el origen ascendente.
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 este caso, la instalación de express también guardaría sus dependencias, como accepts.
Los orígenes ascendentes proporcionan una protección importante para los consumidores y la infraestructura, protegiéndolos de interrupciones inesperadas. Si el origen ascendente experimenta interrupciones, mantenimiento o deja de estar disponible temporalmente, puede seguir recuperando los paquetes necesarios de su fuente y continuar con el desarrollo.
Nota:
Las fuentes ascendentes personalizadas solo son compatibles con los paquetes npm.
Invalidación de paquetes de orígenes ascendentes
Cuando habilite orígenes ascendentes, debe tener en cuenta que no puede publicar una versión de paquete que ya existe en un origen ascendente. Por ejemplo, si habilita el NuGet.org upstream, no podrá publicar el paquete Newtonsoft.Json 10.0.3, ya que esa versión ya está disponible en NuGet.org.
Si necesita publicar una versión de paquete que ya existe en uno de los orígenes ascendentes, debe seguir estos pasos:
Deshabilite el origen ascendente correspondiente.
Publique el paquete.
Vuelva a habilitar la fuente ascendente.
Este proceso garantiza que pueda publicar la versión deseada mientras mantiene la integridad de sus fuentes ascendentes.
Nota:
Las versiones del paquete son inmutables. Los paquetes guardados permanecen en el feed incluso si el origen ascendente está desactivado o eliminado.
Estado de salud de las fuentes 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 salud de sus fuentes ascendentes, siga estos pasos:
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione el icono de engranaje
para navegar a su Configuración de fuente y luego seleccione Orígenes ascendentes.
Si se produce algún error, se mostrará un mensaje de advertencia. Al hacer clic en el estado de Error se proporcionan detalles adicionales, incluida la causa del error y las instrucciones sobre cómo resolverlo.
Nota:
En el caso de los registros públicos como NuGet.org, hay un retraso de 3 a 6 horas entre cuando se inserta un paquete en el registro público y cuándo 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.
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 la fuente descendente poco después de que se publiquen. Sin embargo, el paquete solo será visible para los lectores después de guardarlo en la fuente. Un paquete se guarda cuando un usuario con permisos de Lector de fuentes y ascendentes (Colaborador) o superiores instala la versión en la fuente descendente. Esto desencadena que el sistema descendente guarde una copia del paquete desde el sistema ascendente, después de lo cual se guarda de forma permanente y está disponible en el sistema descendente para todos los lectores. Esto es cuando la versión del paquete se vuelve visible en la sección versiones del paquete de la interfaz de usuario web.
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. Consulte ¿Qué son las vistas de fuente ? para obtener más detalles.
P: No puedo encontrar el feed que quiero configurar como fuente ascendente.
R: Asegúrese de que el propietario de la fuente ha compartido una vista como un origen ascendente. Consulte Adición de una fuente en una organización diferente como origen ascendente para obtener más información.
P: ¿Puede un usuario con el rol Lector de Feeds descargar paquetes de una fuente ascendente?
R: No. Un usuario con el rol de Lector de fuentes en una fuente de Azure Artifacts solo puede descargar paquetes que se hayan guardado en la fuente. Los paquetes se guardan en la fuente cuando un Lector de fuentes y ascendentes (Colaborador), Publicador de fuentes (Colaborador) o Propietario de la fuente instala esos paquetes desde el origen 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 el feed, y el número de versión queda permanentemente reservado. 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. Esta advertencia se muestra cada vez que el paquete se ve o instala desde la fuente.