refactor: Bake-in specifically crafted build_metadata file instead of random other files

This commit is contained in:
Sören Beye 2024-11-01 09:05:15 +01:00
parent cf20143b75
commit 436fae6293
4 changed files with 74 additions and 32 deletions

1
.gitignore vendored
View File

@ -14,6 +14,7 @@ build/
.vscode/
/backend/lib/res/valetudo.openapi.schema.json
/backend/lib/res/build_metadata.json
/docs/vendor
/docs/_site

View File

@ -9,6 +9,7 @@ const LinuxTools = require("./LinuxTools");
const {sleep} = require("./misc");
let SYSTEM_ID;
let BUILD_METADATA;
class Tools {
static MK_DIR_PATH(filepath) {
@ -41,38 +42,30 @@ class Tools {
return Buffer.isBuffer(buf) && buf[0] === 0x1f && buf[1] === 0x8b;
}
static GET_VALETUDO_VERSION() {
let valetudoVersion = "unknown";
try {
const rootDirectory = path.resolve(__dirname, "../../..");
const packageContent = fs.readFileSync(rootDirectory + "/package.json", {"encoding": "utf-8"});
if (packageContent) {
valetudoVersion = JSON.parse(packageContent.toString()).version;
}
} catch (e) {
//intentional
static READ_BUILD_METADATA() {
if (BUILD_METADATA) {
return BUILD_METADATA;
}
return valetudoVersion;
try {
BUILD_METADATA = JSON.parse(fs.readFileSync(path.join(__dirname, "../res/build_metadata.json")).toString());
} catch (e) {
return null;
}
return BUILD_METADATA;
}
static GET_VALETUDO_VERSION() {
return Tools.READ_BUILD_METADATA()?.version ?? "unknown";
}
static GET_COMMIT_ID() {
let commitId = "unknown";
return Tools.READ_BUILD_METADATA()?.commit ?? "unknown";
}
try {
const rootDirectory = path.resolve(__dirname, "../../..");
commitId = fs.readFileSync(rootDirectory + "/.git/HEAD", {"encoding": "utf-8"}).trim();
if (commitId.match(/^ref: refs\/heads\/master$/) !== null) {
commitId = fs.readFileSync(rootDirectory + "/.git/refs/heads/master", {"encoding": "utf-8"}).trim();
}
} catch (e) {
//intentional
}
return commitId;
static GET_BUILD_TIMESTAMP() {
return new Date(Tools.READ_BUILD_METADATA()?.buildTimestamp ?? 0);
}
static GET_FREE_SYSTEM_MEMORY() {

View File

@ -9,10 +9,8 @@
},
"pkg": {
"assets": [
"../.git/HEAD",
"../.git/refs/heads/master",
"../frontend/build",
"../package.json",
"../build_metadata.json",
"../node_modules/swagger-ui-dist/swagger-ui.css",
"./node_modules/swagger-ui-dist/swagger-ui.css"
]
@ -26,10 +24,11 @@
"ts-check": "tsc --noEmit",
"test": "mocha \"test/**/*_spec.js\"",
"prepare_commit": "npm run lint_fix && npm run ts-check && npm run test",
"pre_build": "node ../util/generate_build_metadata.js",
"build": "npm run build_armv7 && npm run build_aarch64 && npm run build_armv7_lowmem",
"build_armv7": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=42\" . --output ../build/armv7/valetudo",
"build_aarch64": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-arm64 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=64\" . --output ../build/aarch64/valetudo",
"build_armv7_lowmem": "cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=34,optimize-for-size,lite-mode,no-regexp-tier-up,no-expose-wasm\" . --output ../build/armv7/valetudo-lowmem"
"build_armv7": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=42\" . --output ../build/armv7/valetudo",
"build_aarch64": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-arm64 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=64\" . --output ../build/aarch64/valetudo",
"build_armv7_lowmem": "npm run pre_build && cross-env PKG_CACHE_PATH=../build_dependencies/pkg pkg --targets node20-linuxstatic-armv7 --compress Brotli --no-bytecode --public-packages \"*\" --options \"expose-gc,max-heap-size=34,optimize-for-size,lite-mode,no-regexp-tier-up,no-expose-wasm\" . --output ../build/armv7/valetudo-lowmem"
},
"author": "",
"dependencies": {

View File

@ -0,0 +1,49 @@
const fs = require('fs');
const path = require("path");
function GET_VALETUDO_VERSION() {
let valetudoVersion = "unknown";
try {
const rootDirectory = path.resolve(__dirname, "..");
const packageContent = fs.readFileSync(rootDirectory + "/package.json", {"encoding": "utf-8"});
if (packageContent) {
valetudoVersion = JSON.parse(packageContent.toString()).version;
}
} catch (e) {
//intentional
}
return valetudoVersion;
}
function GET_COMMIT_ID() {
let commitId = "unknown";
try {
const rootDirectory = path.resolve(__dirname, "..");
commitId = fs.readFileSync(rootDirectory + "/.git/HEAD", {"encoding": "utf-8"}).trim();
if (commitId.match(/^ref: refs\/heads\/master$/) !== null) {
commitId = fs.readFileSync(rootDirectory + "/.git/refs/heads/master", {"encoding": "utf-8"}).trim();
}
} catch (e) {
//intentional
}
return commitId;
}
const metadata = {
version: GET_VALETUDO_VERSION(),
commit: GET_COMMIT_ID(),
buildTimestamp: new Date().toISOString(),
};
fs.writeFileSync(
path.join(__dirname, "../backend/lib/res/build_metadata.json"),
JSON.stringify(metadata)
);