Skip to content

Azure DevOps On-Premises Support - #9014

Open
Tugrulhankars wants to merge 1 commit into
apache:mainfrom
Tugrulhankars:main
Open

Azure DevOps On-Premises Support#9014
Tugrulhankars wants to merge 1 commit into
apache:mainfrom
Tugrulhankars:main

Conversation

@Tugrulhankars

Copy link
Copy Markdown

Summary

This PR introduces full support for Azure DevOps On-Premises (Server) in the azuredevops_go plugin, allowing enterprise users with self-hosted Azure DevOps instances to ingest DevOps data and compute DORA metrics.

Key Changes:

  1. Connection & Auth Model (backend/plugins/azuredevops_go/models/connection.go):
    • Added Endpoint and Username fields to support custom On-Premises base URLs and HTTP Basic Authentication.
    • Updated base URL normalization to handle custom domains/IPs with subpaths (e.g. http://<IP>/DefaultCollection).
  2. Database Migration (backend/plugins/azuredevops_go/models/migrationscripts/):
    • Added migration script 20260726_add_username_to_azuredevops.go to add username and endpoint columns to tool_azuredevops_go_connections.
  3. GitExtractor IIS NTLM Auth Fix (backend/plugins/gitextractor/parser/clone_gitcli.go):
    • Injected -c http.extraHeader="Authorization: Basic <base64>" during git clone execution. This transmits the Basic Auth header on the initial request, bypassing IIS 401 NTLM challenges on Azure DevOps Server when authenticating via PATs.
    • Abstracted DiffLine model to remove non-CGO libgit2 build dependencies on Windows environments.
  4. Config-UI (config-ui/src/plugins/register/azure/config.tsx & utils/request.ts):
    • Exposed Endpoint and Username fields in the Azure DevOps Go connection form.
    • Fixed false-positive login redirects when remote scope connection tests return HTTP 401.

Does this close any open issues?

Closes 8985

Screenshots

Include any relevant screenshots here.

Other Information

  • Backward Compatibility: 100% backward compatible with existing Azure DevOps Cloud (dev.azure.com) connections.
  • Tested: Tested and verified with live Azure DevOps Server (On-Premises) instance for data collection and Grafana DORA metric calculation.

@Tugrulhankars
Tugrulhankars force-pushed the main branch 2 times, most recently from 9191c1f to 90e3ab4 Compare August 11, 2026 17:20
@Tugrulhankars

Tugrulhankars commented Aug 11, 2026

Copy link
Copy Markdown
Author

Hi @klesh 👋

I've cleaned up this PR significantly:

Rebased on latest main, all conflicts resolved
Reduced PR scope from ~40 files to 25 (removed unrelated changes like yarn.lock, docker-compose rename, Windows stubs, static plugin registration)
Translated all comments to English, removed debug code
Added 12 unit tests covering Cloud and On-Premises scenarios (all passing)
Fixed a bug where remote scopes used a hardcoded VSSPS URL that doesn't work for On-Premises
Could someone please approve the CI workflows? Happy to address any review feedback. Thank you!

@klesh

klesh commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Hi @klesh 👋

I've cleaned up this PR significantly:

Rebased on latest main, all conflicts resolved Reduced PR scope from ~40 files to 25 (removed unrelated changes like yarn.lock, docker-compose rename, Windows stubs, static plugin registration) Translated all comments to English, removed debug code Added 12 unit tests covering Cloud and On-Premises scenarios (all passing) Fixed a bug where remote scopes used a hardcoded VSSPS URL that doesn't work for On-Premises Could someone please approve the CI workflows? Happy to address any review feedback. Thank you!

Good work. Please fix the golint error and i will take look.

@Tugrulhankars

Copy link
Copy Markdown
Author

Hi @klesh 👋
I've cleaned up this PR significantly:
Rebased on latest main, all conflicts resolved Reduced PR scope from ~40 files to 25 (removed unrelated changes like yarn.lock, docker-compose rename, Windows stubs, static plugin registration) Translated all comments to English, removed debug code Added 12 unit tests covering Cloud and On-Premises scenarios (all passing) Fixed a bug where remote scopes used a hardcoded VSSPS URL that doesn't work for On-Premises Could someone please approve the CI workflows? Happy to address any review feedback. Thank you!

Good work. Please fix the golint error and i will take look.

Hi @klesh 👋
I've cleaned up this PR significantly:
Rebased on latest main, all conflicts resolved Reduced PR scope from ~40 files to 25 (removed unrelated changes like yarn.lock, docker-compose rename, Windows stubs, static plugin registration) Translated all comments to English, removed debug code Added 12 unit tests covering Cloud and On-Premises scenarios (all passing) Fixed a bug where remote scopes used a hardcoded VSSPS URL that doesn't work for On-Premises Could someone please approve the CI workflows? Happy to address any review feedback. Thank you!

Good work. Please fix the golint error and i will take look.

Thanks @klesh! I've fixed all the issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants