Skip to content

Commit 2b2b5cd

Browse files
authored
ci: Fix bug in discussion thread link auto append (#6711)
Signed-off-by: Xuanwo <github@xuanwo.io>
1 parent c26e2cb commit 2b2b5cd

File tree

1 file changed

+39
-5
lines changed

1 file changed

+39
-5
lines changed

.github/workflows/discussion-thread-link.yml

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ name: Append mailing-list thread link to new Discussion
2020
on:
2121
discussion:
2222
types: [created]
23+
workflow_dispatch:
24+
inputs:
25+
discussion_url:
26+
description: 'Discussion URL to backfill mailing list link'
27+
required: true
2328

2429
permissions:
2530
discussions: write
@@ -33,12 +38,41 @@ jobs:
3338
uses: actions/github-script@v7
3439
with:
3540
script: |
36-
const { context, github, core } = require('@actions/github');
41+
let owner = context.repo.owner;
42+
let repo = context.repo.repo;
43+
44+
const manualUrl = context.payload.inputs && context.payload.inputs.discussion_url
45+
? context.payload.inputs.discussion_url.trim()
46+
: '';
47+
48+
let discussion = context.payload.discussion || null;
49+
let number = discussion ? discussion.number : null;
50+
51+
if (manualUrl) {
52+
const match = manualUrl.match(/github\.com\/([^/]+)\/([^/]+)\/discussions\/(\d+)/i);
53+
if (!match) {
54+
core.setFailed(`Invalid discussion URL: ${manualUrl}`);
55+
return;
56+
}
57+
owner = match[1];
58+
repo = match[2];
59+
number = Number(match[3]);
60+
if (!number || Number.isNaN(number)) {
61+
core.setFailed(`Invalid discussion number in URL: ${manualUrl}`);
62+
return;
63+
}
64+
const { data } = await github.request(
65+
'GET /repos/{owner}/{repo}/discussions/{number}',
66+
{ owner, repo, number }
67+
);
68+
discussion = data;
69+
}
70+
71+
if (!discussion) {
72+
core.setFailed('Discussion payload missing and no discussion_url input provided');
73+
return;
74+
}
3775
38-
const owner = context.repo.owner;
39-
const repo = context.repo.repo;
40-
const discussion = context.payload.discussion;
41-
const number = discussion.number;
4276
const title = discussion.title || '';
4377
4478
const baseUrl = 'https://lists.apache.org/api/stats.lua';

0 commit comments

Comments
 (0)