Skip to content

fix(web) Fix "At least one project, user, or group must be specified" for GitLab configs in web configurator #162

fix(web) Fix "At least one project, user, or group must be specified" for GitLab configs in web configurator

fix(web) Fix "At least one project, user, or group must be specified" for GitLab configs in web configurator #162

name: Update Roadmap Released
on:
pull_request:
types: [closed]
workflow_dispatch:
schedule:
- cron: "0 */6 * * *"
permissions:
pull-requests: read
contents: read
issues: write
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Update "Released" section with last 10 merged PRs
uses: actions/github-script@v7
env:
ROADMAP_ISSUE_NUMBER: "459"
with:
script: |
const issue_number = parseInt(process.env.ROADMAP_ISSUE_NUMBER, 10);
const {owner, repo} = context.repo;
// Fetch more than 10, then sort by closed_at to be precise
const batchSize = 50;
const { data: prBatch } = await github.rest.pulls.list({
owner,
repo,
state: "closed",
per_page: batchSize,
sort: "updated",
direction: "desc"
});
const last10 = prBatch
.filter(pr => pr.merged_at) // only merged PRs
.sort((a, b) => new Date(b.merged_at) - new Date(a.merged_at))
.slice(0, 10);
const list = last10.map(pr => `- #${pr.number}`).join("\n");
const start = "<!-- RELEASED:START -->";
const end = "<!-- RELEASED:END -->";
const mergedUrl = `https://github.com/${owner}/${repo}/pulls?q=is%3Apr+is%3Amerged`;
const replacementBlock = [
start,
"",
`10 most recent [merged PRs](${mergedUrl}):`,
"",
list,
"",
end
].join("\n");
const { data: issue } = await github.rest.issues.get({ owner, repo, issue_number });
let body = issue.body || "";
if (body.includes(start) && body.includes(end)) {
const pattern = new RegExp(`${start}[\\s\\S]*?${end}`);
body = body.replace(pattern, replacementBlock);
} else {
core.setFailed('Missing RELEASED markers in roadmap issue body. Please add <!-- RELEASED:START --> and <!-- RELEASED:END --> to the issue.');
return;
}
await github.rest.issues.update({
owner,
repo,
issue_number,
body
});