Skip to content

Commit

Permalink
Add PR locking configuration at the digger.yml level
Browse files Browse the repository at this point in the history
  • Loading branch information
Evan Stachowiak committed Jun 14, 2024
1 parent 765cf7c commit a711c5e
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 15 deletions.
32 changes: 17 additions & 15 deletions backend/controllers/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,21 +486,23 @@ func handlePullRequestEvent(gh utils.GithubClientProvider, payload *github.PullR
}

// perform locking/unlocking in backend
for _, project := range impactedProjects {
prLock := dg_locking.PullRequestLock{
InternalLock: locking.BackendDBLock{
OrgId: organisationId,
},
CIService: ghService,
Reporter: comment_updater.NoopReporter{},
ProjectName: project.Name,
ProjectNamespace: repoFullName,
PrNumber: prNumber,
}
err = PerformLockingActionFromCommand(prLock, *diggerCommand)
if err != nil {
utils.InitCommentReporter(ghService, prNumber, fmt.Sprintf(":x: Failed perform lock action on project: %v %v", project.Name, err))
return fmt.Errorf("failed to perform lock action on project: %v, %v", project.Name, err)
if dg_configuration.PrLocks{
for _, project := range impactedProjects {
prLock := dg_locking.PullRequestLock{
InternalLock: locking.BackendDBLock{
OrgId: organisationId,
},
CIService: ghService,
Reporter: comment_updater.NoopReporter{},
ProjectName: project.Name,
ProjectNamespace: repoFullName,
PrNumber: prNumber,
}
err = PerformLockingActionFromCommand(prLock, *diggerCommand)
if err != nil {
utils.InitCommentReporter(ghService, prNumber, fmt.Sprintf(":x: Failed perform lock action on project: %v %v", project.Name, err))
return fmt.Errorf("failed to perform lock action on project: %v, %v", project.Name, err)
}
}
}

Expand Down
2 changes: 2 additions & 0 deletions docs/reference/digger.yml.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ auto_merge: true
```yml
traverse_to_nested_projects: true
auto_merge: false
pr_locks: true
projects:
- name: prod
dir: prod
Expand Down Expand Up @@ -101,6 +102,7 @@ workflows:
| --------------------------- | ---------------------------------------------------------- | ------- | -------- | ------------------------------------------------------ | ----- |
| telemetry | boolean | true | no | allows collecting anonymised usage and debugging data | |
| auto_merge | boolean | false | no | automatically merge pull requests when all checks pass | |
| pr_locks | boolean | true | no | Enable PR-level locking | |
| projects | array of [Projects](/reference/digger.yml#project) | \[\] | no | list of projects to manage | |
| generate_projects | [GenerateProjects](/reference/digger.yml#generateprojects) | {} | no | generate projects from a directory structure | |
| workflows | map of [Workflows](/reference/digger.yml#workflows) | {} | no | workflows and configurations to run on events | |
Expand Down
1 change: 1 addition & 0 deletions libs/digger_config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ type DiggerConfig struct {
AllowDraftPRs bool
CommentRenderMode string
DependencyConfiguration DependencyConfiguration
PrLocks bool
Projects []Project
AutoMerge bool
Telemetry bool
Expand Down
6 changes: 6 additions & 0 deletions libs/digger_config/converters.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,12 @@ func ConvertDiggerYamlToConfig(diggerYaml *DiggerConfigYaml) (*DiggerConfig, gra
diggerConfig.MentionDriftedProjectsInPR = false
}

if diggerYaml.PrLocks != nil {
diggerConfig.PrLocks = *diggerYaml.PrLocks
} else {
diggerConfig.PrLocks = true
}

if diggerYaml.Telemetry != nil {
diggerConfig.Telemetry = *diggerYaml.Telemetry
} else {
Expand Down
1 change: 1 addition & 0 deletions libs/digger_config/yaml.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type DiggerConfigYaml struct {
ApplyAfterMerge *bool `yaml:"apply_after_merge"`
AllowDraftPRs *bool `yaml:"allow_draft_prs"`
DependencyConfiguration *DependencyConfigurationYaml `yaml:"dependency_configuration"`
PrLocks *bool `yaml:"pr_locks"`
Projects []*ProjectYaml `yaml:"projects"`
AutoMerge *bool `yaml:"auto_merge"`
CommentRenderMode *string `yaml:"comment_render_mode"`
Expand Down

0 comments on commit a711c5e

Please sign in to comment.