diff --git a/.mergify.yml b/.mergify.yml index dda9fd7a..06257a13 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -31,6 +31,31 @@ pull_request_rules: - check-success=Validate PR title - check-success=build - base=main + - check-success=Validate PR title + - or: + - check-success=bedrock-pull / build + - check-skipped=bedrock-pull / build + - or: + - check-success=checks-pull / build + - check-skipped=checks-pull / build + - or: + - check-success=containers-pull / build + - check-skipped=containers-pull / build + - or: + - check-success=fifoqueue-pull / build + - check-skipped=fifoqueue-pull / build + - or: + - check-success=github-pull / build + - check-skipped=github-pull / build + - or: + - check-success=postgres-pull / build + - check-skipped=postgres-pull / build + - or: + - check-success=redis-pull / build + - check-skipped=redis-pull / build + - or: + - check-success=websockets-pull / build + - check-skipped=websockets-pull / build - name: requires manual merge conditions: - files=.mergify.yml @@ -43,9 +68,32 @@ pull_request_rules: - "#changes-requested-reviews-by=0" - "#review-threads-unresolved=0" - -approved-reviews-by~=author - - check-success=Validate PR title - - check-success=build - base=main + - check-success=Validate PR title + - or: + - check-success=bedrock-pull / build + - check-skipped=bedrock-pull / build + - or: + - check-success=checks-pull / build + - check-skipped=checks-pull / build + - or: + - check-success=containers-pull / build + - check-skipped=containers-pull / build + - or: + - check-success=fifoqueue-pull / build + - check-skipped=fifoqueue-pull / build + - or: + - check-success=github-pull / build + - check-skipped=github-pull / build + - or: + - check-success=postgres-pull / build + - check-skipped=postgres-pull / build + - or: + - check-success=redis-pull / build + - check-skipped=redis-pull / build + - or: + - check-success=websockets-pull / build + - check-skipped=websockets-pull / build actions: comment: message: Thank you for contributing! Your pull request contains mergify diff --git a/generate-workflows.main.w b/generate-workflows.main.w index e28750a1..34b6878d 100644 --- a/generate-workflows.main.w +++ b/generate-workflows.main.w @@ -9,6 +9,8 @@ let workflowdir = ".github/workflows"; fs.remove(".github/workflows"); fs.mkdir(".github/workflows"); +let libs = MutArray[]; + for file in fs.readdir(".") { if !fs.exists("{file}/package.json") { log("skipping {file}"); @@ -16,8 +18,9 @@ for file in fs.readdir(".") { } new l.Library(workflowdir, file) as file; + libs.push(file); } new stale.StaleWorkflow(workflowdir); -new mergify.MergifyWorkflow(); +new mergify.MergifyWorkflow(libs.copy()); new prlint.PullRequestLintWorkflow(workflowdir); diff --git a/mergify.w b/mergify.w index 22da1de7..16ed7e2e 100644 --- a/mergify.w +++ b/mergify.w @@ -1,7 +1,18 @@ bring fs; pub class MergifyWorkflow { - new() { + new(libs: Array) { + let buildChecks = MutArray[]; + buildChecks.push("check-success=Validate PR title"); + for lib in libs { + buildChecks.push(Json { + "or": [ + "check-success={lib}-pull / build", + "check-skipped={lib}-pull / build", + ] + }); + } + fs.writeYaml(".mergify.yml", { "queue_rules": [ { @@ -25,7 +36,7 @@ pub class MergifyWorkflow { "commit_message_template": "\{\{ title \}\} (#\{\{ number \}\})\n\{\{ body \}\}" } }, - "conditions": [ + "conditions": Array[ "-files=.mergify.yml", "-title~=(?i)wip", "-label~=(🚧 pr/do-not-merge|⚠️ pr/review-mutation)", @@ -39,11 +50,11 @@ pub class MergifyWorkflow { "check-success=Validate PR title", "check-success=build", "base=main", - ] + ].concat(buildChecks.copy()) }, { "name": "requires manual merge", - "conditions": [ + "conditions": Array[ "files=.mergify.yml", "-title~=(?i)wip", "-label~=(🚧 pr/do-not-merge|⚠️ pr/review-mutation|⚠️ mergify/review-config)", @@ -53,10 +64,8 @@ pub class MergifyWorkflow { "#changes-requested-reviews-by=0", "#review-threads-unresolved=0", "-approved-reviews-by~=author", - "check-success=Validate PR title", - "check-success=build", "base=main" - ], + ].concat(buildChecks.copy()), "actions": { "comment": { "message": "Thank you for contributing! Your pull request contains mergify configuration changes and needs manual merge from a maintainer (be sure to [allow changes to be pushed to your fork](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork))."