From 4c6c5b868f25f0fcbccd0aa493e995ff8d3531c0 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Tue, 21 Nov 2023 17:03:29 +0100 Subject: [PATCH 01/52] Add import-meta-env --- frontend/.env.example | 12 + frontend/cypress/support/e2e.ts | 18 +- frontend/index.html | 5 + frontend/package-lock.json | 463 +++++++++++++++++- frontend/package.json | 2 + frontend/src/api/geoserver.jsx | 4 +- frontend/src/api/index.ts | 2 +- frontend/src/auth/getOIDCConfig.ts | 8 +- frontend/src/auth/getOIDCUser.ts | 4 +- .../src/features/map/layers/BaseLayer.tsx | 4 +- .../authorization/useGetUserAuthorization.ts | 2 +- frontend/src/index.tsx | 10 +- frontend/vite.config.js | 6 +- infra/configurations/frontend/.env.dev | 24 +- infra/configurations/frontend/.env.local | 24 +- infra/configurations/frontend/.env.prod | 24 +- infra/docker/DockerfileBuildApp | 10 + infra/remote/docker-compose.yml | 16 +- 18 files changed, 569 insertions(+), 69 deletions(-) create mode 100644 frontend/.env.example diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000000..4b627b3ee3 --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1,12 @@ +FRONTEND_GEOSERVER_LOCAL_URL= +FRONTEND_GEOSERVER_REMOTE_URL= +FRONTEND_IS_DEV_ENV= +FRONTEND_MAPBOX_KEY= +FRONTEND_MONITORENV_URL= +FRONTEND_OIDC_AUTHORITY= +FRONTEND_OIDC_CLIENT_ID= +FRONTEND_OIDC_ENABLED= +FRONTEND_OIDC_REDIRECT_URI= +FRONTEND_SENTRY_DSN= +FRONTEND_SHOM_KEY= +VITE_SMALL_CHAT_SNIPPET= diff --git a/frontend/cypress/support/e2e.ts b/frontend/cypress/support/e2e.ts index d649ea10da..844cc13956 100644 --- a/frontend/cypress/support/e2e.ts +++ b/frontend/cypress/support/e2e.ts @@ -114,8 +114,8 @@ beforeEach(() => { statusCode: 200 }) - // DEV :: VITE_GEOSERVER_LOCAL_URL - // PROD :: VITE_GEOSERVER_LOCAL_URL + // DEV :: FRONTEND_GEOSERVER_LOCAL_URL + // PROD :: FRONTEND_GEOSERVER_LOCAL_URL cy.intercept({ url: /^https?:\/\/10\.56\.205\.25:808(1|2)\/.*/ }, req => { req.redirect( req.url @@ -126,7 +126,7 @@ beforeEach(() => { ) }) - // DEV :: VITE_GEOSERVER_REMOTE_URL + // DEV :: FRONTEND_GEOSERVER_REMOTE_URL cy.intercept({ url: /^https?:\/\/monitorfish-test\.csam\.e2\.rie\.gouv\.fr\/.*/ }, req => { req.redirect( req.url @@ -134,7 +134,7 @@ beforeEach(() => { .replace('https://monitorfish-test.csam.e2.rie.gouv.fr', 'http://0.0.0.0:8081') ) }) - // PROD :: VITE_GEOSERVER_REMOTE_URL + // PROD :: FRONTEND_GEOSERVER_REMOTE_URL cy.intercept({ url: /^https?:\/\/monitorfish\.din\.developpement-durable\.gouv\.fr\/.*/ }, req => { req.redirect( req.url @@ -143,7 +143,7 @@ beforeEach(() => { ) }) - // DEV :: VITE_MONITORENV_URL + // DEV :: FRONTEND_MONITORENV_URL cy.intercept({ url: /^https?:\/\/monitorenv\.kadata\.fr\/.*/ }, req => { req.redirect( req.url @@ -151,7 +151,7 @@ beforeEach(() => { .replace('http://monitorenv.kadata.fr', 'https://0.0.0.0:8081') ) }) - // PROD :: VITE_MONITORENV_URL + // PROD :: FRONTEND_MONITORENV_URL cy.intercept({ url: /^https?:\/\/monitorenv\.din\.developpement-durable\.gouv\.fr\/.*/ }, req => { req.redirect( req.url @@ -160,8 +160,8 @@ beforeEach(() => { ) }) - // DEV :: VITE_SENTRY_DSN - // PROD :: VITE_SENTRY_DSN + // DEV :: FRONTEND_SENTRY_DSN + // PROD :: FRONTEND_SENTRY_DSN cy.intercept( { url: /^https:\/\/a5f3272efa794bb9ada2ffea90f2fec5@sentry\.incubateur\.net\/.*/ }, { @@ -169,7 +169,7 @@ beforeEach(() => { } ) - // PROD :: VITE_SMALL_CHAT_SNIPPET + // PROD :: FRONTEND_SMALL_CHAT_SNIPPET cy.intercept( { url: /^https:\/\/embed\.small\.chat\/.*/ }, { diff --git a/frontend/index.html b/frontend/index.html index 46002f0cf9..3cdc1acc3d 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -13,7 +13,12 @@
+ + %VITE_SMALL_CHAT_SNIPPET% + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bd49ec2a78..7bd5f499d8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -64,6 +64,8 @@ "yup": "^1.3.2" }, "devDependencies": { + "@import-meta-env/cli": "^0.6.8", + "@import-meta-env/unplugin": "^0.5.1", "@jest/globals": "29.6.4", "@swc/core": "1.3.95", "@swc/jest": "0.2.29", @@ -2796,6 +2798,211 @@ "react": "*" } }, + "node_modules/@import-meta-env/cli": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@import-meta-env/cli/-/cli-0.6.8.tgz", + "integrity": "sha512-Lunsmlj02yVtI5drlhNwIUFAQ0wsIUYIrz0Nm5jbvmYvyEUsxC8Qotnf3gXTfvM9Yuutvuc2+dx4uXpa3DajTg==", + "dev": true, + "dependencies": { + "commander": "11.1.0", + "glob": "10.3.10", + "picocolors": "1.0.0", + "serialize-javascript": "6.0.1" + }, + "bin": { + "import-meta-env": "bin/import-meta-env.js" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@import-meta-env/babel": "^0.4.3", + "@import-meta-env/swc": "^0.4.5", + "@import-meta-env/unplugin": "^0.4.8 || ^0.5.0", + "dotenv": "^11.0.0 || ^12.0.4 || ^13.0.1 || ^14.3.2 || ^15.0.1 || ^16.0.0" + }, + "peerDependenciesMeta": { + "@import-meta-env/babel": { + "optional": true + }, + "@import-meta-env/swc": { + "optional": true + }, + "@import-meta-env/unplugin": { + "optional": true + } + } + }, + "node_modules/@import-meta-env/cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@import-meta-env/cli/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@import-meta-env/cli/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@import-meta-env/cli/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@import-meta-env/unplugin": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@import-meta-env/unplugin/-/unplugin-0.5.1.tgz", + "integrity": "sha512-2pn+eYha02TY+iJ8WAlGr9SnOx0o+OvddO6lzU9hBxkogWlU9Q1dI/9thacnjL9alOA3R2qGZPd79kaiYtw81A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "magic-string": "^0.30.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "unplugin": "^1.5.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@import-meta-env/cli": "^0.5.1 || ^0.6.0", + "dotenv": "^11.0.0 || ^12.0.4 || ^13.0.1 || ^14.3.2 || ^15.0.1 || ^16.0.0" + }, + "peerDependenciesMeta": { + "@import-meta-env/cli": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3863,6 +4070,16 @@ "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.4.tgz", "integrity": "sha512-kB+NJ5Br56ZhElKsf0pM7/PQfrDdDVMRz8f0JM6eVOGE+L89z9hwcst9QvWBBnazzuqGTGtPsJNZoQ1JdNiGSQ==" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -6650,6 +6867,15 @@ "node": "*" } }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -6978,6 +7204,45 @@ "node": ">= 0.8.0" } }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -10047,6 +10312,34 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -10949,6 +11242,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -11514,6 +11819,24 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -13341,6 +13664,18 @@ "lz-string": "bin/bin.js" } }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -14006,6 +14341,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", @@ -14207,6 +14551,15 @@ "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==", "dev": true }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -14622,6 +14975,31 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", + "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -15103,7 +15481,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -15486,6 +15863,18 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/redux": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", @@ -16077,7 +16466,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -16496,6 +16884,27 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -16577,6 +16986,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -17572,6 +17994,18 @@ "node": ">= 10.0.0" } }, + "node_modules/unplugin": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.1.tgz", + "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==", + "dev": true, + "dependencies": { + "acorn": "^8.11.2", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.0" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -18467,11 +18901,16 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "peer": true, "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.0.tgz", + "integrity": "sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q==", + "dev": true + }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -18633,6 +19072,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 7ef5811a98..992cb380e5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -83,6 +83,8 @@ "yup": "^1.3.2" }, "devDependencies": { + "@import-meta-env/cli": "^0.6.8", + "@import-meta-env/unplugin": "^0.5.1", "@jest/globals": "29.6.4", "@swc/core": "1.3.95", "@swc/jest": "0.2.29", diff --git a/frontend/src/api/geoserver.jsx b/frontend/src/api/geoserver.jsx index 199316497a..341c0c4b17 100644 --- a/frontend/src/api/geoserver.jsx +++ b/frontend/src/api/geoserver.jsx @@ -23,8 +23,8 @@ function getIrretrievableRegulatoryZoneError(e, regulatoryZone) { ) } -export const GEOSERVER_URL = import.meta.env.VITE_GEOSERVER_REMOTE_URL -export const GEOSERVER_BACKOFFICE_URL = import.meta.env.VITE_GEOSERVER_LOCAL_URL +export const GEOSERVER_URL = import.meta.env.FRONTEND_GEOSERVER_REMOTE_URL +export const GEOSERVER_BACKOFFICE_URL = import.meta.env.FRONTEND_GEOSERVER_LOCAL_URL /** * @description This API isn't authenticated diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index 92c43691e0..ef4a9477a4 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -11,7 +11,7 @@ import { normalizeRtkBaseQuery } from '../utils/normalizeRtkBaseQuery' const MAX_RETRIES = 2 // Using local MonitorEnv stubs: -const MONITORENV_API_URL = import.meta.env.VITE_MONITORENV_URL +const MONITORENV_API_URL = import.meta.env.FRONTEND_MONITORENV_URL // Using local MonitorEnv instance: // const MONITORENV_API_URL = 'http://0.0.0.0:9880' diff --git a/frontend/src/auth/getOIDCConfig.ts b/frontend/src/auth/getOIDCConfig.ts index c6c9254ce1..b1744a3f2a 100644 --- a/frontend/src/auth/getOIDCConfig.ts +++ b/frontend/src/auth/getOIDCConfig.ts @@ -5,10 +5,10 @@ import { isCypress } from '../utils/isCypress' const IS_CYPRESS = isCypress() export function getOIDCConfig() { - const IS_OIDC_ENABLED = import.meta.env.VITE_OIDC_ENABLED === 'true' - const OIDC_REDIRECT_URI = import.meta.env.VITE_OIDC_REDIRECT_URI - const OIDC_AUTHORITY = import.meta.env.VITE_OIDC_AUTHORITY - const OIDC_CLIENT_ID = import.meta.env.VITE_OIDC_CLIENT_ID + const IS_OIDC_ENABLED = import.meta.env.FRONTEND_OIDC_ENABLED === 'true' + const OIDC_REDIRECT_URI = import.meta.env.FRONTEND_OIDC_REDIRECT_URI + const OIDC_AUTHORITY = import.meta.env.FRONTEND_OIDC_AUTHORITY + const OIDC_CLIENT_ID = import.meta.env.FRONTEND_OIDC_CLIENT_ID if (IS_OIDC_ENABLED && (!OIDC_REDIRECT_URI || !OIDC_AUTHORITY || !OIDC_CLIENT_ID)) { throw new Error('Cannot setup Cerbère authentication.') diff --git a/frontend/src/auth/getOIDCUser.ts b/frontend/src/auth/getOIDCUser.ts index dd902702cb..2545487dbf 100644 --- a/frontend/src/auth/getOIDCUser.ts +++ b/frontend/src/auth/getOIDCUser.ts @@ -1,8 +1,8 @@ import { User } from 'oidc-client-ts' export function getOIDCUser() { - const OIDC_AUTHORITY = import.meta.env.VITE_OIDC_AUTHORITY - const OIDC_CLIENT_ID = import.meta.env.VITE_OIDC_CLIENT_ID + const OIDC_AUTHORITY = import.meta.env.FRONTEND_OIDC_AUTHORITY + const OIDC_CLIENT_ID = import.meta.env.FRONTEND_OIDC_CLIENT_ID const oidcStorage = localStorage.getItem(`oidc.user:${OIDC_AUTHORITY}:${OIDC_CLIENT_ID}`) if (!oidcStorage) { diff --git a/frontend/src/features/map/layers/BaseLayer.tsx b/frontend/src/features/map/layers/BaseLayer.tsx index 19756a42c7..99392b5c35 100644 --- a/frontend/src/features/map/layers/BaseLayer.tsx +++ b/frontend/src/features/map/layers/BaseLayer.tsx @@ -86,7 +86,7 @@ function UnmemoizedBaseLayer() { source: new XYZ({ maxZoom: 19, url: `https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.jpg90?access_token=${ - import.meta.env.VITE_MAPBOX_KEY + import.meta.env.FRONTEND_MAPBOX_KEY }` }), zIndex: 0 @@ -100,7 +100,7 @@ function UnmemoizedBaseLayer() { // Countries have transparency, so do not fade tiles: transition: 0, - url: `https://services.data.shom.fr/${import.meta.env.VITE_SHOM_KEY}/wms/r` + url: `https://services.data.shom.fr/${import.meta.env.FRONTEND_SHOM_KEY}/wms/r` }), zIndex: 0 }) diff --git a/frontend/src/hooks/authorization/useGetUserAuthorization.ts b/frontend/src/hooks/authorization/useGetUserAuthorization.ts index 443e54f794..d34f9209ca 100644 --- a/frontend/src/hooks/authorization/useGetUserAuthorization.ts +++ b/frontend/src/hooks/authorization/useGetUserAuthorization.ts @@ -9,7 +9,7 @@ import type { UserAuthorization } from '../../domain/entities/authorization/type * Get user authorization */ export function useGetUserAuthorization(): UserAuthorization | undefined { - const IS_OIDC_ENABLED = isCypress() || import.meta.env.VITE_OIDC_ENABLED === 'true' + const IS_OIDC_ENABLED = isCypress() || import.meta.env.FRONTEND_OIDC_ENABLED === 'true' const [userAuthorization, setUserAuthorization] = useState(undefined) useEffect(() => { diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 38f892d7b9..671e49916b 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -19,16 +19,16 @@ import { getOIDCConfig } from './auth/getOIDCConfig' if (import.meta.env.PROD) { // https://docs.sentry.io/platforms/javascript/performance/#configure-the-sample-rate init({ - dsn: import.meta.env.VITE_SENTRY_DSN || '', - environment: import.meta.env.VITE_SENTRY_ENV || '', + dsn: import.meta.env.FRONTEND_SENTRY_DSN || '', + environment: import.meta.env.FRONTEND_SENTRY_ENV || '', integrations: [ new BrowserTracing({ - tracingOrigins: import.meta.env.VITE_SENTRY_TRACING_ORIGINS - ? [import.meta.env.VITE_SENTRY_TRACING_ORIGINS || ''] + tracingOrigins: import.meta.env.FRONTEND_SENTRY_TRACING_ORIGINS + ? [import.meta.env.FRONTEND_SENTRY_TRACING_ORIGINS || ''] : [] }) ], - release: import.meta.env.VITE_MONITORFISH_VERSION || '', + release: import.meta.env.FRONTEND_MONITORFISH_VERSION || '', tracesSampleRate: 1.0 }) } diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 578aa76908..c887f4094e 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -2,6 +2,7 @@ import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' +import importMetaEnv from "@import-meta-env/unplugin" import svgr from 'vite-plugin-svgr' import viteTsconfigPaths from 'vite-tsconfig-paths' @@ -12,7 +13,10 @@ export default defineConfig({ outDir: './build' }, - plugins: [react(), viteTsconfigPaths(), svgr()], + plugins: [react(), viteTsconfigPaths(), svgr(), importMetaEnv.vite({ + env: "../infra/configurations/.env.local", + example: ".env.example" + })], server: { port: 3000, diff --git a/infra/configurations/frontend/.env.dev b/infra/configurations/frontend/.env.dev index 4a9692e14d..5f6233d8c2 100644 --- a/infra/configurations/frontend/.env.dev +++ b/infra/configurations/frontend/.env.dev @@ -1,12 +1,14 @@ -VITE_GEOSERVER_LOCAL_URL=http://10.56.205.25:8081 -VITE_GEOSERVER_REMOTE_URL=http://monitorfish-test.csam.e2.rie.gouv.fr -VITE_IS_DEV_ENV=true -VITE_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ -VITE_MONITORENV_URL=http://monitorenv.kadata.fr -VITE_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish -VITE_OIDC_CLIENT_ID=monitorfish -VITE_OIDC_ENABLED=true -VITE_OIDC_REDIRECT_URI=http://monitorfish-test.csam.e2.rie.gouv.fr -VITE_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 -VITE_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +FRONTEND_GEOSERVER_LOCAL_URL=http://10.56.205.25:8081 +FRONTEND_GEOSERVER_REMOTE_URL=http://monitorfish-test.csam.e2.rie.gouv.fr +FRONTEND_IS_DEV_ENV=true +FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ +FRONTEND_MONITORENV_URL=http://monitorenv.kadata.fr +FRONTEND_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish +FRONTEND_OIDC_CLIENT_ID=monitorfish +FRONTEND_OIDC_ENABLED=true +FRONTEND_OIDC_REDIRECT_URI=http://monitorfish-test.csam.e2.rie.gouv.fr +FRONTEND_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 +FRONTEND_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +# We need to use a VITE_ env var to replace the HTML index file +# see: https://vitejs.dev/guide/env-and-mode.html#html-env-replacement VITE_SMALL_CHAT_SNIPPET= diff --git a/infra/configurations/frontend/.env.local b/infra/configurations/frontend/.env.local index bbf2fea2be..8a535e2bec 100644 --- a/infra/configurations/frontend/.env.local +++ b/infra/configurations/frontend/.env.local @@ -1,12 +1,14 @@ -VITE_GEOSERVER_LOCAL_URL=//localhost:8081 -VITE_GEOSERVER_REMOTE_URL=//localhost:8081 -VITE_IS_DEV_ENV=true -VITE_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ -VITE_MONITORENV_URL=//localhost:8081 -VITE_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish -VITE_OIDC_CLIENT_ID=monitorfish -VITE_OIDC_ENABLED=false -VITE_OIDC_REDIRECT_URI=https://monitorfish.din.developpement-durable.gouv.fr -VITE_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 -VITE_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +FRONTEND_GEOSERVER_LOCAL_URL=//localhost:8081 +FRONTEND_GEOSERVER_REMOTE_URL=//localhost:8081 +FRONTEND_IS_DEV_ENV=true +FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ +FRONTEND_MONITORENV_URL=//localhost:8081 +FRONTEND_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish +FRONTEND_OIDC_CLIENT_ID=monitorfish +FRONTEND_OIDC_ENABLED=false +FRONTEND_OIDC_REDIRECT_URI=https://monitorfish.din.developpement-durable.gouv.fr +FRONTEND_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 +FRONTEND_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +# We need to use a VITE_ env var to replace the HTML index file +# see: https://vitejs.dev/guide/env-and-mode.html#html-env-replacement VITE_SMALL_CHAT_SNIPPET= diff --git a/infra/configurations/frontend/.env.prod b/infra/configurations/frontend/.env.prod index 612d2d4170..537b702809 100644 --- a/infra/configurations/frontend/.env.prod +++ b/infra/configurations/frontend/.env.prod @@ -1,12 +1,14 @@ -VITE_GEOSERVER_LOCAL_URL=https://10.56.205.25:8082 -VITE_GEOSERVER_REMOTE_URL=https://monitorfish.din.developpement-durable.gouv.fr -VITE_IS_DEV_ENV=false -VITE_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ -VITE_MONITORENV_URL=https://monitorenv.din.developpement-durable.gouv.fr -VITE_OIDC_AUTHORITY=https://authentification.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish -VITE_OIDC_CLIENT_ID=monitorfish -VITE_OIDC_ENABLED=false -VITE_OIDC_REDIRECT_URI=https://monitorfish.din.developpement-durable.gouv.fr -VITE_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 -VITE_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +FRONTEND_GEOSERVER_LOCAL_URL=https://10.56.205.25:8082 +FRONTEND_GEOSERVER_REMOTE_URL=https://monitorfish.din.developpement-durable.gouv.fr +FRONTEND_IS_DEV_ENV=false +FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ +FRONTEND_MONITORENV_URL=https://monitorenv.din.developpement-durable.gouv.fr +FRONTEND_OIDC_AUTHORITY=https://authentification.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish +FRONTEND_OIDC_CLIENT_ID=monitorfish +FRONTEND_OIDC_ENABLED=false +FRONTEND_OIDC_REDIRECT_URI=https://monitorfish.din.developpement-durable.gouv.fr +FRONTEND_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 +FRONTEND_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas +# We need to use a VITE_ env var to replace the HTML index file +# see: https://vitejs.dev/guide/env-and-mode.html#html-env-replacement VITE_SMALL_CHAT_SNIPPET='' diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index d11ed3241c..9aa6c896a6 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -46,6 +46,10 @@ WORKDIR /tmp/frontend RUN npm ci RUN npm run build +npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ + --target node20-alpine-x64 \ + --output import-meta-env-alpine + ###################### # Upload sourcemaps # ###################### @@ -113,6 +117,10 @@ USER monitorfish RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ +# Copy import-meta-env-alpine +COPY --from=buildFront /tmp/frontend/import-meta-env-alpine /home/monitorfish/import-meta-env-alpine +COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/.env.example + # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs @@ -129,4 +137,6 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" +ENTRYPOINT ["./home/monitorfish/import-meta-env-alpine -x /home/monitorfish/.env.example"] + CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" diff --git a/infra/remote/docker-compose.yml b/infra/remote/docker-compose.yml index ced42adf4e..41e7f0b356 100644 --- a/infra/remote/docker-compose.yml +++ b/infra/remote/docker-compose.yml @@ -23,15 +23,19 @@ services: user: "monitorfish:${MONITORFISH_LOGS_AND_BACKUPS_GID}" environment: - ENV_DB_URL=jdbc:postgresql://db:5432/$POSTGRES_DB?user=$POSTGRES_USER&password=$POSTGRES_PASSWORD - - VITE_GEOSERVER_REMOTE_URL=https://monitorfish.din.developpement-durable.gouv.fr - - VITE_GEOSERVER_LOCAL_URL=https://10.56.205.25:8082 - - MONITORFISH_OIDC_SECRET=$MONITORFISH_OIDC_SECRET - - VITE_SENTRY_ENV=${SENTRY_ENV} + - FRONTEND_GEOSERVER_REMOTE_URL=https://monitorfish.din.developpement-durable.gouv.fr + - FRONTEND_GEOSERVER_LOCAL_URL=https://10.56.205.25:8082 + - FRONTEND_SENTRY_ENV=${SENTRY_ENV} - SENTRY_DSN=${SENTRY_DSN} - - VITE_SENTRY_TRACING_ORIGINS=${SENTRY_TRACING_ORIGINS} - - VITE_MONITORFISH_VERSION=${MONITORFISH_VERSION} + - FRONTEND_SENTRY_TRACING_ORIGINS=${SENTRY_TRACING_ORIGINS} + - FRONTEND_MONITORFISH_VERSION=${MONITORFISH_VERSION} - SPRING_PROFILES_ACTIVE=prod - HOST_IP=127.0.0.1 + - FRONTEND_MONITORENV_URL=${MONITORENV_URL} + - MONITORENV_URL=${MONITORENV_URL} + - FRONTEND_OIDC_ENABLED=$MONITORFISH_OIDC_ENABLED + - MONITORFISH_OIDC_ENABLED=$MONITORFISH_OIDC_ENABLED + - MONITORFISH_API_PROTECTED_API_KEY=$MONITORFISH_API_PROTECTED_API_KEY ports: - 8880:8880 - 8000:8000 From 2f4bbb3ecca466c5310c76d1579348a3ad2276c6 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Tue, 21 Nov 2023 17:09:51 +0100 Subject: [PATCH 02/52] Add missing RUN --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 9aa6c896a6..63c7cb72fd 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -46,7 +46,7 @@ WORKDIR /tmp/frontend RUN npm ci RUN npm run build -npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ +RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node20-alpine-x64 \ --output import-meta-env-alpine From 395523f9bb5154444ce1f860db0d03886413198b Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Tue, 21 Nov 2023 17:15:37 +0100 Subject: [PATCH 03/52] Use node 18 --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 63c7cb72fd..406af578df 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node20-alpine-x64 \ + --target node18-alpine-x64 \ --output import-meta-env-alpine ###################### From 8e8159a822e26d21ff7a0f7f5df8518f8fa282a8 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Tue, 21 Nov 2023 18:28:10 +0100 Subject: [PATCH 04/52] Use linux target packaging --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 406af578df..20629b87f2 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node18-alpine-x64 \ + --target node18-linux-x64 \ --output import-meta-env-alpine ###################### From 60a1ee57c17923bbaa7106593016a17ae15eebfa Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 09:16:39 +0100 Subject: [PATCH 05/52] Try linux pkg target --- infra/docker/DockerfileBuildApp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 20629b87f2..fe1543799d 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -48,7 +48,7 @@ RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-linux-x64 \ - --output import-meta-env-alpine + --output import-meta-env-linux ###################### # Upload sourcemaps # @@ -118,7 +118,7 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env-alpine -COPY --from=buildFront /tmp/frontend/import-meta-env-alpine /home/monitorfish/import-meta-env-alpine +COPY --from=buildFront /tmp/frontend/import-meta-env-linux /home/monitorfish/import-meta-env-linux COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/.env.example # Add logs folder to be mounted as volume @@ -137,6 +137,6 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -ENTRYPOINT ["./home/monitorfish/import-meta-env-alpine -x /home/monitorfish/.env.example"] +ENTRYPOINT ["./home/monitorfish/import-meta-env-linux -x /home/monitorfish/.env.example"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From 69759a1d4e0f0b159d21d6cbcd20a161857eef48 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 09:26:22 +0100 Subject: [PATCH 06/52] Try few debug logs --- infra/docker/DockerfileBuildApp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index fe1543799d..5d553121ec 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -48,7 +48,9 @@ RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-linux-x64 \ - --output import-meta-env-linux + --output import-meta-env + +RUN ./import-meta-env ###################### # Upload sourcemaps # @@ -117,9 +119,11 @@ USER monitorfish RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ -# Copy import-meta-env-alpine -COPY --from=buildFront /tmp/frontend/import-meta-env-linux /home/monitorfish/import-meta-env-linux +# Copy import-meta-env +COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/.env.example +RUN file /home/monitorfish/import-meta-env +RUN echo /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs @@ -137,6 +141,6 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -ENTRYPOINT ["./home/monitorfish/import-meta-env-linux -x /home/monitorfish/.env.example"] +ENTRYPOINT ["./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From 121e6187685d4ccbf388c4d25393f9b0bfe35058 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 10:37:25 +0100 Subject: [PATCH 07/52] Revert to alpine --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 5d553121ec..1cee95052f 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node18-linux-x64 \ + --target node18-alpine-x64 \ --output import-meta-env RUN ./import-meta-env From 1f5fa1af5a2302af11c7cc12a3a4117170d933c6 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 10:49:36 +0100 Subject: [PATCH 08/52] Copy from last docker stage --- infra/docker/DockerfileBuildApp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 1cee95052f..f11f433c22 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -50,8 +50,6 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-alpine-x64 \ --output import-meta-env -RUN ./import-meta-env - ###################### # Upload sourcemaps # ###################### @@ -65,6 +63,8 @@ ARG SENTRY_PROJECT RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build +COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/frontend/import-meta-env +COPY --from=buildFront /tmp/frontend/.env.example /tmp/frontend/.env.example # Upload sourcemaps to sentry RUN sentry-cli sourcemaps inject /tmp/frontend @@ -120,10 +120,8 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env -COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/.env.example -RUN file /home/monitorfish/import-meta-env -RUN echo /home/monitorfish/.env.example +COPY --from=buildBack /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env +COPY --from=buildBack /tmp/frontend/.env.example /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From c6313d8f68a573c79d2c784fca9d0b4c5dfbb7e0 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 11:03:42 +0100 Subject: [PATCH 09/52] Fix stage name --- infra/docker/DockerfileBuildApp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index f11f433c22..cc861b219b 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -120,8 +120,8 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildBack /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env -COPY --from=buildBack /tmp/frontend/.env.example /home/monitorfish/.env.example +COPY --from=buildSourcemaps /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env +COPY --from=buildSourcemaps /tmp/frontend/.env.example /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From 58b43bf6d72f0b3cae701db4525f85b7f1b78a99 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 11:19:51 +0100 Subject: [PATCH 10/52] Add logging --- adrs/0001-frontend-runtime-env-var-injection.md | 0 infra/docker/DockerfileBuildApp | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 adrs/0001-frontend-runtime-env-var-injection.md diff --git a/adrs/0001-frontend-runtime-env-var-injection.md b/adrs/0001-frontend-runtime-env-var-injection.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index cc861b219b..9d0686240a 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -122,6 +122,8 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env COPY --from=buildSourcemaps /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env COPY --from=buildSourcemaps /tmp/frontend/.env.example /home/monitorfish/.env.example +RUN file /home/monitorfish/import-meta-env +RUN echo /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From 51a96c57a4c8835bcb42570e117c4b8a1d4812f7 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 11:28:45 +0100 Subject: [PATCH 11/52] Add logging --- infra/docker/DockerfileBuildApp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 9d0686240a..28ac7cadb4 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -63,8 +63,8 @@ ARG SENTRY_PROJECT RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build -COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/frontend/import-meta-env -COPY --from=buildFront /tmp/frontend/.env.example /tmp/frontend/.env.example +COPY --from=buildFront /tmp/frontend/.env.example /tmp/.env.example +COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/import-meta-env # Upload sourcemaps to sentry RUN sentry-cli sourcemaps inject /tmp/frontend @@ -120,8 +120,8 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildSourcemaps /tmp/frontend/import-meta-env /home/monitorfish/import-meta-env -COPY --from=buildSourcemaps /tmp/frontend/.env.example /home/monitorfish/.env.example +COPY --from=buildSourcemaps /tmp/import-meta-env /home/monitorfish/import-meta-env +COPY --from=buildSourcemaps /tmp/.env.example /home/monitorfish/.env.example RUN file /home/monitorfish/import-meta-env RUN echo /home/monitorfish/.env.example From c5cf342c462b48a05d4588b73193e24b977c490d Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 11:42:43 +0100 Subject: [PATCH 12/52] Add logging --- infra/docker/DockerfileBuildApp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 28ac7cadb4..b68c38ecc8 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -50,6 +50,9 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-alpine-x64 \ --output import-meta-env +RUN file import-meta-env +RUN file .env.example + ###################### # Upload sourcemaps # ###################### @@ -65,6 +68,8 @@ RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build COPY --from=buildFront /tmp/frontend/.env.example /tmp/.env.example COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/import-meta-env +RUN file /tmp/import-meta-env +RUN echo /tmp/.env.example # Upload sourcemaps to sentry RUN sentry-cli sourcemaps inject /tmp/frontend From aff4c55401eedd967c9b5db7de359a512eb6cc7c Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 11:49:20 +0100 Subject: [PATCH 13/52] Add logging --- infra/docker/DockerfileBuildApp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index b68c38ecc8..0b37a45cf7 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -50,8 +50,8 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-alpine-x64 \ --output import-meta-env -RUN file import-meta-env -RUN file .env.example +RUN echo import-meta-env +RUN echo .env.example ###################### # Upload sourcemaps # From 9ab75dd893351ee183702a9de1f0cc411b05058e Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 12:09:16 +0100 Subject: [PATCH 14/52] Add logging --- infra/docker/DockerfileBuildApp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 0b37a45cf7..44cbed72f1 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -50,8 +50,8 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node18-alpine-x64 \ --output import-meta-env -RUN echo import-meta-env -RUN echo .env.example +RUN cat import-meta-env +RUN cat .env.example ###################### # Upload sourcemaps # @@ -68,8 +68,8 @@ RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build COPY --from=buildFront /tmp/frontend/.env.example /tmp/.env.example COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/import-meta-env -RUN file /tmp/import-meta-env -RUN echo /tmp/.env.example +RUN cat /tmp/import-meta-env +RUN cat /tmp/.env.example # Upload sourcemaps to sentry RUN sentry-cli sourcemaps inject /tmp/frontend @@ -127,8 +127,8 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env COPY --from=buildSourcemaps /tmp/import-meta-env /home/monitorfish/import-meta-env COPY --from=buildSourcemaps /tmp/.env.example /home/monitorfish/.env.example -RUN file /home/monitorfish/import-meta-env -RUN echo /home/monitorfish/.env.example +RUN cat /home/monitorfish/import-meta-env +RUN cat /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From 165aa5b77dcb7ac333f97a270c92f66fedb2dbfc Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 12:16:46 +0100 Subject: [PATCH 15/52] Add logging --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 44cbed72f1..546f6a80ff 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node18-alpine-x64 \ + --target node18-linuxstatic-x64 \ --output import-meta-env RUN cat import-meta-env From 0d5ef52f62d64cbe78e44770314e58c76d2126d8 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 12:49:22 +0100 Subject: [PATCH 16/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 546f6a80ff..6a6b8751c0 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -66,8 +66,8 @@ ARG SENTRY_PROJECT RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build -COPY --from=buildFront /tmp/frontend/.env.example /tmp/.env.example -COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/import-meta-env +COPY --from=buildFront /tmp/frontend/.env.example /tmp/ +COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/ RUN cat /tmp/import-meta-env RUN cat /tmp/.env.example @@ -125,8 +125,8 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildSourcemaps /tmp/import-meta-env /home/monitorfish/import-meta-env -COPY --from=buildSourcemaps /tmp/.env.example /home/monitorfish/.env.example +COPY --from=buildSourcemaps /tmp/import-meta-env /home/monitorfish/ +COPY --from=buildSourcemaps /tmp/.env.example /home/monitorfish/ RUN cat /home/monitorfish/import-meta-env RUN cat /home/monitorfish/.env.example @@ -142,6 +142,10 @@ ENV SPRING_PROFILES_ACTIVE=$ENV_PROFILE RUN echo ${ENV_PROFILE} +USER root +RUN chown monitorfish /home/monitorfish/import-meta-env +RUN chmod +x /home/monitorfish/import-meta-env + USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" From 043c6a65a2c915b631e0d0aab2a8d754a027204f Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:02:46 +0100 Subject: [PATCH 17/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 6a6b8751c0..b50a0a711e 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -150,6 +150,6 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -ENTRYPOINT ["./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example"] +ENTRYPOINT ["./home/monitorfish/import-meta-env", "-x", "/home/monitorfish/.env.example"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From c28575684f87b624ba5294541e93d1f519840584 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:11:42 +0100 Subject: [PATCH 18/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 15 ++++++++------- infra/docker/env.sh | 5 +++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 infra/docker/env.sh diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index b50a0a711e..36eedab915 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -66,10 +66,6 @@ ARG SENTRY_PROJECT RUN mkdir -p /tmp/frontend/build COPY --from=buildFront /tmp/frontend/build /tmp/frontend/build -COPY --from=buildFront /tmp/frontend/.env.example /tmp/ -COPY --from=buildFront /tmp/frontend/import-meta-env /tmp/ -RUN cat /tmp/import-meta-env -RUN cat /tmp/.env.example # Upload sourcemaps to sentry RUN sentry-cli sourcemaps inject /tmp/frontend @@ -125,8 +121,9 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildSourcemaps /tmp/import-meta-env /home/monitorfish/ -COPY --from=buildSourcemaps /tmp/.env.example /home/monitorfish/ +COPY --from=buildFront /tmp/import-meta-env /home/monitorfish/ +COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ +COPY --from=buildFront /tmp/.env.example /home/monitorfish/ RUN cat /home/monitorfish/import-meta-env RUN cat /home/monitorfish/.env.example @@ -146,10 +143,14 @@ USER root RUN chown monitorfish /home/monitorfish/import-meta-env RUN chmod +x /home/monitorfish/import-meta-env +USER root +RUN chown monitorfish /home/monitorfish/env.sh +RUN chmod +x /home/monitorfish/env.sh + USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -ENTRYPOINT ["./home/monitorfish/import-meta-env", "-x", "/home/monitorfish/.env.example"] +ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" diff --git a/infra/docker/env.sh b/infra/docker/env.sh new file mode 100644 index 0000000000..d5f744293a --- /dev/null +++ b/infra/docker/env.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example + +exec "$@" From 57f5b6f554fe3d6f21d6881fcdd84e674c930e35 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:18:00 +0100 Subject: [PATCH 19/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 36eedab915..a46c6cb8bd 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -121,9 +121,9 @@ RUN mkdir /home/monitorfish/public COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env -COPY --from=buildFront /tmp/import-meta-env /home/monitorfish/ +COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ -COPY --from=buildFront /tmp/.env.example /home/monitorfish/ +COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ RUN cat /home/monitorfish/import-meta-env RUN cat /home/monitorfish/.env.example From 80e650d22310b186a67f7dd5dea9fb1ce2203a00 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:21:40 +0100 Subject: [PATCH 20/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index a46c6cb8bd..6aac5a218a 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node18-linuxstatic-x64 \ + --target node18-alpine \ --output import-meta-env RUN cat import-meta-env From f9c1bdffabd69a1488ee18961c4ccab5817b169f Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:36:36 +0100 Subject: [PATCH 21/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 6aac5a218a..b0e2548022 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,12 +47,9 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node18-alpine \ + --target node16-alpine \ --output import-meta-env -RUN cat import-meta-env -RUN cat .env.example - ###################### # Upload sourcemaps # ###################### @@ -124,8 +121,6 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ -RUN cat /home/monitorfish/import-meta-env -RUN cat /home/monitorfish/.env.example # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From 68d9d5f33e2482f7eef42bd959ead5e4d2692d1d Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:36:48 +0100 Subject: [PATCH 22/52] Rework Dockerfile --- infra/docker/env.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infra/docker/env.sh b/infra/docker/env.sh index d5f744293a..7a1a9b2e2d 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,5 +1,6 @@ #!/bin/bash +set -e -./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example +./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -o /home/monitorfish/public/**/* exec "$@" From 4bce7430742e419f87084acb0d24d6e8ba2a2639 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 13:38:56 +0100 Subject: [PATCH 23/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index b0e2548022..640cf11783 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -149,3 +149,4 @@ ENV VITE_GEOSERVER_LOCAL_URL="" ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" + From b0fc30e0bdfeb1338ea59e9c4ce12152ccd68966 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 14:01:13 +0100 Subject: [PATCH 24/52] Rework Dockerfile --- infra/docker/env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 7a1a9b2e2d..6b01103f17 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,6 +1,6 @@ #!/bin/bash set -e -./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -o /home/monitorfish/public/**/* +./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/**/* exec "$@" From 1fe795aa7079dce3c20fb94b2c9b5e5effbad128 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 14:03:54 +0100 Subject: [PATCH 25/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 640cf11783..b0e2548022 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -149,4 +149,3 @@ ENV VITE_GEOSERVER_LOCAL_URL="" ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" - From 8c57396d44804cd557ee9e6b28b453a63fb53f1d Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 14:20:32 +0100 Subject: [PATCH 26/52] Rework Dockerfile --- infra/docker/env.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 6b01103f17..636dabe0d6 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,6 +1,6 @@ #!/bin/bash set -e -./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/**/* +cd /home/monitorfish/ +./import-meta-env -x .env.example -p public/**/* -exec "$@" From 80cc1eb5a4581b2842a0bb70c1c263634882c8ac Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 14:24:13 +0100 Subject: [PATCH 27/52] Rework Dockerfile --- infra/docker/DockerfileBuildApp | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index b0e2548022..640cf11783 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -149,3 +149,4 @@ ENV VITE_GEOSERVER_LOCAL_URL="" ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" + From 73c82bcfa5ca980a9c065f8470ad42a9e45fa652 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:04:49 +0100 Subject: [PATCH 28/52] Add RUN debug --- infra/docker/DockerfileBuildApp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 640cf11783..09e24545f5 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -146,6 +146,8 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" +RUN ./import-meta-env -x .env.example -p public/**/* + ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From b779d1fd2d430d7e9e60150de309c09c4ec55e38 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:16:25 +0100 Subject: [PATCH 29/52] Add local env --- frontend/cypress/docker-compose.yml | 12 +++++++++++ frontend/public/env.js | 2 ++ frontend/runtime-env.js.template | 17 ++++++++++++++++ frontend/src/domain/types/self.ts | 6 ++++++ frontend/src/utils/env.ts | 31 +++++++++++++++++++++++++++++ infra/docker/DockerfileBuildApp | 3 ++- 6 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 frontend/public/env.js create mode 100644 frontend/runtime-env.js.template create mode 100644 frontend/src/domain/types/self.ts create mode 100644 frontend/src/utils/env.ts diff --git a/frontend/cypress/docker-compose.yml b/frontend/cypress/docker-compose.yml index a43f1bff98..bde8366852 100644 --- a/frontend/cypress/docker-compose.yml +++ b/frontend/cypress/docker-compose.yml @@ -34,6 +34,18 @@ services: - SENTRY_DSN= - MONITORENV_URL=http://geoserver-monitorenv-stubs:8080 - MONITORFISH_API_PROTECTED_API_KEY=APIKEY + - FRONTEND_GEOSERVER_LOCAL_URL=//localhost:8081 + - FRONTEND_GEOSERVER_REMOTE_URL=//localhost:8081 + - FRONTEND_IS_DEV_ENV=true + - FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ + - FRONTEND_MONITORENV_URL=//localhost:8081 + - FRONTEND_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish + - FRONTEND_OIDC_CLIENT_ID=monitorfish + - FRONTEND_OIDC_ENABLED=false + - FRONTEND_OIDC_REDIRECT_URI=https://monitorfish.din.developpement-durable.gouv.fr + - FRONTEND_SENTRY_DSN=https://a5f3272efa794bb9ada2ffea90f2fec5@sentry.incubateur.net/8 + - FRONTEND_SHOM_KEY=rg8ele7cft4ujkwjspsmtwas + - VITE_SMALL_CHAT_SNIPPET= ports: - 8880:8880 - 8000:8000 diff --git a/frontend/public/env.js b/frontend/public/env.js new file mode 100644 index 0000000000..f0c24eba1a --- /dev/null +++ b/frontend/public/env.js @@ -0,0 +1,2 @@ +// @ts-ignore +self.env = undefined diff --git a/frontend/runtime-env.js.template b/frontend/runtime-env.js.template new file mode 100644 index 0000000000..2eb98ea5bb --- /dev/null +++ b/frontend/runtime-env.js.template @@ -0,0 +1,17 @@ +/** + * Make sure to add the env variable to the Env enum located in `domain/types/env.ts` + */ +// @ts-ignore +self.env = { + VITE_GEOSERVER_LOCAL_URL: "$VITE_GEOSERVER_LOCAL_URL", + VITE_GEOSERVER_REMOTE_URL: "$VITE_GEOSERVER_REMOTE_URL", + VITE_MAPBOX_KEY: "$VITE_MAPBOX_KEY", + VITE_MONITORENV_URL: "$VITE_MONITORENV_URL", + VITE_OIDC_AUTHORITY: "$VITE_OIDC_AUTHORITY", + VITE_OIDC_CLIENT_ID: "$VITE_OIDC_CLIENT_ID", + VITE_OIDC_ENABLED: "$VITE_OIDC_ENABLED", + VITE_OIDC_REDIRECT_URI: "$VITE_OIDC_REDIRECT_URI", + VITE_SENTRY_DSN: "$VITE_SENTRY_DSN", + VITE_SHOM_KEY: "$VITE_SHOM_KEY", + VITE_SMALL_CHAT_SNIPPET: "$VITE_SMALL_CHAT_SNIPPET" +} diff --git a/frontend/src/domain/types/self.ts b/frontend/src/domain/types/self.ts new file mode 100644 index 0000000000..5923574c13 --- /dev/null +++ b/frontend/src/domain/types/self.ts @@ -0,0 +1,6 @@ +import { Env } from './env' + +export type Self = Window & + typeof globalThis & { + env: Record + } diff --git a/frontend/src/utils/env.ts b/frontend/src/utils/env.ts new file mode 100644 index 0000000000..f5cbcf800a --- /dev/null +++ b/frontend/src/utils/env.ts @@ -0,0 +1,31 @@ +/* eslint-disable no-restricted-globals */ +import type { Env } from '../domain/types/env' +import type { Self } from '../domain/types/self' + +/** + * Get the environment variable: + * - injected by the `env.sh` script at runtime in `window` + * - or from `import.meta.env` + */ +export function env(name: Env) { + if ((self as Self).env) { + const injectedValue = (self as Self).env[name] + + if (injectedValue) { + if (injectedValue === 'true' || injectedValue === 'false') { + return Boolean(injectedValue) + } + + return injectedValue + } + } + + const valueFromProcess = import.meta.env[name] + if (valueFromProcess === 'true' || valueFromProcess === 'false') { + return Boolean(valueFromProcess) + } + + return valueFromProcess +} + +/* eslint-enable no-restricted-globals */ diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 09e24545f5..60629caa2d 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -120,6 +120,7 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ +COPY --from=buildFront /tmp/infra/configurations/frontend/.env.local /home/monitorfish/ COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ # Add logs folder to be mounted as volume @@ -146,7 +147,7 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./import-meta-env -x .env.example -p public/**/* +RUN ./import-meta-env -e .env.local -x .env.example -p public/**/* ENTRYPOINT ["/home/monitorfish/env.sh"] From caa446c69ed14bd17616365492038fb8d9cee4af Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:23:02 +0100 Subject: [PATCH 30/52] Add local env --- frontend/cypress/docker-compose.yml | 6 +++--- infra/docker/DockerfileBuildApp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/cypress/docker-compose.yml b/frontend/cypress/docker-compose.yml index bde8366852..2ccbc95919 100644 --- a/frontend/cypress/docker-compose.yml +++ b/frontend/cypress/docker-compose.yml @@ -32,10 +32,10 @@ services: - SPRING_PROFILES_ACTIVE=local - HOST_IP=127.0.0.1 - SENTRY_DSN= - - MONITORENV_URL=http://geoserver-monitorenv-stubs:8080 + - MONITORENV_URL=http://0.0.0.0:8081 - MONITORFISH_API_PROTECTED_API_KEY=APIKEY - - FRONTEND_GEOSERVER_LOCAL_URL=//localhost:8081 - - FRONTEND_GEOSERVER_REMOTE_URL=//localhost:8081 + - FRONTEND_GEOSERVER_LOCAL_URL=http://0.0.0.0:8081 + - FRONTEND_GEOSERVER_REMOTE_URL=http://0.0.0.0:8081 - FRONTEND_IS_DEV_ENV=true - FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ - FRONTEND_MONITORENV_URL=//localhost:8081 diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 60629caa2d..a7c9cde440 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -147,7 +147,7 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./import-meta-env -e .env.local -x .env.example -p public/**/* +RUN ./import-meta-env -e .env.local -x .env.example -p public ENTRYPOINT ["/home/monitorfish/env.sh"] From 94d839c77379e2b82024636a311371105e5944da Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:28:27 +0100 Subject: [PATCH 31/52] Fix path --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index a7c9cde440..1874ea3142 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -147,7 +147,7 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./import-meta-env -e .env.local -x .env.example -p public +RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html ENTRYPOINT ["/home/monitorfish/env.sh"] From fe6ccb92b7badf6e9440fc6e57cc7bf8e0b4894d Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:34:11 +0100 Subject: [PATCH 32/52] Add chmod permission --- infra/docker/DockerfileBuildApp | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 1874ea3142..a8054f621e 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -142,6 +142,7 @@ RUN chmod +x /home/monitorfish/import-meta-env USER root RUN chown monitorfish /home/monitorfish/env.sh RUN chmod +x /home/monitorfish/env.sh +RUN chmod +rwx public/index.html USER monitorfish From f6c719c334b1daa9b43a6826e9db3051b62e73c9 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:41:40 +0100 Subject: [PATCH 33/52] Add chmod permission --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index a8054f621e..1e6848ab90 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -139,9 +139,9 @@ USER root RUN chown monitorfish /home/monitorfish/import-meta-env RUN chmod +x /home/monitorfish/import-meta-env -USER root RUN chown monitorfish /home/monitorfish/env.sh RUN chmod +x /home/monitorfish/env.sh +RUN chown monitorfish public/index.html RUN chmod +rwx public/index.html USER monitorfish From 83ff3448b16c190aa923fe8c4f3f8cd6b4263979 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 17:48:36 +0100 Subject: [PATCH 34/52] Remove unused env files --- frontend/src/domain/types/self.ts | 6 ------ frontend/src/utils/env.ts | 31 ------------------------------- 2 files changed, 37 deletions(-) delete mode 100644 frontend/src/domain/types/self.ts delete mode 100644 frontend/src/utils/env.ts diff --git a/frontend/src/domain/types/self.ts b/frontend/src/domain/types/self.ts deleted file mode 100644 index 5923574c13..0000000000 --- a/frontend/src/domain/types/self.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Env } from './env' - -export type Self = Window & - typeof globalThis & { - env: Record - } diff --git a/frontend/src/utils/env.ts b/frontend/src/utils/env.ts deleted file mode 100644 index f5cbcf800a..0000000000 --- a/frontend/src/utils/env.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* eslint-disable no-restricted-globals */ -import type { Env } from '../domain/types/env' -import type { Self } from '../domain/types/self' - -/** - * Get the environment variable: - * - injected by the `env.sh` script at runtime in `window` - * - or from `import.meta.env` - */ -export function env(name: Env) { - if ((self as Self).env) { - const injectedValue = (self as Self).env[name] - - if (injectedValue) { - if (injectedValue === 'true' || injectedValue === 'false') { - return Boolean(injectedValue) - } - - return injectedValue - } - } - - const valueFromProcess = import.meta.env[name] - if (valueFromProcess === 'true' || valueFromProcess === 'false') { - return Boolean(valueFromProcess) - } - - return valueFromProcess -} - -/* eslint-enable no-restricted-globals */ From 791ef0c93f832a98089a0bb9db6e71290fc26e4b Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 18:00:44 +0100 Subject: [PATCH 35/52] Modify env.sh --- infra/docker/DockerfileBuildApp | 1 + infra/docker/env.sh | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 1e6848ab90..10aa04943c 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -150,6 +150,7 @@ ENV VITE_GEOSERVER_LOCAL_URL="" RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html + ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 636dabe0d6..085d128bb7 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,6 +1,5 @@ #!/bin/bash -set -e -cd /home/monitorfish/ -./import-meta-env -x .env.example -p public/**/* +./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html +exec "$@" From e91f8dfedc0c86e531e6d54ffb43068e31e936f8 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 18:21:36 +0100 Subject: [PATCH 36/52] Fix monitorenv URL --- 0001-frontend-runtime-env-var-injection.md | 3 + ...0001-frontend-runtime-env-var-injection.md | 67 +++++++++++++++++++ frontend/cypress/docker-compose.yml | 2 +- infra/docker/DockerfileBuildApp | 4 -- 4 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 0001-frontend-runtime-env-var-injection.md diff --git a/0001-frontend-runtime-env-var-injection.md b/0001-frontend-runtime-env-var-injection.md new file mode 100644 index 0000000000..cb32276a8e --- /dev/null +++ b/0001-frontend-runtime-env-var-injection.md @@ -0,0 +1,3 @@ +# Runtime frontend env var injection + + diff --git a/adrs/0001-frontend-runtime-env-var-injection.md b/adrs/0001-frontend-runtime-env-var-injection.md index e69de29bb2..2ca8c0409c 100644 --- a/adrs/0001-frontend-runtime-env-var-injection.md +++ b/adrs/0001-frontend-runtime-env-var-injection.md @@ -0,0 +1,67 @@ +# Injection au runtime des variable d'env dans le frontend + +Date: 22/11/2023 + +## Statut + +Résolu + +## Contexte + +Lors du passage de `CRA` à `Vite`, on a perdu la possibilité d'injecter des variables d'environnements au frontend au runtime. + +Pour respecter les 12-factor app et avoir plus d'agilité dans la gestion des variables d'env, nous allons rajouter cette feature. + +Trois options : +1. Utiliser `import-meta-env` qui injecte dans l'`ENTRYPOINT` docker du backend les variables +2. Ajouter un controlleur `Index` dans le backend, qui retourne le contenu de `index.html` lans lequel il injecte des balises `meta` qui contiennent les variables +3. Utiliser le script `env.sh`, qui injecte dans l'`ENTRYPOINT` docker du backend les variables dans le frontend avec le CLI `sed` + +### Utiliser `import-meta-env` + +Cette méthode utilise un fichier `.env.template` qui défini les variables à injecter dynamiquement et gére le développement `compile-time` et la production `runtime`. + +Un fichier `.env.example` permet de filtrer les variables à injecter dans le frontend. + +Il faut rajouter dans l'image docker finale le script `import-meta-env` (préalablement packagé avec `npx pkg`) pour effectuer l'injection dans le fichier `index.html`. + +Cette méthode nécessite de rajouter une nouvelle lib dans notre étape de build. + +### Ajouter un controlleur `Index` dans le backend + +Cette méthode demande: +- D'ajouter les balises `meta` dans le payload retourné sur `/`. (i.e ``) +- De rendre les nom d'assets déterministes (i.e `/assets/index.js`) + - Cela nous oblige à avoir la gestion du cache dans ce controlleur, avec par exemple un `hash=randomString` généré au démarrage +- L'objet JS généré à la volée avec les balises `meta` ne sera pas typé +- Il faut modifier l'env de dev pour avoir + - un build `Vite` "watché" au lieu d'un run de dev watché par défaut + - un `.setCacheControl()` dans le backend pour éviter le caching en dev + +### Utiliser le script `env.sh` + +Ce script utilise un object `env` pour stocker les variables (i.e): +``` +self.env = { + REACT_APP_MONITORENV_URL: '__REACT_APP_MONITORENV_URL__' +} +``` + +Et un script au démarrage de l'image docker avec `ENTRYPOINT ["/home/monitorfish/env.sh"]` (i.e): +``` +sed -i 's#__REACT_APP_MONITORENV_URL__#'"$REACT_APP_MONITORENV_URL"'#g' /home/monitorfish/public/env.js +``` + +- Cette méthode construit un objet `env` non-typé + +## Décision + +Nous rajoutons une injection au runtime des dépendances avec `import-meta-env`. + +Cet outil permet: +1) De ne pas dupliquer la spécification des variables +2) Ne change pas la façon de gérer les env var de `Vite`: `import.meta.env` + +## Conséquences + +Nos devons **obligatoirement** spécifier toutes les variables d'env dans le docker-compose lors du run de l'application `backend` (qui contient le frontend). diff --git a/frontend/cypress/docker-compose.yml b/frontend/cypress/docker-compose.yml index 2ccbc95919..04fba7edc1 100644 --- a/frontend/cypress/docker-compose.yml +++ b/frontend/cypress/docker-compose.yml @@ -38,7 +38,7 @@ services: - FRONTEND_GEOSERVER_REMOTE_URL=http://0.0.0.0:8081 - FRONTEND_IS_DEV_ENV=true - FRONTEND_MAPBOX_KEY=pk.eyJ1IjoibW9uaXRvcmZpc2giLCJhIjoiY2tsdHJ6dHhhMGZ0eDJ2bjhtZmJlOHJmZiJ9.bdi1cO-cUcZKXdkEkqAoZQ - - FRONTEND_MONITORENV_URL=//localhost:8081 + - FRONTEND_MONITORENV_URL=http://0.0.0.0:8081 - FRONTEND_OIDC_AUTHORITY=https://authentification.recette.din.developpement-durable.gouv.fr/authSAML/oidc/monitorfish - FRONTEND_OIDC_CLIENT_ID=monitorfish - FRONTEND_OIDC_ENABLED=false diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 10aa04943c..18ee33a487 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -120,7 +120,6 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ -COPY --from=buildFront /tmp/infra/configurations/frontend/.env.local /home/monitorfish/ COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ # Add logs folder to be mounted as volume @@ -148,9 +147,6 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html - - ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From dfa52117d1f36fc1d7d2f2a7524f566c00ba03d8 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 18:24:14 +0100 Subject: [PATCH 37/52] Delete unused files --- 0001-frontend-runtime-env-var-injection.md | 3 --- frontend/public/env.js | 2 -- frontend/runtime-env.js.template | 17 ----------------- 3 files changed, 22 deletions(-) delete mode 100644 0001-frontend-runtime-env-var-injection.md delete mode 100644 frontend/public/env.js delete mode 100644 frontend/runtime-env.js.template diff --git a/0001-frontend-runtime-env-var-injection.md b/0001-frontend-runtime-env-var-injection.md deleted file mode 100644 index cb32276a8e..0000000000 --- a/0001-frontend-runtime-env-var-injection.md +++ /dev/null @@ -1,3 +0,0 @@ -# Runtime frontend env var injection - - diff --git a/frontend/public/env.js b/frontend/public/env.js deleted file mode 100644 index f0c24eba1a..0000000000 --- a/frontend/public/env.js +++ /dev/null @@ -1,2 +0,0 @@ -// @ts-ignore -self.env = undefined diff --git a/frontend/runtime-env.js.template b/frontend/runtime-env.js.template deleted file mode 100644 index 2eb98ea5bb..0000000000 --- a/frontend/runtime-env.js.template +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Make sure to add the env variable to the Env enum located in `domain/types/env.ts` - */ -// @ts-ignore -self.env = { - VITE_GEOSERVER_LOCAL_URL: "$VITE_GEOSERVER_LOCAL_URL", - VITE_GEOSERVER_REMOTE_URL: "$VITE_GEOSERVER_REMOTE_URL", - VITE_MAPBOX_KEY: "$VITE_MAPBOX_KEY", - VITE_MONITORENV_URL: "$VITE_MONITORENV_URL", - VITE_OIDC_AUTHORITY: "$VITE_OIDC_AUTHORITY", - VITE_OIDC_CLIENT_ID: "$VITE_OIDC_CLIENT_ID", - VITE_OIDC_ENABLED: "$VITE_OIDC_ENABLED", - VITE_OIDC_REDIRECT_URI: "$VITE_OIDC_REDIRECT_URI", - VITE_SENTRY_DSN: "$VITE_SENTRY_DSN", - VITE_SHOM_KEY: "$VITE_SHOM_KEY", - VITE_SMALL_CHAT_SNIPPET: "$VITE_SMALL_CHAT_SNIPPET" -} From 810b8a797f86da339b1eff65722765c397ffa655 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 19:14:53 +0100 Subject: [PATCH 38/52] Add RUN of env.sh --- infra/docker/DockerfileBuildApp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 18ee33a487..53c4852147 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -147,6 +147,8 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" +RUN /home/monitorfish/env.sh + ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From 959e794d114ba1579a99db53a8db14f2788d9624 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 19:35:13 +0100 Subject: [PATCH 39/52] Add logging --- infra/docker/DockerfileBuildApp | 2 +- infra/docker/env.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 53c4852147..e52f1e29fa 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -119,8 +119,8 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ # Copy import-meta-env COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ -COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ +COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 085d128bb7..698c9bd4ce 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,5 +1,7 @@ #!/bin/bash +ls /home/monitorfish/ +cat /home/monitorfish/import-meta-env ./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html exec "$@" From d14b6daa7de4ded7c0146d3f51db36f3b9e67e7d Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 19:48:29 +0100 Subject: [PATCH 40/52] Change pkg target --- infra/docker/DockerfileBuildApp | 2 +- infra/docker/env.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index e52f1e29fa..0bfa3aba97 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node16-alpine \ + --target node16-alpine-x64 \ --output import-meta-env ###################### diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 698c9bd4ce..a6429ccaba 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,7 +1,7 @@ #!/bin/bash +set -e -ls /home/monitorfish/ -cat /home/monitorfish/import-meta-env +ls -al /home/monitorfish/ ./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html exec "$@" From 3212afd4524c9f4393d8303a4ac80e74e9dbe1d2 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 19:48:54 +0100 Subject: [PATCH 41/52] Change pkg target as linuxstatic --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 0bfa3aba97..1c0e9e8cd1 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node16-alpine-x64 \ + --target node16-linuxstatic-x64 \ --output import-meta-env ###################### From cb5c56d1c12b30f2a1156a8526a0f454502035b3 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 19:49:10 +0100 Subject: [PATCH 42/52] Change pkg target as linux --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 1c0e9e8cd1..c152686cda 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node16-linuxstatic-x64 \ + --target node16-linux-x64 \ --output import-meta-env ###################### From 71d027a68cce69b4bb9e834ccb01e988c3622871 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:00:32 +0100 Subject: [PATCH 43/52] Debug --- infra/docker/DockerfileBuildApp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index c152686cda..c5ab199b91 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -47,7 +47,7 @@ RUN npm ci RUN npm run build RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ - --target node16-linux-x64 \ + --target node16-alpine-x64 \ --output import-meta-env ###################### @@ -147,9 +147,11 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN /home/monitorfish/env.sh +RUN ./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html -ENTRYPOINT ["/home/monitorfish/env.sh"] +RUN bash -c /home/monitorfish/env.sh + +ENTRYPOINT ["./home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From 761e6fc3abda9345e7dd2e944849a75a7ee4a2bc Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:06:16 +0100 Subject: [PATCH 44/52] Fix paths --- infra/docker/DockerfileBuildApp | 2 +- infra/docker/env.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index c5ab199b91..a00a3ccd48 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -147,7 +147,7 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html +RUN ./import-meta-env -x .env.example -p public/index.html RUN bash -c /home/monitorfish/env.sh diff --git a/infra/docker/env.sh b/infra/docker/env.sh index a6429ccaba..6649e3fd6b 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -2,6 +2,6 @@ set -e ls -al /home/monitorfish/ -./home/monitorfish/import-meta-env -x /home/monitorfish/.env.example -p /home/monitorfish/public/index.html +./import-meta-env -x .env.example -p public/index.html exec "$@" From 487925329cd979b0acdf53edeeee11c7d2a5927e Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:10:58 +0100 Subject: [PATCH 45/52] Fix paths --- infra/docker/DockerfileBuildApp | 4 +--- infra/docker/env.sh | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index a00a3ccd48..8270518515 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -147,9 +147,7 @@ USER monitorfish ENV VITE_GEOSERVER_LOCAL_URL="" -RUN ./import-meta-env -x .env.example -p public/index.html - -RUN bash -c /home/monitorfish/env.sh +RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html ENTRYPOINT ["./home/monitorfish/env.sh"] diff --git a/infra/docker/env.sh b/infra/docker/env.sh index 6649e3fd6b..f561f3ea0c 100644 --- a/infra/docker/env.sh +++ b/infra/docker/env.sh @@ -1,7 +1,6 @@ #!/bin/bash set -e -ls -al /home/monitorfish/ ./import-meta-env -x .env.example -p public/index.html exec "$@" From 8e914080e52dfb0d619f0f060b25752747bb8454 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:16:36 +0100 Subject: [PATCH 46/52] Fix paths --- infra/docker/DockerfileBuildApp | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 8270518515..a9a0799292 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -121,6 +121,7 @@ COPY --from=buildSourcemaps /tmp/frontend/build /home/monitorfish/public/ COPY --from=buildFront /tmp/frontend/import-meta-env /home/monitorfish/ COPY --from=buildFront /tmp/frontend/.env.example /home/monitorfish/ COPY --from=buildFront /tmp/infra/docker/env.sh /home/monitorfish/ +COPY --from=buildFront /tmp/infra/configurations/frontend/.env.local /home/monitorfish/ # Add logs folder to be mounted as volume RUN mkdir /home/monitorfish/logs From af9c3e2d8fecfab09a5fb3cc38441b5bbf8e5c63 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:24:33 +0100 Subject: [PATCH 47/52] Fix paths --- infra/docker/DockerfileBuildApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index a9a0799292..92bef21e9f 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -150,7 +150,7 @@ ENV VITE_GEOSERVER_LOCAL_URL="" RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html -ENTRYPOINT ["./home/monitorfish/env.sh"] +ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" From ee3e65b1741ce75ba4ff292442d6aed08145459f Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Wed, 22 Nov 2023 20:39:56 +0100 Subject: [PATCH 48/52] Fix monitorenv URL --- frontend/cypress/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/docker-compose.yml b/frontend/cypress/docker-compose.yml index 04fba7edc1..840d6a35f8 100644 --- a/frontend/cypress/docker-compose.yml +++ b/frontend/cypress/docker-compose.yml @@ -32,7 +32,7 @@ services: - SPRING_PROFILES_ACTIVE=local - HOST_IP=127.0.0.1 - SENTRY_DSN= - - MONITORENV_URL=http://0.0.0.0:8081 + - MONITORENV_URL=http://geoserver-monitorenv-stubs:8080 - MONITORFISH_API_PROTECTED_API_KEY=APIKEY - FRONTEND_GEOSERVER_LOCAL_URL=http://0.0.0.0:8081 - FRONTEND_GEOSERVER_REMOTE_URL=http://0.0.0.0:8081 From 99f56084a50d04ef4bc35f3d186b6e57beb720a5 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Thu, 23 Nov 2023 09:22:34 +0100 Subject: [PATCH 49/52] Remove unused intercepts in cypress --- frontend/cypress/support/e2e.ts | 46 --------------------------------- 1 file changed, 46 deletions(-) diff --git a/frontend/cypress/support/e2e.ts b/frontend/cypress/support/e2e.ts index 844cc13956..870955ff8c 100644 --- a/frontend/cypress/support/e2e.ts +++ b/frontend/cypress/support/e2e.ts @@ -114,52 +114,6 @@ beforeEach(() => { statusCode: 200 }) - // DEV :: FRONTEND_GEOSERVER_LOCAL_URL - // PROD :: FRONTEND_GEOSERVER_LOCAL_URL - cy.intercept({ url: /^https?:\/\/10\.56\.205\.25:808(1|2)\/.*/ }, req => { - req.redirect( - req.url - .replace('http://10.56.205.25:8081', 'http://0.0.0.0:8081') - .replace('http://10.56.205.25:8082', 'http://0.0.0.0:8081') - .replace('https://10.56.205.25:8081', 'http://0.0.0.0:8081') - .replace('https://10.56.205.25:8082', 'http://0.0.0.0:8081') - ) - }) - - // DEV :: FRONTEND_GEOSERVER_REMOTE_URL - cy.intercept({ url: /^https?:\/\/monitorfish-test\.csam\.e2\.rie\.gouv\.fr\/.*/ }, req => { - req.redirect( - req.url - .replace('http://monitorfish-test.csam.e2.rie.gouv.fr', 'http://0.0.0.0:8081') - .replace('https://monitorfish-test.csam.e2.rie.gouv.fr', 'http://0.0.0.0:8081') - ) - }) - // PROD :: FRONTEND_GEOSERVER_REMOTE_URL - cy.intercept({ url: /^https?:\/\/monitorfish\.din\.developpement-durable\.gouv\.fr\/.*/ }, req => { - req.redirect( - req.url - .replace('http://monitorfish.din.developpement-durable.gouv.fr', 'http://0.0.0.0:8081') - .replace('https://monitorfish.din.developpement-durable.gouv.fr', 'http://0.0.0.0:8081') - ) - }) - - // DEV :: FRONTEND_MONITORENV_URL - cy.intercept({ url: /^https?:\/\/monitorenv\.kadata\.fr\/.*/ }, req => { - req.redirect( - req.url - .replace('http://monitorenv.kadata.fr', 'http://0.0.0.0:8081') - .replace('http://monitorenv.kadata.fr', 'https://0.0.0.0:8081') - ) - }) - // PROD :: FRONTEND_MONITORENV_URL - cy.intercept({ url: /^https?:\/\/monitorenv\.din\.developpement-durable\.gouv\.fr\/.*/ }, req => { - req.redirect( - req.url - .replace('http://monitorenv.din.developpement-durable.gouv.fr', 'http://0.0.0.0:8081') - .replace('https://monitorenv.din.developpement-durable.gouv.fr', 'http://0.0.0.0:8081') - ) - }) - // DEV :: FRONTEND_SENTRY_DSN // PROD :: FRONTEND_SENTRY_DSN cy.intercept( From c36a5236da4bf65c85aace0fe4446bb1b804b8c5 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Thu, 23 Nov 2023 10:20:06 +0100 Subject: [PATCH 50/52] Add comments --- frontend/index.html | 3 +++ infra/docker/DockerfileBuildApp | 1 + 2 files changed, 4 insertions(+) diff --git a/frontend/index.html b/frontend/index.html index 3cdc1acc3d..c3ef58db6c 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -16,6 +16,9 @@ %VITE_SMALL_CHAT_SNIPPET% + + + diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 92bef21e9f..3ddb08b09f 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -46,6 +46,7 @@ WORKDIR /tmp/frontend RUN npm ci RUN npm run build +# Create an `import-meta-env` Alpine executable without node, to be copied to the final image RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ --target node16-alpine-x64 \ --output import-meta-env From 7d6c31ca78ca3d2cd252fb4ecfb47225bbd18310 Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Thu, 23 Nov 2023 10:21:42 +0100 Subject: [PATCH 51/52] Add doc link --- frontend/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/index.html b/frontend/index.html index c3ef58db6c..ad93b5a08e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -16,9 +16,10 @@ %VITE_SMALL_CHAT_SNIPPET% - + + From 27b56e080b9043f113e90ef83c17ffa2f3d119aa Mon Sep 17 00:00:00 2001 From: Loup Theron Date: Thu, 23 Nov 2023 12:49:59 +0100 Subject: [PATCH 52/52] Remove empty line --- infra/docker/DockerfileBuildApp | 1 - 1 file changed, 1 deletion(-) diff --git a/infra/docker/DockerfileBuildApp b/infra/docker/DockerfileBuildApp index 3ddb08b09f..27690a63d4 100644 --- a/infra/docker/DockerfileBuildApp +++ b/infra/docker/DockerfileBuildApp @@ -154,4 +154,3 @@ RUN ./import-meta-env -e .env.local -x .env.example -p public/index.html ENTRYPOINT ["/home/monitorfish/env.sh"] CMD exec java -Dspring.config.additional-location="/home/monitorfish/configurations/" -jar "monitorfish-${VERSION}.jar" -