Change summary
.github/workflows/congrats.yml | 45 +++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+), 1 deletion(-)
Detailed changes
@@ -5,8 +5,51 @@ on:
branches: [main]
jobs:
- congrats:
+ check-author:
if: ${{ github.repository_owner == 'zed-industries' }}
+ runs-on: ubuntu-latest
+ outputs:
+ should_congratulate: ${{ steps.check.outputs.should_congratulate }}
+ steps:
+ - name: Get PR info and check if author is external
+ id: check
+ uses: actions/github-script@v7
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ commit_sha: context.sha
+ });
+
+ if (prs.length === 0) {
+ core.setOutput('should_congratulate', 'false');
+ return;
+ }
+
+ const mergedPR = prs.find(pr => pr.merged_at !== null) || prs[0];
+ const prAuthor = mergedPR.user.login;
+
+ try {
+ await github.rest.teams.getMembershipForUserInOrg({
+ org: 'zed-industries',
+ team_slug: 'staff',
+ username: prAuthor
+ });
+ core.setOutput('should_congratulate', 'false');
+ } catch (error) {
+ if (error.status === 404) {
+ core.setOutput('should_congratulate', 'true');
+ } else {
+ console.error(`Error checking team membership: ${error.message}`);
+ core.setOutput('should_congratulate', 'false');
+ }
+ }
+
+ congrats:
+ needs: check-author
+ if: needs.check-author.outputs.should_congratulate == 'true'
uses: withastro/automation/.github/workflows/congratsbot.yml@main
secrets:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }}