From 403ac5b2b685df9d6f27081cd30efbeea06a24d3 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Tue, 4 Nov 2025 16:46:13 +0100 Subject: [PATCH 1/7] wip --- .../frontend_build_test_libraries.yml | 8 +----- .../frontend_publish_release_candidate.yml | 2 -- .github/workflows/frontend_publish_to_npm.yml | 25 +++++++++++++++++ frontend/package.json | 6 ++-- .../shared/src/lib/constants/versions.ts | 28 +++++++++++++++++-- frontend/src/assets/build.js | 5 ++++ 6 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 frontend/src/assets/build.js diff --git a/.github/workflows/frontend_build_test_libraries.yml b/.github/workflows/frontend_build_test_libraries.yml index fba34d7920..c3cec9037c 100644 --- a/.github/workflows/frontend_build_test_libraries.yml +++ b/.github/workflows/frontend_build_test_libraries.yml @@ -5,12 +5,6 @@ permissions: on: workflow_call: - inputs: - project_version: - description: "The determined project version. Required for release-candidate and releases, not for snapshot" - required: false - type: string - default: "" outputs: build_artifact_name: description: Build artifact this workflow produces that can be retrieved with the 'download-artifact' action @@ -147,7 +141,7 @@ jobs: run: | npm run libs-increment-all -- ${PROJECT_VERSION} npm run copy-frontend-version - npx ng build @valtimo/shared + # npx ng build @valtimo/shared - name: Cache built frontend libraries uses: actions/cache/save@v4 diff --git a/.github/workflows/frontend_publish_release_candidate.yml b/.github/workflows/frontend_publish_release_candidate.yml index 7997853581..9bc35eacf1 100644 --- a/.github/workflows/frontend_publish_release_candidate.yml +++ b/.github/workflows/frontend_publish_release_candidate.yml @@ -30,8 +30,6 @@ jobs: build_and_test: needs: ["determine_version"] uses: ./.github/workflows/frontend_build_test_libraries.yml - with: - project_version: ${{ needs.determine_version.outputs.project_version }} secrets: inherit publish: diff --git a/.github/workflows/frontend_publish_to_npm.yml b/.github/workflows/frontend_publish_to_npm.yml index 970d1af306..df451e15fb 100644 --- a/.github/workflows/frontend_publish_to_npm.yml +++ b/.github/workflows/frontend_publish_to_npm.yml @@ -6,6 +6,7 @@ on: project_version: description: "The determined project version. Required for release-candidate, not for snapshot" required: false + default: "" type: string frontend_libraries_build_artifact_name: required: true @@ -31,6 +32,30 @@ jobs: name: ${{ inputs.frontend_libraries_build_artifact_name }} path: frontend/dist + - name: Determine project version + id: determine_project_version + if: inputs.project_version == '' + env: + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + BUILD_NUMBER: ${{ github.run_number }} + run: | + # replace special characters with - and make all-lowercase + SAFE_BRANCH_NAME=$(echo "$BRANCH_NAME" | sed 's/[\/+|<>,;]/-/g' | tr '[:upper:]' '[:lower:]') + + SEMVER_VERSION=$(cat gradle.properties | grep 'projectVersion=' | cut -d '=' -f 2) + PROJECT_VERSION="${SEMVER_VERSION}-${SAFE_BRANCH_NAME}.${BUILD_NUMBER}" + + echo "Version is ${PROJECT_VERSION}" + echo "project_version=${PROJECT_VERSION}" >> $GITHUB_OUTPUT + + - name: Set project version on all libraries + env: + PROJECT_VERSION: ${{ inputs.project_version || steps.determine_project_version.outputs.project_version }} + run: | + npm run libs-increment-all -- ${PROJECT_VERSION} './projects/valtimo' + sed -i 's/{{{APP_VERSION}}}/${PROJECT_VERSION}/" frontend/src/assets/build.js + npm run copy-frontend-version + - name: "Publish all libs to NPM" env: NPM_JS_REPOSITORY_AUTH_TOKEN: ${{ secrets.NPM_JS_REPOSITORY_AUTH_TOKEN }} diff --git a/frontend/package.json b/frontend/package.json index b4d78e7e1a..13b32a8837 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -96,7 +96,7 @@ "libs:build-6:object-management": "ng build @valtimo/object-management", "libs:build-7:zgw": "ng build @valtimo/zgw", "libs:build-7:iko": "ng build @valtimo/iko", - "libs:build-7:copy-version": "npm run copy-frontend-version", + // "libs:build-7:copy-version": "npm run copy-frontend-version", "libs:build:case-migration": "ng build @valtimo/case-migration", "libs:build:keycloak": "ng build @valtimo/keycloak", "libs:build:form-view-model": "ng build @valtimo/form-view-model", @@ -190,7 +190,7 @@ "libs:lint:access-control-management": "ng lint @valtimo/access-control-management", "libs:lint:logging": "ng lint @valtimo/logging", "libs:lint:iko": "ng lint @valtimo/iko", - "copy-frontend-version": "node scripts/copy-frontend-version.js", + // "copy-frontend-version": "node scripts/copy-frontend-version.js", "libs-increment-all": "node scripts/libs.increment.all.js", "libs-publish-all": "node scripts/libs.publish.all.js" }, @@ -361,4 +361,4 @@ "@nx/nx-darwin-arm64": "20.8.1", "@nx/nx-linux-x64-gnu": "20.8.1" } -} +} \ No newline at end of file diff --git a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts index 0b8fbf9588..2ff55a472a 100644 --- a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts +++ b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts @@ -16,8 +16,32 @@ import {Versions} from '../models'; -const VERSIONS: Versions = { - frontendLibraries: '13.0.1', +const FALLBACK_VERSION = 'unknown'; +const VERSION_ASSET_URL = new URL('../../assets/core/version.json', import.meta.url); + +const versionRef: {current: string} = { + current: FALLBACK_VERSION, }; +if (typeof window !== 'undefined' && typeof fetch === 'function') { + fetch(VERSION_ASSET_URL.href) + .then((response) => (response.ok ? response.json() : undefined)) + .then((payload: {appVersion?: string} | undefined) => { + const version = payload?.appVersion?.trim(); + + if (version) { + versionRef.current = version; + } + }) + .catch(() => { + // ignore and retain fallback + }); +} + +const VERSIONS: Versions = { + get frontendLibraries() { + return versionRef.current; + }, +} as Versions; + export {VERSIONS}; diff --git a/frontend/src/assets/build.js b/frontend/src/assets/build.js new file mode 100644 index 0000000000..bb7da22cc9 --- /dev/null +++ b/frontend/src/assets/build.js @@ -0,0 +1,5 @@ +// Values that are set at build time + +(function (window) { + window['build']['appVersion'] = '{{{APP_VERSION}}}'; +})(this); From 908b98f2b7c4a0b7ec198a9a42b555c32c675420 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 10:18:14 +0100 Subject: [PATCH 2/7] read project version from a static asset --- frontend/package.json | 2 -- .../valtimo/shared/assets/version.json | 4 +++ .../shared/src/lib/constants/versions.ts | 35 +++++++------------ 3 files changed, 16 insertions(+), 25 deletions(-) create mode 100644 frontend/projects/valtimo/shared/assets/version.json diff --git a/frontend/package.json b/frontend/package.json index 13b32a8837..d6bfbc8486 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -96,7 +96,6 @@ "libs:build-6:object-management": "ng build @valtimo/object-management", "libs:build-7:zgw": "ng build @valtimo/zgw", "libs:build-7:iko": "ng build @valtimo/iko", - // "libs:build-7:copy-version": "npm run copy-frontend-version", "libs:build:case-migration": "ng build @valtimo/case-migration", "libs:build:keycloak": "ng build @valtimo/keycloak", "libs:build:form-view-model": "ng build @valtimo/form-view-model", @@ -190,7 +189,6 @@ "libs:lint:access-control-management": "ng lint @valtimo/access-control-management", "libs:lint:logging": "ng lint @valtimo/logging", "libs:lint:iko": "ng lint @valtimo/iko", - // "copy-frontend-version": "node scripts/copy-frontend-version.js", "libs-increment-all": "node scripts/libs.increment.all.js", "libs-publish-all": "node scripts/libs.publish.all.js" }, diff --git a/frontend/projects/valtimo/shared/assets/version.json b/frontend/projects/valtimo/shared/assets/version.json new file mode 100644 index 0000000000..a73b2c7ada --- /dev/null +++ b/frontend/projects/valtimo/shared/assets/version.json @@ -0,0 +1,4 @@ +// Filled in in the build pipeline +{ + "appVersion": "13.5.0" +} \ No newline at end of file diff --git a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts index 2ff55a472a..59842d9a4e 100644 --- a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts +++ b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts @@ -16,32 +16,21 @@ import {Versions} from '../models'; -const FALLBACK_VERSION = 'unknown'; -const VERSION_ASSET_URL = new URL('../../assets/core/version.json', import.meta.url); - -const versionRef: {current: string} = { - current: FALLBACK_VERSION, -}; - -if (typeof window !== 'undefined' && typeof fetch === 'function') { - fetch(VERSION_ASSET_URL.href) - .then((response) => (response.ok ? response.json() : undefined)) - .then((payload: {appVersion?: string} | undefined) => { - const version = payload?.appVersion?.trim(); - - if (version) { - versionRef.current = version; - } - }) - .catch(() => { - // ignore and retain fallback - }); +async function getLibVersion() { + let version = 'unknown'; + try { + const VERSION_ASSET_URL = new URL('../../assets/version.json', import.meta.url); + const versionRes = await fetch(VERSION_ASSET_URL); + const versionJson = await versionRes.json(); + version = versionJson.appVersion; + } catch (err) { + console.error(err); + } + return version; } const VERSIONS: Versions = { - get frontendLibraries() { - return versionRef.current; - }, + frontendLibraries: await getLibVersion(), } as Versions; export {VERSIONS}; From 88838dbc3284f6cc44539790a18147cb145abc44 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 10:53:22 +0100 Subject: [PATCH 3/7] remove build.js --- frontend/src/assets/build.js | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 frontend/src/assets/build.js diff --git a/frontend/src/assets/build.js b/frontend/src/assets/build.js deleted file mode 100644 index bb7da22cc9..0000000000 --- a/frontend/src/assets/build.js +++ /dev/null @@ -1,5 +0,0 @@ -// Values that are set at build time - -(function (window) { - window['build']['appVersion'] = '{{{APP_VERSION}}}'; -})(this); From fc26ddb89fb79f8fa5d364a40157ee404f09dca0 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 11:03:02 +0100 Subject: [PATCH 4/7] update frontend publishing logic --- .github/workflows/frontend_publish_to_npm.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/frontend_publish_to_npm.yml b/.github/workflows/frontend_publish_to_npm.yml index df451e15fb..0e8297e131 100644 --- a/.github/workflows/frontend_publish_to_npm.yml +++ b/.github/workflows/frontend_publish_to_npm.yml @@ -53,8 +53,8 @@ jobs: PROJECT_VERSION: ${{ inputs.project_version || steps.determine_project_version.outputs.project_version }} run: | npm run libs-increment-all -- ${PROJECT_VERSION} './projects/valtimo' - sed -i 's/{{{APP_VERSION}}}/${PROJECT_VERSION}/" frontend/src/assets/build.js - npm run copy-frontend-version + frontend_libs_version_asset='frontend/dist/valtimo/shared/assets/version.json' + jq ".appVersion = \"${PROJECT_VERSION}\"" "$frontend_libs_version_asset" - name: "Publish all libs to NPM" env: From 01f865e3f7e3f90a1b8d41e3029dc370cbc0d1a3 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 11:11:14 +0100 Subject: [PATCH 5/7] fix version retrieval --- frontend/projects/valtimo/shared/assets/version.json | 1 - .../projects/valtimo/shared/src/lib/constants/versions.ts | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/projects/valtimo/shared/assets/version.json b/frontend/projects/valtimo/shared/assets/version.json index a73b2c7ada..3919e71614 100644 --- a/frontend/projects/valtimo/shared/assets/version.json +++ b/frontend/projects/valtimo/shared/assets/version.json @@ -1,4 +1,3 @@ -// Filled in in the build pipeline { "appVersion": "13.5.0" } \ No newline at end of file diff --git a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts index 59842d9a4e..0b25d5b775 100644 --- a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts +++ b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts @@ -30,7 +30,9 @@ async function getLibVersion() { } const VERSIONS: Versions = { - frontendLibraries: await getLibVersion(), + frontendLibraries: 'unknown', } as Versions; +getLibVersion().then(version => (VERSIONS.frontendLibraries = version)); + export {VERSIONS}; From f68d0ad1cf9173dbca55526ff41ab1813bfa9ba5 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 15:48:23 +0100 Subject: [PATCH 6/7] fix version url --- frontend/projects/valtimo/shared/src/lib/constants/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts index 0b25d5b775..9bec151dbe 100644 --- a/frontend/projects/valtimo/shared/src/lib/constants/versions.ts +++ b/frontend/projects/valtimo/shared/src/lib/constants/versions.ts @@ -19,7 +19,7 @@ import {Versions} from '../models'; async function getLibVersion() { let version = 'unknown'; try { - const VERSION_ASSET_URL = new URL('../../assets/version.json', import.meta.url); + const VERSION_ASSET_URL = '/valtimo-translation/version.json'; const versionRes = await fetch(VERSION_ASSET_URL); const versionJson = await versionRes.json(); version = versionJson.appVersion; From 5585732f1ff96a1dfcebbf165a393ea1bff02322 Mon Sep 17 00:00:00 2001 From: Sjors Holtrop Date: Fri, 7 Nov 2025 16:22:11 +0100 Subject: [PATCH 7/7] fix workflow --- .github/workflows/frontend_build_test_libraries.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/frontend_build_test_libraries.yml b/.github/workflows/frontend_build_test_libraries.yml index c3cec9037c..5ddac90da7 100644 --- a/.github/workflows/frontend_build_test_libraries.yml +++ b/.github/workflows/frontend_build_test_libraries.yml @@ -140,8 +140,6 @@ jobs: PROJECT_VERSION: ${{ needs.determine_project_version.outputs.project_version }} run: | npm run libs-increment-all -- ${PROJECT_VERSION} - npm run copy-frontend-version - # npx ng build @valtimo/shared - name: Cache built frontend libraries uses: actions/cache/save@v4