diff --git a/.github/workflows/push_docker.yaml b/.github/workflows/push_docker.yaml index 4e91a69..28c941d 100644 --- a/.github/workflows/push_docker.yaml +++ b/.github/workflows/push_docker.yaml @@ -32,6 +32,12 @@ jobs: with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: "get hitster version" + run: | + cd client + npm i @corteks/gitversion + export HITSTER_VERSION=$(npm run version --silent) - name: Build and push Docker dev image if: startsWith(github.ref, 'refs/heads/development') @@ -43,6 +49,7 @@ jobs: tags: tonironaldbarth/hitster:dev cache-from: type=gha cache-to: type=gha,mode=max + build-args: HITSTER_VERSION=${{ HITSTER_VERSION }} - name: Build and push Docker stable image if: startsWith(github.ref, 'refs/tags') && !github.event_type != 'pull_request' @@ -54,3 +61,4 @@ jobs: tags: tonironaldbarth/hitster:latest , tonironaldbarth/hitster:${{ github.ref_name }} cache-from: type=gha cache-to: type=gha,mode=max + build-args: HITSTER_VERSION=${{ HITSTER_VERSION }} diff --git a/Dockerfile b/Dockerfile index 3e8c3d2..1a965d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM node:20 AS client_build_image +ARG HITSTER_VERSION + WORKDIR /app # build cache first @@ -10,7 +12,7 @@ RUN npm install && rm /app/*.json # build everything else -COPY ./client/ ./server/Cargo.toml /app/ +COPY ./client/ /app/ RUN npm run build diff --git a/client/package-lock.json b/client/package-lock.json index 6a1548d..2810d71 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -37,6 +37,7 @@ "zod": "^3.22.4" }, "devDependencies": { + "@corteks/gitversion": "^0.3.4", "@types/boolify-string": "^0.0.32", "@types/howler": "^2.2.11", "@types/react": "^18.2.56", @@ -51,7 +52,6 @@ "eslint-plugin-react-refresh": "^0.4.5", "prettier": "^3.2.5", "prettier-plugin-organize-imports": "^4.1.0", - "toml": "^3.0.0", "typescript": "^5.2.2", "vite": "^5.1.4", "vite-plugin-checker": "^0.8.0", @@ -96,6 +96,13 @@ "node": ">=6.9.0" } }, + "node_modules/@corteks/gitversion": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@corteks/gitversion/-/gitversion-0.3.4.tgz", + "integrity": "sha512-zZ4gGSnGwiHTJdfnD3TFjVxPfC3jU820JMySp2uziM/x7WGFMnRZbcyiD1DICICdVuN8B6gXGE2YnD8Btq0FWg==", + "dev": true, + "license": "GPL V3" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -3591,13 +3598,6 @@ "node": ">=8.0" } }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", - "dev": true, - "license": "MIT" - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", diff --git a/client/package.json b/client/package.json index bad4cb9..7efb0ac 100644 --- a/client/package.json +++ b/client/package.json @@ -1,14 +1,15 @@ { "name": "hitster-client", "private": true, - "version": "0.2.0", + "version": "0.1.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc && vite build", "build-dev": "tsc && vite build --sourcemap true --minify false", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "version": "node -e \"import('@corteks/gitversion').then(({getFormattedVersion: _}) => _().then((v) => console.log(v)))\"" }, "dependencies": { "@lomray/event-manager": "^2.0.2", @@ -40,6 +41,7 @@ "zod": "^3.22.4" }, "devDependencies": { + "@corteks/gitversion": "^0.3.4", "@types/boolify-string": "^0.0.32", "@types/howler": "^2.2.11", "@types/react": "^18.2.56", @@ -54,7 +56,6 @@ "eslint-plugin-react-refresh": "^0.4.5", "prettier": "^3.2.5", "prettier-plugin-organize-imports": "^4.1.0", - "toml": "^3.0.0", "typescript": "^5.2.2", "vite": "^5.1.4", "vite-plugin-checker": "^0.8.0", diff --git a/client/src/locale/de.json b/client/src/locale/de.json index 5b70e50..76d8308 100644 --- a/client/src/locale/de.json +++ b/client/src/locale/de.json @@ -147,7 +147,7 @@ "howToPlay": "Wie wird gespielt?", "allRightsReserved": "Alle Rechte vorbehalten", "sourceCodeAvailableAt": "Quellcode verfügbar auf <0>GitHub0>", - "version": "Client-Version: {{clientVersion}} | Server-Version: {{serverVersion}}", + "version": "Version: {{version}}", "ownedBy": "Diese inoffizielle Version basiert auf dem originalen Hitster-Kartenspiel, welches <0>Koninklijke Jumbo B.V.0> gehört.", "issue": "Für Lob, Kritik oder Fehlermeldungen, eröffnen Sie bitte ein <0>Issue auf GitHub0>.", "mainMenu": "Hauptmenü", diff --git a/client/src/locale/en.json b/client/src/locale/en.json index a51bc96..c867cf4 100644 --- a/client/src/locale/en.json +++ b/client/src/locale/en.json @@ -147,7 +147,7 @@ "howToPlay": "How to play the game", "allRightsReserved": "All rights reserved", "sourceCodeAvailableAt": "Source Code available at <0>GitHub0>", - "version": "Client Version: {{clientVersion}} | Server Version: {{serverVersion}}", + "version": "Version: {{version}}", "ownedBy": "This unofficial version is based on the original Hitster card game which is owned by <0>Koninklijke Jumbo B.V.0>.", "issue": "For bug reports and general feedback please open a <0>GitHub issue0>.", "mainMenu": "Main menu", diff --git a/client/src/navigation.tsx b/client/src/navigation.tsx index d55cd09..76984ed 100644 --- a/client/src/navigation.tsx +++ b/client/src/navigation.tsx @@ -88,8 +88,7 @@ export default function Navigation({ user }: { user: User | null }) {
{t("version", { - clientVersion: "__CLIENT_VERSION__", - serverVersion: "__SERVER_VERSION__", + version: "__VERSION__", })}
diff --git a/client/vite.config.ts b/client/vite.config.ts index f70141a..b0972a1 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -1,47 +1,38 @@ +import { getFormattedVersion } from "@corteks/gitversion" import react from "@vitejs/plugin-react-swc" -import fs from "fs" -import toml from "toml" import { defineConfig, splitVendorChunkPlugin } from "vite" import checker from "vite-plugin-checker" import replace from "vite-plugin-filter-replace" import viteTsconfigPaths from "vite-tsconfig-paths" -import pkg from "./package.json" -let server_version: string = "UNKNOWN" +// https://vitejs.dev/config/ +export default defineConfig(async () => { + let version: string = process.env.HITSTER_VERSION ?? await getFormattedVersion() -try { - server_version = toml.parse( - fs.readFileSync("../server/Cargo.toml", { encoding: "utf-8" }), - ).package.version -} catch (e) { - server_version = toml.parse( - fs.readFileSync("./Cargo.toml", { encoding: "utf-8" }), - ).package.version -} + if(version === "0.0.0-null") { + // fallback + version = "unknown" + } -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [ - react(), - viteTsconfigPaths(), - checker({ - typescript: true, - }), - splitVendorChunkPlugin(), - replace([ - { - filter: "src/navigation.tsx", - replace: [ - { - from: /__CLIENT_VERSION__/g, - to: pkg.version, - }, - { - from: /__SERVER_VERSION__/g, - to: server_version, - }, - ], - }, - ]), - ], + return { + plugins: [ + react(), + viteTsconfigPaths(), + checker({ + typescript: true, + }), + splitVendorChunkPlugin(), + replace([ + { + filter: "src/navigation.tsx", + replace: [ + { + from: /__VERSION__/g, + to: version, + }, + ], + }, + ]), + ], + } }) diff --git a/server/Cargo.toml b/server/Cargo.toml index cd15507..4c49336 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hitster-server" -version = "0.2.1" +version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html