Enhance build process and server version management
Some checks failed
farmcontrol/farmcontrol-server/pipeline/head There was a failure building this commit
Some checks failed
farmcontrol/farmcontrol-server/pipeline/head There was a failure building this commit
Refactor build-linux-bundle.mjs to include package version and build number from environment variables and package.json. Update headless.js to streamline initialization and improve error handling. Introduce serverVersion.js to centralize version information retrieval, replacing redundant code in localserver.js. Enhance logging in index.js to display build number and version more clearly.
This commit is contained in:
parent
4d35df3051
commit
9f927b1ef5
@ -1,8 +1,20 @@
|
||||
import { readFileSync } from 'node:fs'
|
||||
import * as esbuild from 'esbuild'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import path from 'node:path'
|
||||
|
||||
const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
|
||||
const packageJson = JSON.parse(
|
||||
readFileSync(path.join(rootDir, 'package.json'), 'utf8')
|
||||
)
|
||||
|
||||
let buildNumber = process.env.BUILD_NUMBER || process.env.VITE_BUILD_NUMBER || 'dev'
|
||||
try {
|
||||
const buildInfo = JSON.parse(
|
||||
readFileSync(path.join(rootDir, 'src/buildInfo.json'), 'utf8')
|
||||
)
|
||||
buildNumber = buildInfo.buildNumber ?? buildNumber
|
||||
} catch {}
|
||||
|
||||
await esbuild.build({
|
||||
entryPoints: [path.join(rootDir, 'src/headless.js')],
|
||||
@ -21,7 +33,9 @@ await esbuild.build({
|
||||
],
|
||||
inject: [path.join(rootDir, 'scripts/import-meta-url.js')],
|
||||
define: {
|
||||
'import.meta.url': 'import_meta_url'
|
||||
'import.meta.url': 'import_meta_url',
|
||||
'process.env.FC_PACKAGE_VERSION': JSON.stringify(packageJson.version),
|
||||
'process.env.FC_BUILD_NUMBER': JSON.stringify(buildNumber)
|
||||
},
|
||||
logLevel: 'info'
|
||||
})
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import { init } from "./index.js";
|
||||
process.env.FC_HEADLESS_ENTRY = "1";
|
||||
|
||||
init({ headless: true }).catch((err) => {
|
||||
console.error(err.message);
|
||||
process.exit(1);
|
||||
});
|
||||
import("./index.js")
|
||||
.then(({ init }) =>
|
||||
init({ headless: true }).catch((err) => {
|
||||
console.error(err.message);
|
||||
process.exit(1);
|
||||
}),
|
||||
);
|
||||
|
||||
15
src/index.js
15
src/index.js
@ -95,9 +95,18 @@ export async function init(options = {}) {
|
||||
}
|
||||
|
||||
if (isInfo) {
|
||||
const buildNumber =
|
||||
runningServer.buildNumber ?? runningServer.build ?? "n/a";
|
||||
|
||||
logger.info("-----FarmControl Server-----");
|
||||
logger.info("Version:", "v" + runningServer.version || "n/a");
|
||||
logger.info("Build:", runningServer.build || "n/a");
|
||||
logger.info(
|
||||
"Version:",
|
||||
runningServer.version ? `v${runningServer.version}` : "n/a",
|
||||
);
|
||||
logger.info(
|
||||
"Build:",
|
||||
buildNumber === "dev" ? "dev" : `b${buildNumber}`,
|
||||
);
|
||||
logger.info(
|
||||
"Authenticated:",
|
||||
runningServer.authenticated == true ? "Yes" : "No",
|
||||
@ -167,7 +176,7 @@ const isMainModule =
|
||||
process.argv[1] &&
|
||||
fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
|
||||
|
||||
if (isMainModule) {
|
||||
if (isMainModule && !process.env.FC_HEADLESS_ENTRY) {
|
||||
init().catch((err) => {
|
||||
logger.error(err.message);
|
||||
process.exit(1);
|
||||
|
||||
@ -1,29 +1,8 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import express from "express";
|
||||
import log4js from "log4js";
|
||||
import { notPrompting } from "../utils.js";
|
||||
import { loadConfig } from "../config.js";
|
||||
|
||||
const readJsonFile = (fileUrl) => {
|
||||
try {
|
||||
return JSON.parse(readFileSync(fileUrl, "utf8"));
|
||||
} catch {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
|
||||
const packageJsonUrl = new URL("../../package.json", import.meta.url);
|
||||
const buildInfoUrl = new URL("../buildInfo.json", import.meta.url);
|
||||
|
||||
const getServerVersionInfo = () => {
|
||||
const packageJson = readJsonFile(packageJsonUrl);
|
||||
const buildInfo = readJsonFile(buildInfoUrl);
|
||||
|
||||
return {
|
||||
version: packageJson.version ?? "dev",
|
||||
buildNumber: buildInfo.buildNumber ?? "dev",
|
||||
};
|
||||
};
|
||||
import { getServerVersionInfo } from "../serverVersion.js";
|
||||
|
||||
export const LOCAL_SERVER_PORT = 47291;
|
||||
|
||||
|
||||
29
src/serverVersion.js
Normal file
29
src/serverVersion.js
Normal file
@ -0,0 +1,29 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
|
||||
const readJsonFile = (fileUrl) => {
|
||||
try {
|
||||
return JSON.parse(readFileSync(fileUrl, "utf8"));
|
||||
} catch {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
|
||||
const packageJsonUrl = new URL("../package.json", import.meta.url);
|
||||
const buildInfoUrl = new URL("./buildInfo.json", import.meta.url);
|
||||
|
||||
export const getServerVersionInfo = () => {
|
||||
if (process.env.FC_PACKAGE_VERSION && process.env.FC_BUILD_NUMBER) {
|
||||
return {
|
||||
version: process.env.FC_PACKAGE_VERSION,
|
||||
buildNumber: process.env.FC_BUILD_NUMBER,
|
||||
};
|
||||
}
|
||||
|
||||
const packageJson = readJsonFile(packageJsonUrl);
|
||||
const buildInfo = readJsonFile(buildInfoUrl);
|
||||
|
||||
return {
|
||||
version: packageJson.version ?? "dev",
|
||||
buildNumber: buildInfo.buildNumber ?? "dev",
|
||||
};
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user