This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new c82d4d1c64 ci: Compact first-time contributor welcome and stop
issue-link pollution (#5317)
c82d4d1c64 is described below
commit c82d4d1c644b8c6dd822d3d7e4ef39d653f61a81
Author: Matthew B. <[email protected]>
AuthorDate: Wed Jun 10 11:14:55 2026 -0700
ci: Compact first-time contributor welcome and stop issue-link pollution
(#5317)
### What changes were proposed in this PR?
Reworks the first-time-contributor welcome comment posted by
`welcome-first-time-contributor.yml`.
- Rewrote the welcome message: an opening pointer to `starter-task`
issues for newcomers, plus clearer full-sentence guidance for the three
comment-command groups (issues, sub-issues, pull requests).
- Wrapped every issue reference in inline code so GitHub no longer
autolinks the examples (these previously created cross-reference
backlinks into real issues each time the welcome fired) and switched the
examples to the self-referential `#5166` and `#5222`.
- Moved the message body out of the workflow `.yml` and into
`.github/welcome-first-time-contributor.txt`, read at runtime via a
sparse checkout and rendered by substituting `{{author}}`, `{{owner}}`,
and `{{repo}}`.
The rendered message a first-time contributor now sees:
> 👋 Thanks for your first contribution to Texera, @<author>!
>
> If you're looking for a good place to start, browse issues labeled
[`starter-task`](https://github.com/apache/texera/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task);
they're scoped to be approachable for newcomers.
>
> You can drive common housekeeping yourself by commenting one of these
commands on its own line:
>
> - **Issues.** Comment `/take` to assign an open issue to yourself, or
`/untake` to release it. You can find unclaimed work with the search
filter `is:issue is:open no:assignee`.
> - **Sub-issues.** To link issues into a parent/child hierarchy,
comment `/sub-issue #5166 #5222` on the parent to attach those children
(or `/unsub-issue #5166 #5222` to detach them). From a child issue,
comment `/parent-issue #5166` to set its parent, or `/unparent-issue` to
clear it (the current parent is detected automatically). References may
be written as `#5166` or as a bare `5166`; cross-repository references
are not supported.
> - **Pull requests (author only).** Comment `/request-review @user` to
request a review from someone, or `/unrequest-review @user` to withdraw
that request.
>
> Each command must match exactly: `/take this` will not work, only
`/take` does. For the full contribution flow, see
[CONTRIBUTING.md](https://github.com/apache/texera/blob/main/CONTRIBUTING.md).
### Any related issues, documentation, or discussions?
Closes: #5315
### How was this PR tested?
- Cross-referenced every command claim against `comment-commands.yml`
for accuracy.
- Simulated the runtime substitution locally (read the `.txt`, replaced
the placeholders, prepended the idempotency marker) and confirmed the
output matches the message above with no leftover placeholders.
- Confirmed via GitHub docs that `#N` inside inline code is not
autolinked, and verified zero bare `#N` remain in the message body.
### Was this PR authored or co-authored using generative AI tooling?
Co-authored with Claude Opus 4.8 in compliance with ASF
---
.github/welcome-first-time-contributor.txt | 11 ++++
.../workflows/welcome-first-time-contributor.yml | 61 ++++++++--------------
2 files changed, 32 insertions(+), 40 deletions(-)
diff --git a/.github/welcome-first-time-contributor.txt
b/.github/welcome-first-time-contributor.txt
new file mode 100644
index 0000000000..e7e01d6462
--- /dev/null
+++ b/.github/welcome-first-time-contributor.txt
@@ -0,0 +1,11 @@
+👋 Thanks for your first contribution to Texera, @{{author}}!
+
+If you're looking for a good place to start, browse issues labeled
[`starter-task`](https://github.com/{{owner}}/{{repo}}/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task);
they're scoped to be approachable for newcomers.
+
+You can drive common housekeeping yourself by commenting one of these commands
on its own line:
+
+- **Issues.** Comment `/take` to assign an open issue to yourself, or
`/untake` to release it. You can find unclaimed work with the search filter
`is:issue is:open no:assignee`.
+- **Sub-issues.** To link issues into a parent/child hierarchy, comment
`/sub-issue #5166 #5222` on the parent to attach those children (or
`/unsub-issue #5166 #5222` to detach them). From a child issue, comment
`/parent-issue #5166` to set its parent, or `/unparent-issue` to clear it (the
current parent is detected automatically). References may be written as `#5166`
or as a bare `5166`; cross-repository references are not supported.
+- **Pull requests (author only).** Comment `/request-review @user` to request
a review from someone, or `/unrequest-review @user` to withdraw that request.
+
+Each command must match exactly: `/take this` will not work, only `/take`
does. For the full contribution flow, see
[CONTRIBUTING.md](https://github.com/{{owner}}/{{repo}}/blob/main/CONTRIBUTING.md).
diff --git a/.github/workflows/welcome-first-time-contributor.yml
b/.github/workflows/welcome-first-time-contributor.yml
index df67bebce0..5e85ff30b3 100644
--- a/.github/workflows/welcome-first-time-contributor.yml
+++ b/.github/workflows/welcome-first-time-contributor.yml
@@ -44,6 +44,16 @@ jobs:
if: github.event.sender.type != 'Bot'
runs-on: ubuntu-latest
steps:
+ # Check out the base ref (pull_request_target / issues both resolve to
+ # the trusted base branch, never the fork head) so we can read the
+ # welcome message template below. The template lives in its own .txt
+ # file so editing the wording does not trigger a full CI run; see the
+ # `ci` label exclusion in .github/labeler.yml.
+ - uses: actions/checkout@v5
+ with:
+ persist-credentials: false
+ sparse-checkout: .github/welcome-first-time-contributor.txt
+ sparse-checkout-cone-mode: false
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -104,46 +114,17 @@ jobs:
return;
}
- const body = [
- MARKER,
- `👋 Thanks for your first contribution to Texera, @${author}!`,
- ``,
- `You can drive common housekeeping tasks just by leaving a
comment. Type the command on its own line.`,
- ``,
- `### On issues`,
- ``,
- `| Command | What it does |`,
- `|---|---|`,
- `| \`/take\` | Assign the issue to yourself (self-claim it) |`,
- `| \`/untake\` | Remove yourself as assignee |`,
- ``,
- `To find unclaimed work, search \`is:issue is:open no:assignee\`
— there's no "triage" label; the search filter *is* the triage state.`,
- ``,
- `### Linking sub-issues`,
- ``,
- `| Command | Where to run it | What it does |`,
- `|---|---|---|`,
- `| \`/sub-issue #12 #13\` | On the **parent** | Links #12 and
#13 as children of this issue |`,
- `| \`/unsub-issue #12 #13\` | On the **parent** | Unlinks those
children |`,
- `| \`/parent-issue #5\` | On the **child** | Sets #5 as this
issue's parent |`,
- `| \`/unparent-issue\` | On the **child** | Removes this issue's
parent (auto-detected) |`,
- `| \`/unparent-issue #5\` | On the **child** | Removes parent #5
explicitly |`,
- ``,
- `You can write references as \`#12\` or bare \`12\`. Cross-repo
references like \`owner/repo#12\` aren't supported and are ignored.`,
- ``,
- `### On pull requests (author only)`,
- ``,
- `| Command | What it does |`,
- `|---|---|`,
- `| \`/request-review @user [@user ...]\` | Request reviews from
those users |`,
- `| \`/unrequest-review @user [@user ...]\` | Cancel those review
requests |`,
- ``,
- `You can mention teams as \`@org/team\`, and \`@copilot\` works
too. Only the PR **author** can use these commands.`,
- ``,
- `> **Note:** Commands must match exactly — \`/take this\` won't
work, only \`/take\`. Bots are ignored, and you can't self-link an issue or set
an issue as its own parent.`,
- ``,
- `For the full contribution flow, see
[CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`,
- ].join('\n');
+ // Message body lives in .github/welcome-first-time-contributor.txt
+ // so wording edits skip CI. Substitute the runtime placeholders
+ // and prepend the idempotency marker.
+ const fs = require('fs');
+ const template = fs.readFileSync(
+ '.github/welcome-first-time-contributor.txt', 'utf8',
+ );
+ const body = MARKER + '\n' + template
+ .replaceAll('{{author}}', author)
+ .replaceAll('{{owner}}', owner)
+ .replaceAll('{{repo}}', repo);
try {
await github.rest.issues.createComment({