computer-scienceangular-roadmapbackend-roadmapblockchain-roadmapdba-roadmapdeveloper-roadmapdevops-roadmapfrontend-roadmapgo-roadmaphactoberfestjava-roadmapjavascript-roadmapnodejs-roadmappython-roadmapqa-roadmapreact-roadmaproadmapstudy-planvue-roadmapweb3-roadmap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.8 KiB
50 lines
1.8 KiB
name: Close PRs with Feedback |
|
on: |
|
workflow_dispatch: |
|
schedule: |
|
- cron: '0 0 * * *' |
|
jobs: |
|
close-pr: |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Close PR if it has label "feedback left" and no changes in 7 days |
|
uses: actions/github-script@v3 |
|
with: |
|
github-token: ${{ secrets.GITHUB_TOKEN }} |
|
script: | |
|
const { data: pullRequests } = await github.pulls.list({ |
|
owner: context.repo.owner, |
|
repo: context.repo.repo, |
|
state: 'open', |
|
base: 'master', |
|
}); |
|
|
|
for (const pullRequest of pullRequests) { |
|
const { data: labels } = await github.issues.listLabelsOnIssue({ |
|
owner: context.repo.owner, |
|
repo: context.repo.repo, |
|
issue_number: pullRequest.number, |
|
}); |
|
|
|
const feedbackLabel = labels.find((label) => label.name === 'feedback left'); |
|
if (feedbackLabel) { |
|
const lastUpdated = new Date(pullRequest.updated_at); |
|
const sevenDaysAgo = new Date(); |
|
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7); |
|
|
|
if (lastUpdated < sevenDaysAgo) { |
|
await github.issues.createComment({ |
|
owner: context.repo.owner, |
|
repo: context.repo.repo, |
|
issue_number: pullRequest.number, |
|
body: 'Closing this PR because there has been no activity for the past 7 days. Feel free to reopen if you have any feedback.', |
|
}); |
|
await github.pulls.update({ |
|
owner: context.repo.owner, |
|
repo: context.repo.repo, |
|
pull_number: pullRequest.number, |
|
state: 'closed', |
|
}); |
|
} |
|
} |
|
} |