Allow to set default approval mode (#5406)

This commit is contained in:
qwerty287 2025-08-11 12:59:02 +02:00 committed by GitHub
parent 6711a674a2
commit 40e383866a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 29 additions and 2 deletions

View file

@ -153,6 +153,12 @@ var flags = append([]cli.Flag{
Usage: "The default value for allowing pull requests on a repo.",
Value: true,
},
&cli.StringFlag{
Sources: cli.EnvVars("WOODPECKER_DEFAULT_APPROVAL_MODE"),
Name: "default-approval-mode",
Usage: "The default value for allowing pull requests on a repo.",
Value: "forks",
},
&cli.StringSliceFlag{
Sources: cli.EnvVars("WOODPECKER_DEFAULT_CANCEL_PREVIOUS_PIPELINE_EVENTS"),
Name: "default-cancel-previous-pipeline-events",

View file

@ -180,6 +180,13 @@ func setupEvilGlobals(ctx context.Context, c *cli.Command, s store.Store) (err e
// Pull requests
server.Config.Pipeline.DefaultAllowPullRequests = c.Bool("default-allow-pull-requests")
// Approval mode
approvalMode := model.ApprovalMode(c.String("default-approval-mode"))
if !approvalMode.Valid() {
return fmt.Errorf("approval mode %s is not valid", approvalMode)
}
server.Config.Pipeline.DefaultApprovalMode = approvalMode
// Cloning
server.Config.Pipeline.DefaultClonePlugin = c.String("default-clone-plugin")
server.Config.Pipeline.TrustedClonePlugins = c.StringSlice("plugins-trusted-clone")
@ -189,7 +196,11 @@ func setupEvilGlobals(ctx context.Context, c *cli.Command, s store.Store) (err e
_events := c.StringSlice("default-cancel-previous-pipeline-events")
events := make([]model.WebhookEvent, 0, len(_events))
for _, v := range _events {
events = append(events, model.WebhookEvent(v))
e := model.WebhookEvent(v)
if err := e.Validate(); err != nil {
return err
}
events = append(events, e)
}
server.Config.Pipeline.DefaultCancelPreviousPipelineEvents = events
server.Config.Pipeline.DefaultTimeout = c.Int64("default-pipeline-timeout")

View file

@ -808,6 +808,15 @@ The default setting for allowing pull requests on a repo.
---
### DEFAULT_APPROVAL_MODE
- Name: `WOODPECKER_DEFAULT_APPROVAL_MODE`
- Default: `forks`
The default setting for the approval mode on a repo. Possible values: `none`, `forks`, `pull_requests` or `all_events`.
---
### DEFAULT_CANCEL_PREVIOUS_PIPELINE_EVENTS
- Name: `WOODPECKER_DEFAULT_CANCEL_PREVIOUS_PIPELINE_EVENTS`

View file

@ -91,7 +91,7 @@ func PostRepo(c *gin.Context) {
repo.Update(from)
} else {
repo = from
repo.RequireApproval = model.RequireApprovalForks
repo.RequireApproval = server.Config.Pipeline.DefaultApprovalMode
repo.AllowPull = server.Config.Pipeline.DefaultAllowPullRequests
repo.AllowDeploy = false
repo.CancelPreviousPipelineEvents = server.Config.Pipeline.DefaultCancelPreviousPipelineEvents

View file

@ -68,6 +68,7 @@ var Config = struct {
AuthenticatePublicRepos bool
DefaultAllowPullRequests bool
DefaultCancelPreviousPipelineEvents []model.WebhookEvent
DefaultApprovalMode model.ApprovalMode
DefaultWorkflowLabels map[string]string
DefaultClonePlugin string
TrustedClonePlugins []string