Skip to content

Commit

Permalink
feat: add environment variables
Browse files Browse the repository at this point in the history
- pass variables through Dockerfile and github workflows
- perform runtime validation in env.config.js
- document required variables in .env.local.example
  • Loading branch information
kevinstadler committed Nov 14, 2024
1 parent a11cd08 commit 2413213
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 0 deletions.
19 changes: 19 additions & 0 deletions .env.local.example
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,22 @@ ENV_VALIDATION="enabled"
# NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION=
NEXT_PUBLIC_MATOMO_BASE_URL="https://matomo.acdh.oeaw.ac.at"
# NEXT_PUBLIC_MATOMO_ID=

# -------------------------------------------------------------------------------------------------
# typesense
# -------------------------------------------------------------------------------------------------
NEXT_PUBLIC_TYPESENSE_API_KEY=
NEXT_PUBLIC_TYPESENSE_HOST="typesense.acdh-dev.oeaw.ac.at"
NEXT_PUBLIC_TYPESENSE_PORT="443"
NEXT_PUBLIC_TYPESENSE_PROTOCOL="https"
NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME="thomas-bernhard"


# -------------------------------------------------------------------------------------------------
# python data wrangling scripts
# -------------------------------------------------------------------------------------------------
BASEROW_BASE_URL="https://baserow.acdh-dev.oeaw.ac.at/api"
BASEROW_USER=
BASEROW_PW=
BASEROW_TOKEN=
BASEROW_DATABASE_ID=
1 change: 1 addition & 0 deletions .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ jobs:
"NEXT_PUBLIC_MATOMO_ID=${{ vars.NEXT_PUBLIC_MATOMO_ID }}"
"NEXT_PUBLIC_REDMINE_ID=${{ vars.SERVICE_ID }}"
"NEXT_PUBLIC_TYPESENSE_API_KEY=${{ vars.NEXT_PUBLIC_TYPESENSE_API_KEY }}"
"NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME=${{ vars.NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME }}"
"NEXT_PUBLIC_TYPESENSE_HOST=${{ vars.NEXT_PUBLIC_TYPESENSE_HOST }}"
"NEXT_PUBLIC_TYPESENSE_PORT=${{ vars.NEXT_PUBLIC_TYPESENSE_PORT }}"
"NEXT_PUBLIC_TYPESENSE_PROTOCOL=${{ vars.NEXT_PUBLIC_TYPESENSE_PROTOCOL }}"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ jobs:
NEXT_PUBLIC_MATOMO_BASE_URL: "${{ vars.NEXT_PUBLIC_MATOMO_BASE_URL }}"
NEXT_PUBLIC_REDMINE_ID: "${{ vars.SERVICE_ID }}"
NEXT_PUBLIC_TYPESENSE_API_KEY: "${{ vars.NEXT_PUBLIC_TYPESENSE_API_KEY }}"
NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME: "${{ vars.NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME }}"
NEXT_PUBLIC_TYPESENSE_HOST: "${{ vars.NEXT_PUBLIC_TYPESENSE_HOST }}"
NEXT_PUBLIC_TYPESENSE_PORT: "${{ vars.NEXT_PUBLIC_TYPESENSE_PORT }}"
NEXT_PUBLIC_TYPESENSE_PROTOCOL: "${{ vars.NEXT_PUBLIC_TYPESENSE_PROTOCOL }}"
Expand All @@ -99,6 +100,7 @@ jobs:
NEXT_PUBLIC_MATOMO_BASE_URL: "${{ vars.NEXT_PUBLIC_MATOMO_BASE_URL }}"
NEXT_PUBLIC_REDMINE_ID: "${{ vars.SERVICE_ID }}"
NEXT_PUBLIC_TYPESENSE_API_KEY: "${{ vars.NEXT_PUBLIC_TYPESENSE_API_KEY }}"
NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME: "${{ vars.NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME }}"
NEXT_PUBLIC_TYPESENSE_HOST: "${{ vars.NEXT_PUBLIC_TYPESENSE_HOST }}"
NEXT_PUBLIC_TYPESENSE_PORT: "${{ vars.NEXT_PUBLIC_TYPESENSE_PORT }}"
NEXT_PUBLIC_TYPESENSE_PROTOCOL: "${{ vars.NEXT_PUBLIC_TYPESENSE_PROTOCOL }}"
Expand Down
5 changes: 5 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ ARG NEXT_PUBLIC_BOTS
ARG NEXT_PUBLIC_MATOMO_BASE_URL
ARG NEXT_PUBLIC_MATOMO_ID
ARG NEXT_PUBLIC_REDMINE_ID
ARG NEXT_PUBLIC_TYPESENSE_API_KEY
ARG NEXT_PUBLIC_TYPESENSE_HOST
ARG NEXT_PUBLIC_TYPESENSE_PORT
ARG NEXT_PUBLIC_TYPESENSE_PROTOCOL
ARG NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME

# disable validation for runtime environment variables
ENV ENV_VALIDATION=public
Expand Down
16 changes: 16 additions & 0 deletions config/env.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,27 @@ export const env = createEnv({
v.integer(),
v.minValue(1),
),
NEXT_PUBLIC_TYPESENSE_API_KEY: v.pipe(v.string(), v.nonEmpty()),
NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME: v.pipe(v.string(), v.nonEmpty()),
NEXT_PUBLIC_TYPESENSE_HOST: v.pipe(v.string(), v.nonEmpty()),
NEXT_PUBLIC_TYPESENSE_PORT: v.pipe(
v.string(),
v.transform(Number),
v.number(),
v.integer(),
v.minValue(1),
),
NEXT_PUBLIC_TYPESENSE_PROTOCOL: v.pipe(v.string(), v.nonEmpty()),
});

return v.parse(Schema, input);
},
environment: {
NEXT_PUBLIC_TYPESENSE_API_KEY: process.env.NEXT_PUBLIC_TYPESENSE_API_KEY,
NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME: process.env.NEXT_PUBLIC_TYPESENSE_COLLECTION_NAME,
NEXT_PUBLIC_TYPESENSE_HOST: process.env.NEXT_PUBLIC_TYPESENSE_HOST,
NEXT_PUBLIC_TYPESENSE_PORT: process.env.NEXT_PUBLIC_TYPESENSE_PORT,
NEXT_PUBLIC_TYPESENSE_PROTOCOL: process.env.NEXT_PUBLIC_TYPESENSE_PROTOCOL,
BUILD_MODE: process.env.BUILD_MODE,
BUNDLE_ANALYZER: process.env.BUNDLE_ANALYZER,
NEXT_PUBLIC_APP_BASE_URL: process.env.NEXT_PUBLIC_APP_BASE_URL,
Expand Down

0 comments on commit 2413213

Please sign in to comment.