dessant / Repo Lockdown
Programming Languages
Projects that are alternatives of or similar to Repo Lockdown
Repo Lockdown
Repo Lockdown is a GitHub Action that immediately closes and locks issues and pull requests. It is mainly used with repositories that do not accept issues or pull requests, such as forks and mirrors.
The legacy version of this project can be found here.
Supporting the Project
The continued development of Repo Lockdown is made possible thanks to the support of awesome backers. If you'd like to join them, please consider contributing with Patreon, PayPal or Bitcoin.
Usage
Create a lockdown.yml
workflow file in the .github/workflows
directory,
use one of the example workflows to get started.
Inputs
The action can be configured using input parameters.
All parameters are optional, except github-token
.
-
github-token
- GitHub access token, value must be
${{ github.token }}
- Required
- GitHub access token, value must be
-
exclude-issue-created-before
- Do not process issues created before a given timestamp, value must follow ISO 8601
- Optional, defaults to
''
-
exclude-issue-labels
- Do not process issues with these labels, value must be a comma separated list of labels
- Optional, defaults to
''
-
issue-labels
- Labels to add before closing or locking an issue, value must be a comma separated list of labels
- Optional, defaults to
''
-
issue-comment
- Comment to post before closing or locking an issue
- Optional, defaults to
''
-
skip-closed-issue-comment
- Do not comment on already closed issues before locking,
value must be either
true
orfalse
- Optional, defaults to
false
- Do not comment on already closed issues before locking,
value must be either
-
close-issue
- Close issues, value must be either
true
orfalse
- Optional, defaults to
true
- Close issues, value must be either
-
lock-issue
- Lock issues, value must be either
true
orfalse
- Optional, defaults to
true
- Lock issues, value must be either
-
issue-lock-reason
- Reason for locking an issue, value must be one
of
resolved
,off-topic
,too heated
orspam
- Optional, defaults to
''
- Reason for locking an issue, value must be one
of
-
exclude-pr-created-before
- Do not process pull requests created before a given timestamp, value must follow ISO 8601
- Optional, defaults to
''
-
exclude-pr-labels
- Do not process pull requests with these labels, value must be a comma separated list of labels
- Optional, defaults to
''
-
pr-labels
- Labels to add before closing or locking a pull request, value must be a comma separated list of labels
- Optional, defaults to
''
-
pr-comment
- Comment to post before closing or locking a pull request
- Optional, defaults to
''
-
skip-closed-pr-comment
- Do not comment on already closed pull requests before locking,
value must be either
true
orfalse
- Optional, defaults to
false
- Do not comment on already closed pull requests before locking,
value must be either
-
close-pr
- Close pull requests, value must be either
true
orfalse
- Optional, defaults to
true
- Close pull requests, value must be either
-
lock-pr
- Lock pull requests, value must be either
true
orfalse
- Optional, defaults to
true
- Lock pull requests, value must be either
-
pr-lock-reason
- Reason for locking a pull request, value must be one
of
resolved
,off-topic
,too heated
orspam
- Optional, defaults to
''
- Reason for locking a pull request, value must be one
of
-
process-only
- Process only issues or pull requests, value must be
either
issues
orprs
- Optional, defaults to
''
- Process only issues or pull requests, value must be
either
Outputs
-
issues
- Issues that have been closed or locked, value is a JSON string
in the form of
[{"owner": "actions", "repo": "toolkit", "number": 1}]
- Issues that have been closed or locked, value is a JSON string
in the form of
-
prs
- Pull requests that have been closed or locked, value is a JSON string
in the form of
[{"owner": "actions", "repo": "toolkit", "number": 1}]
- Pull requests that have been closed or locked, value is a JSON string
in the form of
Examples
The following workflow will search once an hour for existing issues and pull requests that can be closed or locked. New issues and pull requests will be immediately processed when they are opened.
name: 'Lock down repository'
on:
issues:
types: opened
pull_request:
types: opened
schedule:
- cron: '0 * * * *'
jobs:
lockdown:
runs-on: ubuntu-latest
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
Scheduled runs are no longer needed once the initial backlog
of issues and pull requests has been processed. It's best to edit
the workflow after the backlog has been processed and remove
the schedule
event to avoid unnecessary workflow runs.
on:
issues:
types: opened
pull_request:
types: opened
Available input parameters
This workflow declares all the available input parameters of the action
and their default values. Any of the parameters can be omitted,
except github-token
.
name: 'Lock down repository'
on:
issues:
types: opened
pull_request:
types: opened
schedule:
- cron: '0 * * * *'
jobs:
lockdown:
runs-on: ubuntu-latest
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
exclude-issue-created-before: ''
exclude-issue-labels: ''
issue-labels: ''
issue-comment: ''
skip-closed-issue-comment: false
close-issue: true
lock-issue: true
issue-lock-reason: ''
exclude-pr-created-before: ''
exclude-pr-labels: ''
pr-labels: ''
pr-comment: ''
skip-closed-pr-comment: false
close-pr: true
lock-pr: true
pr-lock-reason: ''
process-only: ''
Excluding issues and pull requests
This step will close and lock only issues, and exclude issues created
before 2018, or those with the pinned
or help-wanted
labels applied.
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
exclude-issue-created-before: '2018-01-01T00:00:00Z'
exclude-issue-labels: 'pinned, help-wanted'
process-only: 'issues'
This step will close only pull requests, and exclude those
with the pinned
label applied.
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
exclude-pr-labels: 'pinned'
lock-pr: false
process-only: 'prs'
Commenting and labeling
This step will post a comment on issues and pull requests before
closing and locking them, and will apply the off-topic
label to issues.
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
issue-labels: 'off-topic'
issue-comment: >
This repository does not accept bug reports,
see the README for details.
pr-comment: >
This repository does not accept pull requests,
see the README for details.
Reducing notification spam while commenting
Informing the participants of issues and pull requests before locking discussions can help redirect contributors to the right place to continue their work, though it may be useful to avoid posting comments on already closed issues and pull requests to reduce notification spam.
This step will post a comment on open issues and pull requests before closing and locking them, and will avoid commenting on threads that have already been closed before locking them.
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
issue-comment: >
This repository does not accept bug reports,
see the README for details.
skip-closed-issue-comment: true
pr-comment: >
This repository does not accept pull requests,
see the README for details.
skip-closed-pr-comment: true
Why are only some issues and pull requests processed?
To avoid triggering abuse prevention mechanisms on GitHub, only 50 issues and pull requests will be handled at once. If your repository has more than that, it will just take a few hours or days to process them all.
License
Copyright (c) 2019-2021 Armin Sebastian
This software is released under the terms of the MIT License. See the LICENSE file for further information.