Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Al liberar un paquete, es fundamental asegurarse de que todas las dependencias de ese paquete están disponibles en tu flujo consumiéndolas desde una fuente upstream. Una vez que obtenga un paquete de una fuente externa, se guarda una copia en su flujo. Esto garantiza que incluso si la fuente de origen se vuelve inaccesible, la copia seguirá estando disponible tanto para usted como para los consumidores de fuentes.
Cómo los upstreams construyen el conjunto de paquetes disponibles
A medida que los feeds de Azure Artifacts pueden tener otros feeds como ascendentes, existe la posibilidad de crear ciclos de orígenes ascendentes, donde el feed A tiene como ascendente al feed B, que a su vez tiene como ascendente al feed C, y finalmente, el feed C asciende de nuevo al feed A. Dicho ciclo, si no se gestiona adecuadamente, podría provocar problemas con las solicitudes de paquetes, creando un bucle infinito donde un usuario solicita un paquete del feed A, luego A solicita de B, después B solicita de C y, por último, C solicita de nuevo a A, formando un bucle.
Las fuentes ascendentes están diseñadas para evitar tales situaciones. Cuando una fuente busca un paquete de sus fuentes ascendentes, recibe los paquetes en la vista configurada para esa fuente ascendente. Esto significa que la fuente de consulta A no desencadena una consulta transitiva para alimentar C (A -> B -> C) porque las vistas son de solo lectura. Como resultado, la fuente A tendrá acceso a los paquetes de C que un usuario guardó previamente en B , pero no al conjunto completo de paquetes disponibles en C.
Esto coloca la responsabilidad en la fuente B para asegurarse de que sus paquetes locales representan un gráfico de dependencias completo. Al hacerlo, los usuarios que consumen el paquete de B a través de una fuente ascendente de otro feed pueden resolver correctamente el grafo de dependencias e instalar su paquete B deseado sin encontrar problemas.
Ejemplo: construir el conjunto de paquetes disponibles
Consideremos tres fuentes: Fabrikam, Contoso y AdventureWorks. En esta ilustración, examinaremos los paquetes disponibles en el feed de Fabrikam mientras presentamos fuentes ascendentes.
Inicialmente, Fabrikam no tiene orígenes ascendentes, lo que permite a los usuarios conectados a Fabrikam instalar solo las versiones 1.0.0 y 2.0.0 del paquete widgets. De forma similar, Contoso no tiene orígenes ascendentes, lo que restringe a los usuarios conectados a Contoso para instalar solo las versiones 1.0.0 y 3.0.0 del paquete Gizmos. Lo mismo se aplica a la fuente AdventureWorks, donde los usuarios conectados solo pueden instalar las versiones 1.0.0 y 2.0.0 del paquete Gadgets o la versión 1.0.0 del paquete Things.
Ahora, vamos a explorar el escenario en el que Contoso agrega AdventureWorks como origen ascendente. Cuando un usuario está conectado a Contoso, obtiene acceso a una gama más amplia de paquetes. Pueden instalar cualquier versión de Gizmos, Gadgets o Things. Por ejemplo, si el usuario instala Gadgets@2.0.0, esta versión específica del paquete se guarda en Contoso con un vínculo a AdventureWorks.
Ahora, vamos a considerar una situación en la que la fuente fabrikam agrega Contoso como origen ascendente. Un usuario conectado a Fabrikam puede instalar cualquier versión de Widgets, cualquier versión de Gizmos, pero solo las versiones guardadas de Gadgets (2.0.0).
El usuario no podrá instalar la versión 1.0.0 de Gadgets ni ninguna versión de las cosas, ya que un usuario de Contoso no guardó esas versiones del paquete.