• beta.mjs
  • import "dotenv/config";
    import {
        ver,
        buildDist,
        buildImage,
        checkDocker,
        checkTagExists,
        checkVersionFormat,
        getRepoNames,
        pressAnyKey,
        execSync, uploadArtifacts,
    } from "./lib.mjs";
    import semver from "semver";
    
    const repoNames = getRepoNames();
    const version = process.env.RELEASE_BETA_VERSION;
    const githubToken = process.env.RELEASE_GITHUB_TOKEN;
    
    console.log("RELEASE_BETA_VERSION:", version);
    
    if (!githubToken) {
        console.error("GITHUB_TOKEN is required");
        process.exit(1);
    }
    
    // Check if the version is a valid semver
    checkVersionFormat(version);
    
    // Check if the semver identifier is "beta"
    const semverIdentifier = semver.prerelease(version);
    console.log("Semver identifier:", semverIdentifier);
    if (semverIdentifier[0] !== "beta") {
        console.error("VERSION should have a semver identifier of 'beta'");
        process.exit(1);
    }
    
    // Check if docker is running
    checkDocker();
    
    // Check if the tag exists
    await checkTagExists(repoNames, version);
    
    // node extra/beta/update-version.js
    execSync("node ./extra/beta/update-version.js");
    
    // Build frontend dist
    buildDist();
    
    // Build slim image (rootless)
    buildImage(repoNames, [ "beta-slim-rootless", ver(version, "slim-rootless") ], "rootless", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
    
    // Build full image (rootless)
    buildImage(repoNames, [ "beta-rootless", ver(version, "rootless") ], "rootless");
    
    // Build slim image
    buildImage(repoNames, [ "beta-slim", ver(version, "slim") ], "release", "BASE_IMAGE=louislam/uptime-kuma:base2-slim");
    
    // Build full image
    buildImage(repoNames, [ "beta", version ], "release");
    
    await pressAnyKey();
    
    // npm run upload-artifacts
    uploadArtifacts(version, githubToken);