From 49a0fb67293f2d12f0ca126d86f7eae199fa80b6 Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:07:08 +0000 Subject: [PATCH 1/8] initial implementation --- .github/workflows/danger.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index dbd611a697..dc00db100d 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -10,5 +10,5 @@ jobs: steps: - uses: getsentry/github-workflows/danger@17cc15eb58ea3687cd8f2714a4192dcee4aa09ef with: - extra-dangerfile: scripts/check-replay-stubs.js + extra-dangerfile: scripts/check-additional-danger.js extra-install-packages: "curl unzip openjdk-17-jre-headless" From 2d268abaf5642ee27e9555a44e693bdbe67c9c1e Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:08:43 +0000 Subject: [PATCH 2/8] truck forgot to sent the package --- scripts/check-additional-danger.js | 6 ++++++ scripts/check-github-label.js | 10 ++++++++++ 2 files changed, 16 insertions(+) create mode 100644 scripts/check-additional-danger.js create mode 100644 scripts/check-github-label.js diff --git a/scripts/check-additional-danger.js b/scripts/check-additional-danger.js new file mode 100644 index 0000000000..bdff008b00 --- /dev/null +++ b/scripts/check-additional-danger.js @@ -0,0 +1,6 @@ +module.exports = async function ({ fail, warn, message, markdown, danger}) { + const checkGitHubLabel = require('./check-github-label'); + const checkReplayStubs = require('./check-replay-stubs'); + await checkGitHubLabel({ fail, warn, __: message, ___: markdown, danger }), + await checkReplayStubs({ fail, warn, __: message, ___: markdown, danger }) +}; diff --git a/scripts/check-github-label.js b/scripts/check-github-label.js new file mode 100644 index 0000000000..b64db256cd --- /dev/null +++ b/scripts/check-github-label.js @@ -0,0 +1,10 @@ +module.exports = async function ({ fail, warn, __, ___, danger }) { + const isReadyForReview = danger.github.event.pull_request?.draft === false; + const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-for-merge'); + if (isReadyForReview && !isReeadyForMerge) { + fail('Pull request is not ready for merge, please add the "ready-for-merge" label to the pull request'); + } + else if (!isReadyForReview) { + warn('Pull request is a draft, please add the "ready-for-merge" label to the pull request when it is ready for review'); + } +}; From b2a9e1b494a79d56e0fde4db701bef6b20c8e816 Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:17:41 +0000 Subject: [PATCH 3/8] quality of life nits --- scripts/check-additional-danger.js | 18 +++++++++++++----- scripts/check-github-label.js | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/scripts/check-additional-danger.js b/scripts/check-additional-danger.js index bdff008b00..af91837641 100644 --- a/scripts/check-additional-danger.js +++ b/scripts/check-additional-danger.js @@ -1,6 +1,14 @@ -module.exports = async function ({ fail, warn, message, markdown, danger}) { - const checkGitHubLabel = require('./check-github-label'); - const checkReplayStubs = require('./check-replay-stubs'); - await checkGitHubLabel({ fail, warn, __: message, ___: markdown, danger }), - await checkReplayStubs({ fail, warn, __: message, ___: markdown, danger }) +async function safeRun(fnPath, { fail, warn, message, markdown, danger }) { + const fn = require(fnPath); + try { + return await fn({ fail, warn, message, markdown, danger }); + } catch (error) { + warn(`Failed to run ${fnPath}: ${error.message}`); + } +} + + +module.exports = async function ({ fail, warn, message, markdown, danger }) { + await safeRun('./check-github-label', { fail, warn, message, markdown, danger }); + await safeRun('./check-replay-stubs', { fail, warn, message, markdown, danger }); }; diff --git a/scripts/check-github-label.js b/scripts/check-github-label.js index b64db256cd..c3c3ddfaae 100644 --- a/scripts/check-github-label.js +++ b/scripts/check-github-label.js @@ -1,4 +1,5 @@ module.exports = async function ({ fail, warn, __, ___, danger }) { + console.log(JSON.stringify(danger)); const isReadyForReview = danger.github.event.pull_request?.draft === false; const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-for-merge'); if (isReadyForReview && !isReeadyForMerge) { From 7d36455caed89fbdaa08b62084be62880225aec7 Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:33:11 +0000 Subject: [PATCH 4/8] just error for all --- scripts/check-github-label.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/check-github-label.js b/scripts/check-github-label.js index c3c3ddfaae..62dcd53839 100644 --- a/scripts/check-github-label.js +++ b/scripts/check-github-label.js @@ -1,11 +1,7 @@ module.exports = async function ({ fail, warn, __, ___, danger }) { - console.log(JSON.stringify(danger)); - const isReadyForReview = danger.github.event.pull_request?.draft === false; const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-for-merge'); - if (isReadyForReview && !isReeadyForMerge) { + if (!isReeadyForMerge) { + // Ideally we could check for `isDraft` but this information is not easily available. fail('Pull request is not ready for merge, please add the "ready-for-merge" label to the pull request'); } - else if (!isReadyForReview) { - warn('Pull request is a draft, please add the "ready-for-merge" label to the pull request when it is ready for review'); - } }; From 8c6c098981c0c3a27ab9afce1448a9cfaf777a82 Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:51:43 +0000 Subject: [PATCH 5/8] danger react to label changes --- .github/workflows/danger.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index dc00db100d..d56e1585a1 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -2,7 +2,7 @@ name: Danger on: pull_request: - types: [opened, synchronize, reopened, edited, ready_for_review] + types: [opened, synchronize, reopened, edited, ready_for_review, labeled, unlabeled] jobs: danger: From b624a45f1de9c398329f4f0701e7fa68c314515c Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 10:55:39 +0000 Subject: [PATCH 6/8] refresh CI From 36b2a00ab218f143146c4df6376035a154b15faf Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 11:06:12 +0000 Subject: [PATCH 7/8] add logs --- scripts/check-github-label.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/check-github-label.js b/scripts/check-github-label.js index 62dcd53839..d568602c6e 100644 --- a/scripts/check-github-label.js +++ b/scripts/check-github-label.js @@ -1,4 +1,5 @@ module.exports = async function ({ fail, warn, __, ___, danger }) { + console.log(JSON.stringify(danger.github.issue.labels, null, 2)); const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-for-merge'); if (!isReeadyForMerge) { // Ideally we could check for `isDraft` but this information is not easily available. From 46ce60122616adb6dbb2a301ccdfd3777f3ab3e4 Mon Sep 17 00:00:00 2001 From: lucas Date: Wed, 12 Nov 2025 11:07:42 +0000 Subject: [PATCH 8/8] fixed label name --- scripts/check-github-label.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/check-github-label.js b/scripts/check-github-label.js index d568602c6e..1ebc8e3552 100644 --- a/scripts/check-github-label.js +++ b/scripts/check-github-label.js @@ -1,8 +1,7 @@ module.exports = async function ({ fail, warn, __, ___, danger }) { - console.log(JSON.stringify(danger.github.issue.labels, null, 2)); - const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-for-merge'); + const isReeadyForMerge = danger.github.issue.labels.some(label => label.name === 'ready-to-merge'); if (!isReeadyForMerge) { // Ideally we could check for `isDraft` but this information is not easily available. - fail('Pull request is not ready for merge, please add the "ready-for-merge" label to the pull request'); + fail('Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request'); } };