Skip to content

Commit f998b59

Browse files
committed
use config.js from code base when deploying
1 parent 3fbb446 commit f998b59

4 files changed

Lines changed: 43 additions & 133 deletions

File tree

.github/workflows/deploy-beta-testing.yml

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,7 @@ jobs:
4444
OIDC_TOKEN_ENDPOINT: ${{ secrets.BETA_OIDC_TOKEN_ENDPOINT }}
4545
OIDC_LOGOUT_ENDPOINT: ${{ secrets.BETA_OIDC_LOGOUT_ENDPOINT }}
4646
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.BETA_OIDC_STORAGE_KEY_PREFIX }}
47-
run: |
48-
mkdir -p ./dist
49-
cat > ./dist/config.js <<EOF
50-
window.__APP_CONFIG__ = {
51-
backendUrl: "${DATAVERSE_BACKEND_URL}",
52-
oidc: {
53-
clientId: "${OIDC_CLIENT_ID}",
54-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
55-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
56-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
57-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
58-
},
59-
languages: [
60-
{ code: 'en', name: 'English' },
61-
{ code: 'es', name: 'Español' }
62-
],
63-
defaultLanguage: 'en'
64-
}
65-
EOF
47+
run: node ./scripts/write-runtime-config.mjs
6648
shell: bash
6749

6850
- uses: actions/upload-artifact@v4

.github/workflows/deploy.yml

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,7 @@ jobs:
5353
OIDC_TOKEN_ENDPOINT: ${{ secrets.BETA_OIDC_TOKEN_ENDPOINT }}
5454
OIDC_LOGOUT_ENDPOINT: ${{ secrets.BETA_OIDC_LOGOUT_ENDPOINT }}
5555
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.BETA_OIDC_STORAGE_KEY_PREFIX }}
56-
run: |
57-
mkdir -p ./dist
58-
cat > ./dist/config.js <<EOF
59-
window.__APP_CONFIG__ = {
60-
backendUrl: "${DATAVERSE_BACKEND_URL}",
61-
oidc: {
62-
clientId: "${OIDC_CLIENT_ID}",
63-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
64-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
65-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
66-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
67-
},
68-
languages: [
69-
{ code: 'en', name: 'English' },
70-
{ code: 'es', name: 'Español' },
71-
],
72-
defaultLanguage: 'en'
73-
}
74-
EOF
56+
run: node ./scripts/write-runtime-config.mjs
7557

7658
- name: Override runtime config.js for QA
7759
if: ${{ github.event.inputs.environment == 'qa' }}
@@ -82,25 +64,7 @@ jobs:
8264
OIDC_TOKEN_ENDPOINT: ${{ secrets.QA_OIDC_TOKEN_ENDPOINT }}
8365
OIDC_LOGOUT_ENDPOINT: ${{ secrets.QA_OIDC_LOGOUT_ENDPOINT }}
8466
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.QA_OIDC_STORAGE_KEY_PREFIX }}
85-
run: |
86-
mkdir -p ./dist
87-
cat > ./dist/config.js <<EOF
88-
window.__APP_CONFIG__ = {
89-
backendUrl: "${DATAVERSE_BACKEND_URL}",
90-
oidc: {
91-
clientId: "${OIDC_CLIENT_ID}",
92-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
93-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
94-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
95-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
96-
},
97-
languages: [
98-
{ code: 'en', name: 'English' },
99-
{ code: 'es', name: 'Español' },
100-
],
101-
defaultLanguage: 'en'
102-
}
103-
EOF
67+
run: node ./scripts/write-runtime-config.mjs
10468

10569
- name: Override runtime config.js for DEMO
10670
if: ${{ github.event.inputs.environment == 'demo' }}
@@ -111,25 +75,7 @@ jobs:
11175
OIDC_TOKEN_ENDPOINT: ${{ secrets.DEMO_OIDC_TOKEN_ENDPOINT }}
11276
OIDC_LOGOUT_ENDPOINT: ${{ secrets.DEMO_OIDC_LOGOUT_ENDPOINT }}
11377
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.DEMO_OIDC_STORAGE_KEY_PREFIX }}
114-
run: |
115-
mkdir -p ./dist
116-
cat > ./dist/config.js <<EOF
117-
window.__APP_CONFIG__ = {
118-
backendUrl: "${DATAVERSE_BACKEND_URL}",
119-
oidc: {
120-
clientId: "${OIDC_CLIENT_ID}",
121-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
122-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
123-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
124-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
125-
},
126-
languages: [
127-
{ code: 'en', name: 'English' },
128-
{ code: 'es', name: 'Español' },
129-
],
130-
defaultLanguage: 'en'
131-
}
132-
EOF
78+
run: node ./scripts/write-runtime-config.mjs
13379

13480
- uses: actions/upload-artifact@v4
13581
with:

