From 872258b04c2670f2126968770d6c44983f6a2276 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 25 Jun 2025 09:13:17 +0100 Subject: [PATCH] embed git commit info in nodeinfo&c this will make it much easier to debug problems for instances that run unreleased versions! when run on a tagged commit, `git describe --tags` prints the tag name; otherwise it prints something like `2025.4.3-32-ga4c0ef824c` which means: - the closest tag is 2025.4.3 - there are 32 commits between that tag and this commit - this commit's id is `a4c0ef824c` (the `g` is just a prefix) notice that the version as reported by the frontend (in `/about-sharkey` for example) is _not_ changed, that one is still sourced from `/package.json` (so, for example, you don't get a "sharkey has been updated!" pop-up every time) --- packages/backend/src/boot/master.ts | 4 ++-- packages/backend/src/boot/worker.ts | 2 +- packages/backend/src/config.ts | 2 +- scripts/build-pre.js | 13 ++++++++++++- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index a90228eabc..607e8de340 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -51,7 +51,7 @@ function greet() { } bootLogger.info('Welcome to Sharkey!'); - bootLogger.info(`Sharkey v${meta.version}`, null, true); + bootLogger.info(`Sharkey v${meta.gitVersion ?? meta.version}`, null, true); } /** @@ -91,7 +91,7 @@ export async function masterMain() { maxBreadcrumbs: 0, // Set release version - release: 'Sharkey@' + meta.version, + release: 'Sharkey@' + (meta.gitVersion ?? meta.version), ...config.sentryForBackend.options, }); diff --git a/packages/backend/src/boot/worker.ts b/packages/backend/src/boot/worker.ts index 494e7c8c10..8cf3cadd22 100644 --- a/packages/backend/src/boot/worker.ts +++ b/packages/backend/src/boot/worker.ts @@ -37,7 +37,7 @@ export async function workerMain() { maxBreadcrumbs: 0, // Set release version - release: "Sharkey@" + meta.version, + release: "Sharkey@" + (meta.gitVersion ?? meta.version), ...config.sentryForBackend.options, }); diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index c2e7efd456..fa284c6526 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -397,7 +397,7 @@ export function loadConfig(): Config { applyEnvOverrides(config); const url = tryCreateUrl(config.url ?? process.env.MISSKEY_URL ?? ''); - const version = meta.version; + const version = meta.gitVersion ?? meta.version; const host = url.host; const hostname = url.hostname; const scheme = url.protocol.replace(/:$/, ''); diff --git a/scripts/build-pre.js b/scripts/build-pre.js index a90d53c75d..8b2e29d8f3 100644 --- a/scripts/build-pre.js +++ b/scripts/build-pre.js @@ -5,13 +5,24 @@ const fs = require('fs'); const packageJsonPath = __dirname + '/../package.json' +const { execFileSync } = require('node:child_process'); function build() { + let gitVersion; + try { + gitVersion = execFileSync('git', ['describe', '--tags'], { + encoding: 'utf-8', + }); + gitVersion = gitVersion.trim(); + } catch (e) { + console.warn("couldn't get git commit details, ignoring",e); + } + try { const json = fs.readFileSync(packageJsonPath, 'utf-8') const meta = JSON.parse(json); fs.mkdirSync(__dirname + '/../built', { recursive: true }); - fs.writeFileSync(__dirname + '/../built/meta.json', JSON.stringify({ version: meta.version }), 'utf-8'); + fs.writeFileSync(__dirname + '/../built/meta.json', JSON.stringify({ version: meta.version, gitVersion }), 'utf-8'); } catch (e) { console.error(e) }