Skip to content

Commit 575128f

Browse files
authored
Use shared workflow (#50)
1 parent 8f6c382 commit 575128f

File tree

1 file changed

+1
-57
lines changed

1 file changed

+1
-57
lines changed

.github/workflows/lock.yml

Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,62 +6,6 @@ on:
66
- cron: "45 0 * * *" # Run daily at 00:45 UTC
77
workflow_dispatch:
88

9-
permissions:
10-
issues: write
11-
pull-requests: write
12-
13-
concurrency:
14-
group: lock-closed
15-
cancel-in-progress: false
16-
179
jobs:
1810
lock:
19-
runs-on: ubuntu-latest
20-
steps:
21-
- name: Lock closed issues and PRs
22-
uses: actions/github-script@v7.0.1
23-
with:
24-
script: |
25-
const PR_CLOSE_DAYS = 1;
26-
const ISSUE_CLOSE_DAYS = 7;
27-
const EXCLUDE_LABEL = 'keep-open';
28-
const LOCK_REASON = 'resolved';
29-
30-
const now = new Date();
31-
const prCutoffDate = new Date(now.getTime() - PR_CLOSE_DAYS * 24 * 60 * 60 * 1000);
32-
const issueCutoffDate = new Date(now.getTime() - ISSUE_CLOSE_DAYS * 24 * 60 * 60 * 1000);
33-
34-
console.log(`Will lock PRs closed before: ${prCutoffDate.toISOString()}`);
35-
console.log(`Will lock issues closed before: ${issueCutoffDate.toISOString()}`);
36-
37-
// The `listForRepo` endpoint fetches both issues and pull requests.
38-
// We fetch all closed items and filter them in the script.
39-
const closedItems = await github.paginate(github.rest.issues.listForRepo, {
40-
owner: context.repo.owner,
41-
repo: context.repo.repo,
42-
state: 'closed',
43-
});
44-
45-
for (const item of closedItems) {
46-
if (item.locked) continue;
47-
48-
const hasExcludeLabel = item.labels.some(label => label.name === EXCLUDE_LABEL);
49-
if (hasExcludeLabel) continue;
50-
51-
const closedAt = new Date(item.closed_at);
52-
const isPr = 'pull_request' in item;
53-
54-
if ((isPr && closedAt < prCutoffDate) || (!isPr && closedAt < issueCutoffDate)) {
55-
console.log(`Locking ${isPr ? 'PR' : 'issue'} #${item.number} which was closed at ${item.closed_at}`);
56-
try {
57-
await github.rest.issues.lock({
58-
owner: context.repo.owner,
59-
repo: context.repo.repo,
60-
issue_number: item.number,
61-
});
62-
console.log(`Successfully locked #${item.number}.`);
63-
} catch (e) {
64-
console.error(`Failed to lock #${item.number}: ${e.message}`);
65-
}
66-
}
67-
}
11+
uses: esphome/workflows/.github/workflows/lock.yml@jesserockz-2025-248

0 commit comments

Comments
 (0)