Ir al contenido

Azure DevOps

Azure DevOps se conecta con un token de acceso personal (PAT). Solo se admite Azure DevOps Services (dev.azure.com); Azure DevOps Server no.

En Azure DevOps abre User settings → Personal access tokens → New Token, elige la organización y concede:

  • Code (Read & Write)
  • Pull Request Threads (Read & Write) - para los comentarios de PR de ArchPilot.

Code (Read) por sí solo basta para un uso de solo lectura; entonces ArchPilot no puede comentar. Azure DevOps muestra el token una sola vez.

  1. Credentials → Add credential → Azure DevOps.
  2. Introduce solo el slug de la organización: la parte que va después de dev.azure.com/ (p. ej. myorg). AppArch añade dev.azure.com/ por su cuenta.
  3. Pega el PAT. El nombre de proyecto es opcional y limita la lista de repositorios a un proyecto.
  4. Guarda: la conexión se prueba contra dev.azure.com.

Azure DevOps no ofrece un endpoint para leer los scopes o la caducidad de un token; por eso la prueba de conexión es la única comprobación y la credencial no muestra fecha de caducidad.

trigger: none
pr: ['*']
pool: { vmImage: ubuntu-latest }
steps:
- checkout: self
fetchDepth: 0 # the target branch is then in the clone: the change's own files and its merge base
- script: |
echo "$(APPARCH_INSTALLATION_KEY)" | docker login hub.apparch.io -u "$(APPARCH_INSTALLATION_ID)" --password-stdin
docker run --rm -v "$(Build.SourcesDirectory):/workspace:ro" \
-e APPARCH_Collector__Token="$(APPARCH_TOKEN)" \
-e APPARCH_Collector__ApiUrl="https://api.yourdomain.com" \
-e SYSTEM_PULLREQUEST_PULLREQUESTID="$(System.PullRequest.PullRequestId)" \
-e SYSTEM_PULLREQUEST_TARGETBRANCH="$(System.PullRequest.TargetBranch)" \
-e SYSTEM_TEAMPROJECT="$(System.TeamProject)" \
-e BUILD_REPOSITORY_NAME="$(Build.Repository.Name)" \
-e SYSTEM_COLLECTIONURI="$(System.CollectionUri)" \
-e BUILD_SOURCEVERSION="$(Build.SourceVersion)" \
hub.apparch.io/collectors/dotnet:latest /workspace

Define APPARCH_TOKEN, APPARCH_INSTALLATION_ID y APPARCH_INSTALLATION_KEY como variables secretas del pipeline. La primera es el token de runner del proyecto; las otras dos son la credencial de instalación con la que se autentica la descarga de la imagen. La variable SYSTEM_PULLREQUEST_PULLREQUESTID es la que indica al runner que está revisando una pull request.