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
8 months ago
|
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',
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|