From a7fa3d53fbcd722001dd94338ad87766f2471d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Dombya?= <135591453+hervedombya@users.noreply.github.com> Date: Fri, 28 Feb 2025 16:29:41 +0100 Subject: [PATCH] ARTESCA-14679 // add version in remoteEntry file Add step to retrieve METALK8S_VERSION in build workflow Remove METALK8S_VERSION retrieval step and add version fallback in doit.sh Refactor version retrieval logic in doit.sh and entrypoint.sh to improve clarity and maintainability Update VERSION_FILE path in entrypoint.sh for consistency Update Dockerfile to include VERSION file and remove version retrieval logic from entrypoint.sh Update Dockerfile and rspack.config.ts to remove VERSION file dependency and use git revision for filename Update Dockerfile to copy VERSION file and modify rspack.config.ts to read version from the file Update Dockerfile to create VERSION file with version details during build --- ui/Dockerfile | 4 ++++ ui/rspack.config.ts | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ui/Dockerfile b/ui/Dockerfile index 32a22b8175..15fed06ee8 100644 --- a/ui/Dockerfile +++ b/ui/Dockerfile @@ -9,6 +9,10 @@ WORKDIR /home/node COPY package.json package-lock.json tsconfig.json /home/node/ RUN npm ci --legacy-peer-deps +USER root +RUN mkdir -p /home && echo -e "VERSION_MAJOR=1\nVERSION_MINOR=0\nVERSION_PATCH=0\nVERSION_SUFFIX=" > /home/VERSION +USER node + COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] diff --git a/ui/rspack.config.ts b/ui/rspack.config.ts index 244eb7fafd..c7fdf41d90 100644 --- a/ui/rspack.config.ts +++ b/ui/rspack.config.ts @@ -3,11 +3,25 @@ import packageJson from './package.json'; import { Configuration } from '@rspack/cli'; import rspack from '@rspack/core'; import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack'; +import fs from 'fs'; const deps = packageJson.dependencies; const isProduction = process.env.NODE_ENV === 'production'; +let version = process.env.VERSION; +if (!version) { + const versionFileContents = fs.readFileSync( + path.join(__dirname, '../VERSION'), + { encoding: 'utf-8' }, + ); + const versionRegex = + /.*VERSION_MAJOR=(?\d+)(\n){0,1}.*VERSION_MINOR=(?\d+)(\n){0,1}.*VERSION_PATCH=(?\d+)(\n){0,1}.*VERSION_SUFFIX=(?.*)/m; + const { versionMajor, versionMinor, versionPatch, versionSuffix } = + versionRegex.exec(versionFileContents).groups; + version = `${versionMajor}.${versionMinor}.${versionPatch}${versionSuffix}`; +} + const config: Configuration = { entry: { metalk8s_ui: './src/index.ts', @@ -97,7 +111,7 @@ const config: Configuration = { plugins: [ new ModuleFederationPlugin({ name: 'metalk8s', - filename: 'static/js/remoteEntry.js', + filename: `static/js/remoteEntry.${version}.js`, exposes: { './FederableApp': './src/FederableApp.tsx', './platformLibrary': './src/services/platformlibrary/k8s.ts',