add webhook on create repo

hackweek-2024-team-14
Enver Bisevac 2024-05-28 23:21:09 +02:00
parent 80992f87ea
commit 00f9dfa3cd
4 changed files with 49 additions and 24 deletions

View File

@ -18,6 +18,7 @@ import (
"context"
"encoding/json"
"fmt"
"github.com/harness/gitness/app/api/controller/webhook"
"strconv"
"strings"
@ -91,6 +92,7 @@ type Controller struct {
identifierCheck check.RepoIdentifier
repoCheck Check
publicAccess publicaccess.Service
webhook *webhook.Controller
}
func NewController(
@ -118,6 +120,7 @@ func NewController(
identifierCheck check.RepoIdentifier,
repoCheck Check,
publicAccess publicaccess.Service,
webhook *webhook.Controller,
) *Controller {
return &Controller{
defaultBranch: config.Git.DefaultBranch,
@ -144,6 +147,7 @@ func NewController(
identifierCheck: identifierCheck,
repoCheck: repoCheck,
publicAccess: publicAccess,
webhook: webhook,
}
}

View File

@ -19,6 +19,7 @@ import (
"context"
"database/sql"
"fmt"
"github.com/harness/gitness/app/api/controller/webhook"
"strings"
"time"
@ -175,6 +176,24 @@ func (c *Controller) Create(ctx context.Context, session *auth.Session, in *Crea
}
}
_, err = c.webhook.Create(ctx, session, repo.Path, &webhook.CreateInput{
UID: repo.Identifier + "-Hackweek2024",
Identifier: repo.Identifier + "-Hackweek2024",
DisplayName: "Hackweek2024",
Description: "",
URL: "https://chrishamper.pr2.harness.io/gateway/pipeline/api/webhook/custom/gsJe3wvATxCX7eRcaiop1w/v3?accountIdentifier=dhGJDx_-S_yOsLtQmoO96Q&orgIdentifier=default&projectIdentifier=Hack_Week_2024&pipelineIdentifier=sastprcheck&triggerIdentifier=prcheck",
Secret: "",
Enabled: true,
Insecure: true,
Triggers: []enum.WebhookTrigger{
enum.WebhookTriggerPullReqCreated,
enum.WebhookTriggerPullReqBranchUpdated,
},
}, false)
if err != nil {
log.Ctx(ctx).Warn().Err(err).Int64("repo_id", repo.ID).Msg("failed to create webhook")
}
return repoOutput, nil
}

View File

@ -16,6 +16,7 @@ package repo
import (
"github.com/harness/gitness/app/api/controller/limiter"
"github.com/harness/gitness/app/api/controller/webhook"
"github.com/harness/gitness/app/auth/authz"
repoevents "github.com/harness/gitness/app/events/repo"
"github.com/harness/gitness/app/services/codeowners"
@ -67,13 +68,14 @@ func ProvideController(
identifierCheck check.RepoIdentifier,
repoChecks Check,
publicAccess publicaccess.Service,
webhookCtrl *webhook.Controller,
) *Controller {
return NewController(config, tx, urlProvider,
authorizer,
repoStore, spaceStore, pipelineStore,
principalStore, ruleStore, settings, principalInfoCache, protectionManager, rpcClient, importer,
codeOwners, reporeporter, indexer, limiter, locker, auditService, mtxManager, identifierCheck,
repoChecks, publicAccess)
repoChecks, publicAccess, webhookCtrl)
}
func ProvideRepoCheck() Check {

View File

@ -36,8 +36,8 @@ import (
"github.com/harness/gitness/app/auth/authn"
"github.com/harness/gitness/app/auth/authz"
"github.com/harness/gitness/app/bootstrap"
events4 "github.com/harness/gitness/app/events/git"
events3 "github.com/harness/gitness/app/events/pullreq"
events3 "github.com/harness/gitness/app/events/git"
events4 "github.com/harness/gitness/app/events/pullreq"
events2 "github.com/harness/gitness/app/events/repo"
"github.com/harness/gitness/app/pipeline/canceler"
"github.com/harness/gitness/app/pipeline/commit"
@ -200,7 +200,25 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
lockerLocker := locker.ProvideLocker(mutexManager)
repoIdentifier := check.ProvideRepoIdentifierCheck()
repoCheck := repo.ProvideRepoCheck()
repoController := repo.ProvideController(config, transactor, provider, authorizer, repoStore, spaceStore, pipelineStore, principalStore, ruleStore, settingsService, principalInfoCache, protectionManager, gitInterface, repository, codeownersService, reporter, indexer, resourceLimiter, lockerLocker, auditService, mutexManager, repoIdentifier, repoCheck, publicaccessService)
webhookConfig := server.ProvideWebhookConfig(config)
webhookStore := database.ProvideWebhookStore(db)
webhookExecutionStore := database.ProvideWebhookExecutionStore(db)
readerFactory, err := events3.ProvideReaderFactory(eventsSystem)
if err != nil {
return nil, err
}
eventsReaderFactory, err := events4.ProvideReaderFactory(eventsSystem)
if err != nil {
return nil, err
}
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
webhookService, err := webhook.ProvideService(ctx, webhookConfig, readerFactory, eventsReaderFactory, webhookStore, webhookExecutionStore, repoStore, pullReqStore, pullReqActivityStore, provider, principalStore, gitInterface, encrypter)
if err != nil {
return nil, err
}
webhookController := webhook2.ProvideController(webhookConfig, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter)
repoController := repo.ProvideController(config, transactor, provider, authorizer, repoStore, spaceStore, pipelineStore, principalStore, ruleStore, settingsService, principalInfoCache, protectionManager, gitInterface, repository, codeownersService, reporter, indexer, resourceLimiter, lockerLocker, auditService, mutexManager, repoIdentifier, repoCheck, publicaccessService, webhookController)
reposettingsController := reposettings.ProvideController(authorizer, repoStore, settingsService, auditService)
executionStore := database.ProvideExecutionStore(db)
checkStore := database.ProvideCheckStore(db, principalInfoCache)
@ -235,25 +253,15 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
connectorController := connector.ProvideController(connectorStore, authorizer, spaceStore)
templateController := template.ProvideController(templateStore, authorizer, spaceStore)
pluginController := plugin.ProvideController(pluginStore)
pullReqStore := database.ProvidePullReqStore(db, principalInfoCache)
pullReqActivityStore := database.ProvidePullReqActivityStore(db, principalInfoCache)
codeCommentView := database.ProvideCodeCommentView(db)
pullReqReviewStore := database.ProvidePullReqReviewStore(db)
pullReqReviewerStore := database.ProvidePullReqReviewerStore(db, principalInfoCache)
pullReqFileViewStore := database.ProvidePullReqFileViewStore(db)
eventsReporter, err := events3.ProvideReporter(eventsSystem)
eventsReporter, err := events4.ProvideReporter(eventsSystem)
if err != nil {
return nil, err
}
migrator := codecomments.ProvideMigrator(gitInterface)
readerFactory, err := events4.ProvideReaderFactory(eventsSystem)
if err != nil {
return nil, err
}
eventsReaderFactory, err := events3.ProvideReaderFactory(eventsSystem)
if err != nil {
return nil, err
}
repoGitInfoView := database.ProvideRepoGitInfoView(db)
repoGitInfoCache := cache.ProvideRepoGitInfoCache(repoGitInfoView)
pullreqService, err := pullreq.ProvideService(ctx, config, readerFactory, eventsReaderFactory, eventsReporter, gitInterface, repoGitInfoCache, repoStore, pullReqStore, pullReqActivityStore, codeCommentView, migrator, pullReqFileViewStore, pubSub, provider, streamer)
@ -261,15 +269,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
return nil, err
}
pullreqController := pullreq2.ProvideController(transactor, provider, authorizer, pullReqStore, pullReqActivityStore, codeCommentView, pullReqReviewStore, pullReqReviewerStore, repoStore, principalStore, principalInfoCache, pullReqFileViewStore, membershipStore, checkStore, gitInterface, eventsReporter, migrator, pullreqService, protectionManager, streamer, codeownersService, lockerLocker)
webhookConfig := server.ProvideWebhookConfig(config)
webhookStore := database.ProvideWebhookStore(db)
webhookExecutionStore := database.ProvideWebhookExecutionStore(db)
webhookService, err := webhook.ProvideService(ctx, webhookConfig, readerFactory, eventsReaderFactory, webhookStore, webhookExecutionStore, repoStore, pullReqStore, pullReqActivityStore, provider, principalStore, gitInterface, encrypter)
if err != nil {
return nil, err
}
webhookController := webhook2.ProvideController(webhookConfig, authorizer, webhookStore, webhookExecutionStore, repoStore, webhookService, encrypter)
reporter2, err := events4.ProvideReporter(eventsSystem)
reporter2, err := events3.ProvideReporter(eventsSystem)
if err != nil {
return nil, err
}