From 4cdf291a95483e7a6c21fc3cb8396fd35ff0d1d8 Mon Sep 17 00:00:00 2001 From: Lena <241371603+zelenenka@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:57:50 +0100 Subject: [PATCH] Avoid some false positives for "closed bugs w/comments" board (#49896) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit More precisely, the name of the GitHub project board in question is “Closed bugs with new comments”, and since GitHub seems to do the closing and the commenting separately (and, crucially for this automation, in that order) when the closer uses the “Close with comment” functionality, we want to skip the comments added within 30 seconds after the closing. Release Notes: - N/A --- .../add_commented_closed_issue_to_project.yml | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.github/workflows/add_commented_closed_issue_to_project.yml b/.github/workflows/add_commented_closed_issue_to_project.yml index 02bd766c92fce5dd399459845ef911c8dc9481d0..5871f5ae0e61f97557ce926c4a2627841f50560d 100644 --- a/.github/workflows/add_commented_closed_issue_to_project.yml +++ b/.github/workflows/add_commented_closed_issue_to_project.yml @@ -20,14 +20,29 @@ jobs: runs-on: namespace-profile-2x4-ubuntu-2404 timeout-minutes: 5 steps: - - id: get-app-token + - id: is-post-close-comment + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const closedAt = new Date(context.payload.issue.closed_at); + const commentedAt = new Date(context.payload.comment.created_at); + const diffSeconds = Math.abs(commentedAt - closedAt) / 1000; + if (diffSeconds <= 30) { + core.notice(`Skipping — comment was likely part of "Close with comment" (${diffSeconds}s gap)`); + return false; + } + return true; + + - if: steps.is-post-close-comment.outputs.result == 'true' + id: get-app-token uses: actions/create-github-app-token@bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1 # v2.1.4 with: app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }} private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }} owner: zed-industries - - id: check-staff + - if: steps.is-post-close-comment.outputs.result == 'true' + id: check-staff uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ steps.get-app-token.outputs.token }} @@ -47,16 +62,16 @@ jobs: throw error; } - - if: steps.check-staff.outputs.result == 'true' + - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'true' run: | echo "::notice::Skipping issue #${{ github.event.issue.number }} - commenter is staff member" # github-script outputs are JSON strings, so we compare against 'false' (string) - - if: steps.check-staff.outputs.result == 'false' + - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'false' run: | echo "::notice::Adding issue #${{ github.event.issue.number }} to project (comment by ${{ github.event.comment.user.login }})" - - if: steps.check-staff.outputs.result == 'false' + - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'false' uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2 with: project-url: https://github.com/orgs/zed-industries/projects/73