42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { DeploymentError, deployRelease, readDeploymentConfig, rollbackRelease } from "./cpanel-deploy-lib.mjs";
|
|
|
|
async function main() {
|
|
const mode = process.argv[2] || "deploy";
|
|
if (!new Set(["deploy", "--rollback"]).has(mode) || process.argv.length > 3) {
|
|
throw new DeploymentError("Usage: deploy-cpanel.mjs [--rollback]");
|
|
}
|
|
|
|
if (mode === "--rollback") {
|
|
const target = process.env.RELEASE_ROLLBACK_TARGET;
|
|
if (!target) {
|
|
throw new DeploymentError("RELEASE_ROLLBACK_TARGET is required for --rollback.");
|
|
}
|
|
const config = readDeploymentConfig(process.env, { rollbackOnly: true });
|
|
const result = await rollbackRelease(config, target);
|
|
console.log(`Frontend rollback completed: active release ${result.activeTarget.split("/")[1]}.`);
|
|
return;
|
|
}
|
|
|
|
const config = readDeploymentConfig(process.env);
|
|
const result = await deployRelease(config);
|
|
console.log(
|
|
`Frontend deployment completed: active release ${config.releaseId}; retained rollback release ${
|
|
result.previousTarget.split("/")[1]
|
|
}.`
|
|
);
|
|
if (result.removed.length > 0) {
|
|
console.log(`Pruned ${result.removed.length} inactive release(s).`);
|
|
}
|
|
if (result.retentionWarning) {
|
|
console.warn(result.retentionWarning);
|
|
}
|
|
}
|
|
|
|
main().catch((error) => {
|
|
const message = error instanceof Error ? error.message : "Unknown deployment failure.";
|
|
console.error(message);
|
|
process.exit(1);
|
|
});
|