Provisioning: add webhook support in API Server and Operator (#110673)

* Provisioning: add webhook support in API Server

* updating Extra interface

* adding extra with workers interface

* reverting extraWithWorkers in RegisterAPIService

* adding extra job worker provider

* adding new extra job provider

* Wire things differently

* Remove unused GetJobs

* Pass url variable as string

* Support webhooks in controller

* Fix condition

* Change the naming

---------

Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
This commit is contained in:
Daniele Stefano Ferru
2025-09-08 19:39:05 +02:00
committed by GitHub
co-authored by Roberto Jimenez Sanchez
parent 32e997d282
commit 76976ef648
10 changed files with 144 additions and 38 deletions
+9 -3
View File
@@ -26,6 +26,7 @@ import (
"github.com/grafana/grafana/apps/provisioning/pkg/repository/github"
"github.com/grafana/grafana/apps/provisioning/pkg/repository/local"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
"github.com/grafana/grafana/pkg/registry/apis/provisioning/webhooks"
secretdecrypt "github.com/grafana/grafana/pkg/registry/apis/secret/decrypt"
)
@@ -55,6 +56,7 @@ type provisioningControllerConfig struct {
// audiences =
// [operator]
// provisioning_server_url =
// provisioning_server_public_url =
// dashboards_server_url =
// folders_server_url =
// tls_insecure =
@@ -233,12 +235,16 @@ func setupRepoFactory(
switch provisioning.RepositoryType(t) {
case provisioning.GitHubRepositoryType:
var webhook *webhooks.WebhookExtraBuilder
provisioningAppURL := operatorSec.Key("provisioning_server_public_url").String()
if provisioningAppURL != "" {
webhook = webhooks.ProvideWebhooks(provisioningAppURL)
}
extras = append(extras, github.Extra(
decrypter,
github.ProvideFactory(),
// TODO: we need to plug the webhook builder here for webhooks to be created in repository controller
// https://github.com/grafana/git-ui-sync-project/issues/455
nil,
webhook,
),
)
case provisioning.LocalRepositoryType: