En este artículo te vamos a enseñar como solucionar uno de los problemas típicos al ejecutar tu pipeline en AzureDevOps.
En nuestro caso tenemos un repositorio en un proyecto que publica artefactos en Azure Artifacts. En otro proyecto diferente y desde otro repo diferente tenemos estos artifacts como depedencia. Por lo tanto al ejecutar el pipeline de compilación con maven necesitemos poder descargarnos estas dependencias. El problema es que nuestro pipeline cuando intenta descargarse estos jars nos muestra el siguiente error:
Vamos a ver la primera línea de error en su totalidad:
[ERROR] Failed to execute goal on project helloWorld: Could not resolve dependencies for project com.[...]-SNAPSHOT: Failed to collect dependencies at com[...]-SNAPSHOT: Failed to read artifact descriptor for com[...]-SNAPSHOT: Could not transfer artifact com[...]-SNAPSHOT from/to Ingrid (https://[...].pkgs.visualstudio.com/_packaging/[...]/maven/v1): authorization failed for https://[...].pkgs.visualstudio.com/_packaging/[...]/maven/v1/com[...]-SNAPSHOT/[...]-SNAPSHOT.pom, status: 403 Forbidden - User 'be8f1cfe[...]3' lacks permission to complete this action. You need to have 'ReadPackages'. (DevOps Activity ID: 4BEB4A79[...]9) -> [Help 1]
Como vemos el problema, se debe a que el usuario que ejecuta la pipeline no tiene permisos para accedes y descargar los paquetes del artifacts. Así que sí, es un problema de configuración de permisos.
Pues vamos allá.
El primer paso es acceder a Artifacts dentro de Azure Devops.
En el desplegable de arriba a la izquierda selecciona el feed al que quieres acceder desde tu pipeline.
Accede a la configuración (engranaje de la parte superior) o feed settings
Accede a «Permissions»
En este punto tenemos que añadir el usuario Build Service de nuestro proyecto con permisos de Contribuitor.
Si buscamos directamente el usuario de nombre Build Service, el sistema no nos devolverá nada, por lo que para localizar el usuario debemos introducir el nombre del proyecto (con las primeras letras es suficiente) y cuando localicemos el usuario seleccionarlo.
Y con estos pasos, volvemos a ejecutar nuestra pipeline, y vemos que, al menos, este error ya no nos dá.