ci: schedule guarded GitHub Pages publishing
Publish GitHub Pages output / publish (push) Has been cancelled

This commit is contained in:
2026-08-31 13:01:29 +09:00
parent c0e8ab4bad
commit 51a4b0d9ca
5 changed files with 178 additions and 10 deletions
+26 -9
View File
@@ -36,21 +36,38 @@ if (mismatchedVersions.length > 0) {
}
const approvedNotBefore = Date.parse(policy.approvedNotBefore);
if (!Number.isFinite(approvedNotBefore) || now < approvedNotBefore) {
throw new Error(`The approved master data cannot be published before ${policy.approvedNotBefore}.`);
if (!Number.isFinite(approvedNotBefore)) {
throw new Error('approvedNotBefore must be a valid ISO-8601 date.');
}
const unreleasedCharts = charts.charts.filter((chart) => !Number.isFinite(chart.releaseTime) || chart.releaseTime > now);
const undatedCharts = charts.charts.filter((chart) => !Number.isFinite(chart.releaseTime));
if (undatedCharts.length > 0) {
throw new Error(`Pages build contains ${undatedCharts.length} undated charts: ${undatedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
}
const undatedEvents = events.filter((event) => !Number.isFinite(Date.parse(event.startsAt)));
if (undatedEvents.length > 0) {
throw new Error(`Pages build contains undated events: ${undatedEvents.map((event) => event.id).join(', ')}`);
}
const notReadyReasons = [];
if (now < approvedNotBefore) {
notReadyReasons.push(`approved master data cannot be published before ${policy.approvedNotBefore}`);
}
const unreleasedCharts = charts.charts.filter((chart) => chart.releaseTime > now);
if (unreleasedCharts.length > 0) {
throw new Error(`Pages build contains ${unreleasedCharts.length} unreleased or undated charts: ${unreleasedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
notReadyReasons.push(`${unreleasedCharts.length} charts are not released yet: ${unreleasedCharts.map((chart) => `${chart.songId}/${chart.difficulty}`).join(', ')}`);
}
const unreleasedEvents = events.filter((event) => {
const startsAt = Date.parse(event.startsAt);
return !Number.isFinite(startsAt) || startsAt > now;
});
const unreleasedEvents = events.filter((event) => Date.parse(event.startsAt) > now);
if (unreleasedEvents.length > 0) {
throw new Error(`Pages build contains unreleased or undated events: ${unreleasedEvents.map((event) => event.id).join(', ')}`);
notReadyReasons.push(`events are not released yet: ${unreleasedEvents.map((event) => event.id).join(', ')}`);
}
if (notReadyReasons.length > 0) {
process.stderr.write(`Pages public-data gate is not ready at ${new Date(now).toISOString()}: ${notReadyReasons.join('; ')}.\n`);
process.exit(78);
}
process.stdout.write(`Pages public-data gate passed at ${new Date(now).toISOString()}.\n`);