add auto version for release
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-07-09 15:33:29 +09:00
parent daee96f2f6
commit 3aeaf4d5da
@@ -114,6 +114,27 @@ function newestBuildVersion(builds: BuildJob[]) {
.find((value): value is string => Boolean(value)) ?? '';
}
function incrementPatchVersion(value: string) {
const match = value.trim().match(/^(v?)(\d+)\.(\d+)\.(\d+)(.*)$/);
if (!match) return value;
const [, prefix, major, minor, patch, suffix] = match;
return `${prefix}${major}.${minor}.${Number(patch) + 1}${suffix}`;
}
function newestReleaseVersion(releases: AppRelease[], appId: string) {
return releases
.filter((release) => release.app.id === appId && release.version)
.sort((a, b) => releaseTime(b) - releaseTime(a))
.map((release) => release.version)
.find((value): value is string => Boolean(value)) ?? '';
}
function nextReleaseVersion(releases: AppRelease[], appId: string, builds: BuildJob[]) {
const latestReleaseVersion = newestReleaseVersion(releases, appId);
if (latestReleaseVersion) return incrementPatchVersion(latestReleaseVersion);
return newestBuildVersion(builds);
}
function buildCount(release: AppRelease) {
const imageTags = release.imageTags as ImageTags | null | undefined;
const count = Object.keys(imageTags?.images ?? {}).length + Object.keys(imageTags?.artifacts ?? {}).length;
@@ -266,7 +287,7 @@ export function ReleaseManagementPage() {
const appBuilds = candidateBuilds.filter((build) => build.component.app.id === nextAppId);
const latestBuilds = latestCandidateBuilds(appBuilds);
setSelectedBuildIds(latestBuildIdsByComponent(latestBuilds));
setVersion((prev) => prev || newestBuildVersion(appBuilds));
setVersion(nextReleaseVersion(releases, nextAppId, appBuilds));
setReleaseModalOpen(true);
};
@@ -462,7 +483,7 @@ export function ReleaseManagementPage() {
selectApp(event.target.value);
const appBuilds = candidateBuilds.filter((build) => build.component.app.id === event.target.value);
setSelectedBuildIds(latestBuildIdsByComponent(appBuilds));
setVersion(newestBuildVersion(appBuilds));
setVersion(nextReleaseVersion(releases, event.target.value, appBuilds));
}}>
{candidateGroups.map((group) => <option key={group.appId} value={group.appId}>{group.appName}</option>)}
</select>