mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-07-22 14:13:06 +00:00
d31949778a
Signed-off-by: Simon L. <szaimen@e.mail.de>
41 lines
1.5 KiB
YAML
41 lines
1.5 KiB
YAML
name: Block if prerelease is present
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
check-latest-release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: "Check latest published release isn't a prerelease"
|
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v6
|
|
with:
|
|
script: |
|
|
// listReleases returns releases sorted by created_at descending,
|
|
// so the first entry (skipping drafts) is the most recent release.
|
|
// Note: we can't use getLatestRelease here because it deliberately
|
|
// skips prereleases, which is exactly what we need to detect.
|
|
const releases = await github.rest.repos.listReleases({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
per_page: 100
|
|
});
|
|
|
|
const latestRelease = (releases.data || []).find(release => !release.draft);
|
|
|
|
if (!latestRelease) {
|
|
core.info('No published releases found for this repository; skipping prerelease check.');
|
|
return;
|
|
}
|
|
|
|
core.info(`Most recent release found: ${latestRelease.tag_name}`);
|
|
|
|
if (latestRelease.prerelease) {
|
|
core.setFailed(`Release for tag ${latestRelease.tag_name} is a prerelease. Blocking merges to main as we need to wait for the prerelease to become stable.`);
|
|
} else {
|
|
core.info(`Release for tag ${latestRelease.tag_name} is not a prerelease.`);
|
|
}
|