zed/.github/workflows/add_commented_closed_issue_to_project.yml
Lena 3e8d013f77
Polish the Closed Bugs GH workflow (#46271)
Remove the attempts to have these issues land in the same 'inbox' (the
existing project board for triage). Since they're closed, the automated
workflow of the project board will move them to the 'Closed'
column/status even with the API call specifically moving them to
'Incoming' instead. It is what it is, we'll have a separate project
board for this.

Also:
- don't look at comments on PRs
- don't freak out if the issue has no type
- add a permissions block as a defensive measure (in case someone adds
secrets.GITHUB_TOKEN later)
- add a timeout to avoid hanging out for six hours or whatever the
default is
- add some logging.

Release Notes:

- N/A
2026-01-07 18:28:01 +01:00

63 lines
2.2 KiB
YAML

name: "Surface closed issues someone's commented on"
on:
issue_comment:
types:
- created
permissions:
contents: read
jobs:
add-to-project:
if: >
github.repository == 'zed-industries/zed' &&
github.event.issue.state == 'closed' &&
github.event.issue.pull_request == null &&
github.event.issue.type != null &&
github.event.issue.type.name == 'Bug' &&
github.event.comment.user.type != 'Bot'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- 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
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.get-app-token.outputs.token }}
script: |
try {
const response = await github.rest.teams.getMembershipForUserInOrg({
org: 'zed-industries',
team_slug: 'staff',
username: context.payload.comment.user.login
});
return response.data.state === 'active';
} catch (error) {
// 404 means user is not a member
if (error.status === 404) {
return false;
}
throw error;
}
- if: 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'
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'
uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2
with:
project-url: https://github.com/orgs/zed-industries/projects/73
github-token: ${{ steps.get-app-token.outputs.token }}