You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2026/02/26 15:00:49 UTC

(incubator-devlake) branch main updated: use non-admin token for sonarQube (#8731)

This is an automated email from the ASF dual-hosted git repository.

klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new a215ca424 use non-admin token for sonarQube (#8731)
a215ca424 is described below

commit a215ca4246cb36778255cbeea1621ef1607fa1f2
Author: Joshua Smith <jb...@gmail.com>
AuthorDate: Thu Feb 26 08:00:45 2026 -0700

    use non-admin token for sonarQube (#8731)
---
 backend/plugins/sonarqube/api/blueprint_v200.go     | 3 ++-
 backend/plugins/sonarqube/api/remote_api.go         | 3 ++-
 config-ui/src/plugins/register/sonarqube/config.tsx | 6 +++++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/backend/plugins/sonarqube/api/blueprint_v200.go b/backend/plugins/sonarqube/api/blueprint_v200.go
index e4804534b..3bcf47785 100644
--- a/backend/plugins/sonarqube/api/blueprint_v200.go
+++ b/backend/plugins/sonarqube/api/blueprint_v200.go
@@ -131,7 +131,8 @@ func GetApiProject(
 	}
 	query := url.Values{}
 	query.Set("q", projectKey)
-	res, err := apiClient.Get("projects/search", query, nil)
+	// Use components/search_projects for consistency and normal-token (Browse) support.
+	res, err := apiClient.Get("components/search_projects", query, nil)
 	if err != nil {
 		return nil, err
 	}
diff --git a/backend/plugins/sonarqube/api/remote_api.go b/backend/plugins/sonarqube/api/remote_api.go
index 704cdabf5..d782a02cf 100644
--- a/backend/plugins/sonarqube/api/remote_api.go
+++ b/backend/plugins/sonarqube/api/remote_api.go
@@ -48,7 +48,8 @@ func querySonarqubeProjects(
 	if page.Page == 0 {
 		page.Page = 1
 	}
-	res, err := apiClient.Get("projects/search", url.Values{
+	// Use components/search_projects so non-admin (Browse) tokens can list projects.
+	res, err := apiClient.Get("components/search_projects", url.Values{
 		"p":  {fmt.Sprintf("%v", page.Page)},
 		"ps": {fmt.Sprintf("%v", page.PageSize)},
 		"q":  {keyword},
diff --git a/config-ui/src/plugins/register/sonarqube/config.tsx b/config-ui/src/plugins/register/sonarqube/config.tsx
index 5da394d20..966ce8bf5 100644
--- a/config-ui/src/plugins/register/sonarqube/config.tsx
+++ b/config-ui/src/plugins/register/sonarqube/config.tsx
@@ -55,7 +55,11 @@ export const SonarQubeConfig: IPluginConfig = {
           setErrors={setErrors}
         />
       ),
-      'token',
+      {
+        key: 'token',
+        subLabel:
+          'A token with Browse permission on the projects you want is sufficient for listing projects and collecting issues, hotspots, and file metrics. Listing Accounts (users) may require a system admin token on some SonarQube instances.',
+      },
       'proxy',
       {
         key: 'rateLimitPerHour',