.github/workflows/generate-war.yml

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,7 @@ jobs:
5353
OIDC_TOKEN_ENDPOINT: ${{ secrets.BETA_OIDC_TOKEN_ENDPOINT }}
5454
OIDC_LOGOUT_ENDPOINT: ${{ secrets.BETA_OIDC_LOGOUT_ENDPOINT }}
5555
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.BETA_OIDC_STORAGE_KEY_PREFIX }}
56-
run: |
57-
mkdir -p ./dist
58-
cat > ./dist/config.js <<EOF
59-
window.__APP_CONFIG__ = {
60-
backendUrl: "${DATAVERSE_BACKEND_URL}",
61-
oidc: {
62-
clientId: "${OIDC_CLIENT_ID}",
63-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
64-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
65-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
66-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
67-
},
68-
languages: [
69-
{ code: 'en', name: 'English' },
70-
{ code: 'es', name: 'Español' },
71-
],
72-
defaultLanguage: 'en'
73-
}
74-
EOF
56+
run: node ./scripts/write-runtime-config.mjs
7557

7658
- name: Override runtime config.js for QA
7759
if: ${{ github.event.inputs.environment == 'qa' }}
@@ -82,25 +64,7 @@ jobs:
8264
OIDC_TOKEN_ENDPOINT: ${{ secrets.QA_OIDC_TOKEN_ENDPOINT }}
8365
OIDC_LOGOUT_ENDPOINT: ${{ secrets.QA_OIDC_LOGOUT_ENDPOINT }}
8466
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.QA_OIDC_STORAGE_KEY_PREFIX }}
85-
run: |
86-
mkdir -p ./dist
87-
cat > ./dist/config.js <<EOF
88-
window.__APP_CONFIG__ = {
89-
backendUrl: "${DATAVERSE_BACKEND_URL}",
90-
oidc: {
91-
clientId: "${OIDC_CLIENT_ID}",
92-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
93-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
94-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
95-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
96-
},
97-
languages: [
98-
{ code: 'en', name: 'English' },
99-
{ code: 'es', name: 'Español' },
100-
],
101-
defaultLanguage: 'en'
102-
}
103-
EOF
67+
run: node ./scripts/write-runtime-config.mjs
10468

10569
- name: Override runtime config.js for DEMO
10670
if: ${{ github.event.inputs.environment == 'demo' }}
@@ -111,25 +75,7 @@ jobs:
11175
OIDC_TOKEN_ENDPOINT: ${{ secrets.DEMO_OIDC_TOKEN_ENDPOINT }}
11276
OIDC_LOGOUT_ENDPOINT: ${{ secrets.DEMO_OIDC_LOGOUT_ENDPOINT }}
11377
OIDC_STORAGE_KEY_PREFIX: ${{ secrets.DEMO_OIDC_STORAGE_KEY_PREFIX }}
114-
run: |
115-
mkdir -p ./dist
116-
cat > ./dist/config.js <<EOF
117-
window.__APP_CONFIG__ = {
118-
backendUrl: "${DATAVERSE_BACKEND_URL}",
119-
oidc: {
120-
clientId: "${OIDC_CLIENT_ID}",
121-
authorizationEndpoint: "${OIDC_AUTHORIZATION_ENDPOINT}",
122-
tokenEndpoint: "${OIDC_TOKEN_ENDPOINT}",
123-
logoutEndpoint: "${OIDC_LOGOUT_ENDPOINT}",
124-
localStorageKeyPrefix: "${OIDC_STORAGE_KEY_PREFIX}"
125-
},
126-
languages: [
127-
{ code: 'en', name: 'English' },
128-
{ code: 'es', name: 'Español' },
129-
],
130-
defaultLanguage: 'en'
131-
}
132-
EOF
78+
run: node ./scripts/write-runtime-config.mjs
13379

13480
- uses: actions/upload-artifact@v4
13581
with:

scripts/write-runtime-config.mjs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { mkdir, readFile, writeFile } from 'node:fs/promises'
2+
import path from 'node:path'
3+
import vm from 'node:vm'
4+
5+
const sourcePath = path.resolve('public/config.js')
6+
const outputPath = path.resolve('dist/config.js')
7+
8+
const source = await readFile(sourcePath, 'utf8')
9+
10+
const sandbox = { window: {} }
11+
vm.createContext(sandbox)
12+
new vm.Script(source, { filename: sourcePath }).runInContext(sandbox)
13+
14+
const baseConfig = sandbox.window.__APP_CONFIG__
15+
16+
if (!baseConfig || typeof baseConfig !== 'object') {
17+
throw new Error(`Expected window.__APP_CONFIG__ to be defined in ${sourcePath}`)
18+
}
19+
20+
const withOverride = (key, value) => (value ? { [key]: value } : {})
21+
22+
const runtimeConfig = {
23+
...baseConfig,
24+
...withOverride('backendUrl', process.env.DATAVERSE_BACKEND_URL),
25+
oidc: {
26+
...baseConfig.oidc,
27+
...withOverride('clientId', process.env.OIDC_CLIENT_ID),
28+
...withOverride('authorizationEndpoint', process.env.OIDC_AUTHORIZATION_ENDPOINT),
29+
...withOverride('tokenEndpoint', process.env.OIDC_TOKEN_ENDPOINT),
30+
...withOverride('logoutEndpoint', process.env.OIDC_LOGOUT_ENDPOINT),
31+
...withOverride('localStorageKeyPrefix', process.env.OIDC_STORAGE_KEY_PREFIX)
32+
}
33+
}
34+
35+
await mkdir(path.dirname(outputPath), { recursive: true })
36+
await writeFile(outputPath, `window.__APP_CONFIG__ = ${JSON.stringify(runtimeConfig, null, 2)}\n`)

0 commit comments

Comments
 (0)