Commit f4207350 authored by tom's avatar tom

integrate with docker and CI

parent e095ff90
...@@ -81,7 +81,7 @@ RUN yarn build ...@@ -81,7 +81,7 @@ RUN yarn build
# ***************************** # *****************************
# Production image, copy all the files and run next # Production image, copy all the files and run next
FROM node:18-alpine AS runner FROM node:18-alpine AS runner
RUN apk add --no-cache --upgrade bash RUN apk add --no-cache --upgrade bash curl jq unzip
### APP ### APP
WORKDIR /app WORKDIR /app
...@@ -98,9 +98,18 @@ COPY --from=builder /app/package.json ./package.json ...@@ -98,9 +98,18 @@ COPY --from=builder /app/package.json ./package.json
COPY --from=builder /envs-validator/index.js ./envs-validator.js COPY --from=builder /envs-validator/index.js ./envs-validator.js
COPY --from=builder /app/deploy/tools/feature-reporter/index.js ./feature-reporter.js COPY --from=builder /app/deploy/tools/feature-reporter/index.js ./feature-reporter.js
# Copy scripts and ENVs file # Copy scripts
## Entripoint
COPY --chmod=+x ./deploy/scripts/entrypoint.sh . COPY --chmod=+x ./deploy/scripts/entrypoint.sh .
## ENV replacer
COPY --chmod=+x ./deploy/scripts/replace_envs.sh . COPY --chmod=+x ./deploy/scripts/replace_envs.sh .
## Favicon generator
COPY --chmod=+x ./deploy/scripts/favicon_generator.sh .
COPY ./deploy/tools/favicon-generator ./deploy/tools/favicon-generator
RUN ["chmod", "-R", "777", "./deploy/tools/favicon-generator"]
RUN ["chmod", "-R", "777", "./public"]
# Copy ENVs files
COPY --from=builder /app/.env.production . COPY --from=builder /app/.env.production .
COPY --from=builder /app/.env . COPY --from=builder /app/.env .
......
...@@ -6,6 +6,14 @@ if [ $? != 0 ]; then ...@@ -6,6 +6,14 @@ if [ $? != 0 ]; then
echo 🛑 ENV integrity check failed. 1>&2 && exit 1 echo 🛑 ENV integrity check failed. 1>&2 && exit 1
fi fi
# Generate favicons bundle
./favicon_generator.sh
if [ $? -ne 0 ]; then
echo "👎 Unable to generate favicons bundle."
else
echo "👍 Favicons bundle successfully generated."
fi
# Execute script for replace build-time ENVs placeholders with their values at runtime # Execute script for replace build-time ENVs placeholders with their values at runtime
./replace_envs.sh ./replace_envs.sh
......
#!/bin/bash
master_url="${NEXT_PUBLIC_FAVICON_MASTER_URL:-$NEXT_PUBLIC_NETWORK_ICON}"
export MASTER_URL="$master_url"
cd ./deploy/tools/favicon-generator
./script.sh
if [ $? -ne 0 ]; then
cd ../../../
exit 1
else
cd ../../../
favicon_folder="./public/favicon/"
if [ -d "$favicon_folder" ]; then
rm -r "$favicon_folder"
fi
mkdir -p "$favicon_folder"
cp -r ./deploy/tools/favicon-generator/output/* "$favicon_folder"
fi
\ No newline at end of file
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
#!/bin/bash #!/bin/bash
echo "🌀 Generating favicons bundle..." echo "🌀 Generating favicons bundle..."
echo
# Check if MASTER_URL is provided # Check if MASTER_URL is provided
if [ -z "$MASTER_URL" ]; then if [ -z "$MASTER_URL" ]; then
...@@ -11,7 +10,7 @@ fi ...@@ -11,7 +10,7 @@ fi
# Check if NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY is provided # Check if NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY is provided
if [ -z "$NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY" ]; then if [ -z "$NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY" ]; then
echo "Error: NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY variable is not provided." echo "🛑 Error: NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY variable is not provided."
exit 1 exit 1
fi fi
...@@ -108,5 +107,4 @@ fi ...@@ -108,5 +107,4 @@ fi
# Clean up - remove the JSON response file and temporary JSON config file # Clean up - remove the JSON response file and temporary JSON config file
rm response.json "$CONFIG_FILE" rm response.json "$CONFIG_FILE"
echo "✅ Done." echo "✅ Done."
echo \ No newline at end of file
\ No newline at end of file
...@@ -200,3 +200,4 @@ frontend: ...@@ -200,3 +200,4 @@ frontend:
envFromSecret: envFromSecret:
NEXT_PUBLIC_AUTH0_CLIENT_ID: ref+vault://deployment-values/blockscout/dev/l2-optimism-goerli?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_AUTH0_CLIENT_ID NEXT_PUBLIC_AUTH0_CLIENT_ID: ref+vault://deployment-values/blockscout/dev/l2-optimism-goerli?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_AUTH0_CLIENT_ID
NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: ref+vault://deployment-values/blockscout/dev/l2-optimism-goerli?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: ref+vault://deployment-values/blockscout/dev/l2-optimism-goerli?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID
NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY: ref+vault://deployment-values/blockscout/common?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY
...@@ -166,3 +166,4 @@ frontend: ...@@ -166,3 +166,4 @@ frontend:
NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID
NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY
NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: ref+vault://deployment-values/blockscout/dev/front-main?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID
NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY: ref+vault://deployment-values/blockscout/common?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY
...@@ -143,3 +143,5 @@ frontend: ...@@ -143,3 +143,5 @@ frontend:
_default: ref+vault://deployment-values/blockscout/dev/review-l2?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY _default: ref+vault://deployment-values/blockscout/dev/review-l2?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY
NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID:
_default: ref+vault://deployment-values/blockscout/dev/review-l2?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID _default: ref+vault://deployment-values/blockscout/dev/review-l2?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID
NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY:
_default: ref+vault://deployment-values/blockscout/common?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY
...@@ -123,5 +123,7 @@ frontend: ...@@ -123,5 +123,7 @@ frontend:
_default: ref+vault://deployment-values/blockscout/dev/review?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY _default: ref+vault://deployment-values/blockscout/dev/review?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY
NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID: NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID:
_default: ref+vault://deployment-values/blockscout/dev/review?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID _default: ref+vault://deployment-values/blockscout/dev/review?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID
NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY:
_default: ref+vault://deployment-values/blockscout/common?token_env=VAULT_TOKEN&address=https://vault.k8s.blockscout.com#/NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY
NEXT_PUBLIC_WEB3_WALLETS: NEXT_PUBLIC_WEB3_WALLETS:
_default: "['token_pocket','coinbase','metamask']" _default: "['token_pocket','coinbase','metamask']"
...@@ -12,6 +12,7 @@ The app instance could be customized by passing following variables to NodeJS en ...@@ -12,6 +12,7 @@ The app instance could be customized by passing following variables to NodeJS en
- [Homepage](ENVS.md#homepage) - [Homepage](ENVS.md#homepage)
- [Sidebar](ENVS.md#sidebar) - [Sidebar](ENVS.md#sidebar)
- [Footer](ENVS.md#footer) - [Footer](ENVS.md#footer)
- [Favicon](ENVS.md#favicon)
- [Views](ENVS.md#views) - [Views](ENVS.md#views)
- [Block](ENVS.md#block-views) - [Block](ENVS.md#block-views)
- [Misc](ENVS.md#misc) - [Misc](ENVS.md#misc)
...@@ -132,6 +133,17 @@ The app version shown in the footer is derived from build-time ENV variables `NE ...@@ -132,6 +133,17 @@ The app version shown in the footer is derived from build-time ENV variables `NE
   
### Favicon
By default, the app has generic favicon. You can override this behavior by providing the following variables. Hence, the favicon assets bundle will be generated at the container start time and will be used instead of default one.
| Variable | Type| Description | Compulsoriness | Default value | Example value |
| --- | --- | --- | --- | --- | --- |
| NEXT_PUBLIC_FAVICON_GENERATOR_API_KEY | `string` | RealFaviconGenerator [API key](https://realfavicongenerator.net/api/) | Required | - | `<your-secret>` |
| NEXT_PUBLIC_FAVICON_MASTER_URL | `string` | - | - | `NEXT_PUBLIC_NETWORK_ICON` | `https://placekitten.com/180/180` |
&nbsp;
### Views ### Views
#### Block views #### Block views
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment