Implemented about page.
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
This commit is contained in:
parent
afce36b30a
commit
645a1b6220
5
.gitignore
vendored
5
.gitignore
vendored
@ -141,4 +141,7 @@ gcodefile
|
||||
gcodefiles/*
|
||||
gcodefiles
|
||||
|
||||
test-results.xml
|
||||
test-results.xml
|
||||
|
||||
# Jenkins generated build metadata
|
||||
src/buildInfo.json
|
||||
|
||||
10
Jenkinsfile
vendored
10
Jenkinsfile
vendored
@ -23,6 +23,16 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
stage('Write Build Metadata') {
|
||||
steps {
|
||||
nodejs(nodeJSInstallationName: 'Node23') {
|
||||
sh '''
|
||||
node -e "const fs = require('fs'); fs.writeFileSync('src/buildInfo.json', JSON.stringify({ buildNumber: process.env.BUILD_NUMBER || 'dev' }, null, 2) + '\\n');"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install Dependencies') {
|
||||
steps {
|
||||
nodejs(nodeJSInstallationName: 'Node23') {
|
||||
|
||||
@ -60,6 +60,7 @@ import {
|
||||
csvRoutes,
|
||||
appLaunchRoutes,
|
||||
appUpdateRoutes,
|
||||
serverRoutes,
|
||||
} from './routes/index.js';
|
||||
import path from 'path';
|
||||
import * as fs from 'fs';
|
||||
@ -187,6 +188,7 @@ app.use('/excel', excelRoutes);
|
||||
app.use('/csv', csvRoutes);
|
||||
app.use('/applaunch', appLaunchRoutes);
|
||||
app.use('/appupdate', appUpdateRoutes);
|
||||
app.use('/server', serverRoutes);
|
||||
|
||||
// Start the application
|
||||
if (process.env.NODE_ENV !== 'test') {
|
||||
|
||||
@ -53,6 +53,7 @@ import excelRoutes from './misc/excel.js';
|
||||
import csvRoutes from './misc/csv.js';
|
||||
import appLaunchRoutes from './misc/applaunch.js';
|
||||
import appUpdateRoutes from './misc/appupdate.js';
|
||||
import serverRoutes from './misc/server.js';
|
||||
|
||||
export {
|
||||
userRoutes,
|
||||
@ -110,4 +111,5 @@ export {
|
||||
csvRoutes,
|
||||
appLaunchRoutes,
|
||||
appUpdateRoutes,
|
||||
serverRoutes,
|
||||
};
|
||||
|
||||
9
src/routes/misc/server.js
Normal file
9
src/routes/misc/server.js
Normal file
@ -0,0 +1,9 @@
|
||||
import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
import { serverVersionRouteHandler } from '../../services/misc/server.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/version', isAuthenticated, serverVersionRouteHandler);
|
||||
|
||||
export default router;
|
||||
@ -19,7 +19,7 @@ const buildApiUrl = (baseUrl, query = '') => {
|
||||
};
|
||||
|
||||
const getBranchBuildApiUrl = (branchUrl, buildType = 'lastSuccessfulBuild') =>
|
||||
`${normalizeProjectUrl(branchUrl)}/${buildType}/api/json?tree=number,url,result,timestamp,artifacts[fileName,relativePath]`;
|
||||
`${normalizeProjectUrl(branchUrl)}/${buildType}/api/json?tree=number,url,result,displayName,timestamp,artifacts[fileName,relativePath]`;
|
||||
|
||||
const mapArtifacts = (build, requestedBranch) => {
|
||||
const buildUrl = normalizeProjectUrl(build?.url);
|
||||
@ -107,8 +107,10 @@ export const appUpdateCurrentRouteHandler = async (req, res) => {
|
||||
return res.send({
|
||||
branch: requestedBranch,
|
||||
buildNumber: build.number,
|
||||
|
||||
buildUrl: build.url,
|
||||
buildResult: build.result,
|
||||
buildName: build.displayName,
|
||||
buildTimestamp: build.timestamp,
|
||||
buildSource: source,
|
||||
artifacts: mapArtifacts(build, requestedBranch),
|
||||
|
||||
28
src/services/misc/server.js
Normal file
28
src/services/misc/server.js
Normal file
@ -0,0 +1,28 @@
|
||||
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);
|
||||
|
||||
const getServerVersionInfo = () => {
|
||||
const packageJson = readJsonFile(packageJsonUrl);
|
||||
const buildInfo = readJsonFile(buildInfoUrl);
|
||||
|
||||
return {
|
||||
version: packageJson.version ?? 'dev',
|
||||
buildNumber: buildInfo.buildNumber ?? 'dev',
|
||||
};
|
||||
};
|
||||
|
||||
export const serverVersionRouteHandler = (req, res) => {
|
||||
res.json({
|
||||
...getServerVersionInfo(),
|
||||
});
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user