From d80df3ef8451a7a30d93e52d7b5fb94b442c8991 Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 21:38:41 +0200 Subject: [PATCH 1/7] Update Jenkinsfile --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index da11484d6..4f5f59123 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -234,12 +234,12 @@ pipeline { } steps { script { - + git branch: 'master', credentialsId: 'test_git_user', url: 'git@github.com:ita-social-projects/StreetCode_Client.git' sh 'echo ${BRANCH_NAME}' sh "git checkout master" sh 'echo ${BRANCH_NAME}' sh 'git merge ${BRANCH_NAME}' - sh "npm version 1.0.0 -m 'Upgrade to %s as part of release'" + sh "npm version ${env.CODE_VERSION} -m 'Upgrade to %s as part of release'" sh "git push origin main" From 945c73979af94929771e3cfce646e6ca66454783 Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 21:56:50 +0200 Subject: [PATCH 2/7] Update Jenkinsfile --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4f5f59123..fc87834c9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -57,6 +57,7 @@ pipeline { sh "cat version" vers = readFile(file: 'version').trim() sh "echo ${vers}" + env.vers="${vers}" env.CODE_VERSION = readFile(file: 'version').trim() echo "${env.CODE_VERSION}" SEM_VERSION="${env.CODE_VERSION}" @@ -239,7 +240,7 @@ pipeline { sh "git checkout master" sh 'echo ${BRANCH_NAME}' sh 'git merge ${BRANCH_NAME}' - sh "npm version ${env.CODE_VERSION} -m 'Upgrade to %s as part of release'" + sh "npm version ${env.vers} -m 'Upgrade to %s as part of release'" sh "git push origin main" From 3e2928ab674b1b41bd861284689554ba9065115e Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 22:05:56 +0200 Subject: [PATCH 3/7] Update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fc87834c9..98820c653 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -242,7 +242,7 @@ pipeline { sh 'git merge ${BRANCH_NAME}' sh "npm version ${env.vers} -m 'Upgrade to %s as part of release'" - sh "git push origin main" + sh "git push origin master" } } From d53ce2f9cbbfe2fd544e6a51cae4f5380c69b0c2 Mon Sep 17 00:00:00 2001 From: sashapanasiuk5 <51517423+sashapanasiuk5@users.noreply.github.com> Date: Thu, 12 Sep 2024 23:08:15 +0300 Subject: [PATCH 4/7] Revert "Feature/issue cache control" --- config/webpack.dev.js | 107 +++++++++---------- config/webpack.prod.js | 4 - docker-compose.yml | 99 +++++++++++++++++ public/env-config.js | 1 - src/app/common/components/withClearCache.tsx | 35 ------ src/index.tsx | 16 ++- 6 files changed, 156 insertions(+), 106 deletions(-) create mode 100644 docker-compose.yml delete mode 100644 src/app/common/components/withClearCache.tsx diff --git a/config/webpack.dev.js b/config/webpack.dev.js index ea0a709a1..972ea2752 100644 --- a/config/webpack.dev.js +++ b/config/webpack.dev.js @@ -1,5 +1,4 @@ const Dotenv = require("dotenv-webpack"); -const CopyPlugin = require('copy-webpack-plugin'); const Webpack = require("webpack"); const { GenerateSW } = require("workbox-webpack-plugin"); const fs = require("fs"); @@ -14,12 +13,12 @@ module.exports = { open: true, port: "3000", historyApiFallback: true, - //https: { + // https: { // DEV.NOTE: uncomment and change names of files according to your generated ones - //key: fs.readFileSync("cert\\localhost+1-key.pem"), - //cert: fs.readFileSync("cert\\localhost+1.pem"), - //}, + // key: fs.readFileSync("cert\\localhost+1-key.pem"), + // cert: fs.readFileSync("cert\\localhost+1.pem"), + // }, }, module: { rules: require("./webpack.rules"), @@ -39,57 +38,53 @@ module.exports = { new Dotenv({ path: `./.env`, }), - new GenerateSW({ - skipWaiting: true, - clientsClaim: true, - maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, - runtimeCaching: [ - { - urlPattern: /env-config\.js$/, - handler: 'NetworkOnly' - }, - { - urlPattern: /\.(?:js|css)$/, - handler: 'CacheFirst', - options: { - cacheName: 'static-resources', - expiration: { - maxAgeSeconds: 60 * 60 * 24 * 7, // 1 week - }, - }, - }, - { - urlPattern: /\.(?:png|jpg|jpeg|svg|gif)$/, - handler: 'CacheFirst', - options: { - cacheName: 'image-resources', - expiration: { - maxAgeSeconds: 60 * 60 * 24 * 7, // 1 week - }, - }, - }, - { - urlPattern: /\.(?:woff|woff2|ttf|otf)$/, - handler:'CacheFirst', - options: { - cacheName: 'font-resources', - expiration: { - maxAgeSeconds: 60 * 60 * 24 * 90, // 3 months - }, - }, - }, - { - urlPattern: /^https?.*/, - handler: 'NetworkFirst', - options: { - cacheName: 'external-resources', - expiration: { - maxEntries: 260 - }, - }, - }, - ], - }), + // new GenerateSW({ + // skipWaiting: true, + // clientsClaim: true, + // maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, + // runtimeCaching: [ + // { + // urlPattern: /\.(?:js|css)$/, + // handler: 'CacheFirst', + // options: { + // cacheName: 'static-resources', + // expiration: { + // maxAgeSeconds: 60 * 60 * 24 * 7, // 1 week + // }, + // }, + // }, + // { + // urlPattern: /\.(?:png|jpg|jpeg|svg|gif)$/, + // handler: 'CacheFirst', + // options: { + // cacheName: 'image-resources', + // expiration: { + // maxAgeSeconds: 60 * 60 * 24 * 7, // 1 week + // }, + // }, + // }, + // { + // urlPattern: /\.(?:woff|woff2|ttf|otf)$/, + // handler:'CacheFirst', + // options: { + // cacheName: 'font-resources', + // expiration: { + // maxAgeSeconds: 60 * 60 * 24 * 90, // 3 months + // }, + // }, + // }, + // { + // urlPattern: /^https?.*/, + // handler: 'NetworkFirst', + // options: { + // cacheName: 'external-resources', + // expiration: { + // maxEntries: 260 + // }, + // }, + // }, + // ], + // }), ], optimization: { splitChunks: { diff --git a/config/webpack.prod.js b/config/webpack.prod.js index c39d6c22b..7063db33d 100644 --- a/config/webpack.prod.js +++ b/config/webpack.prod.js @@ -52,10 +52,6 @@ module.exports = { clientsClaim: true, maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, runtimeCaching: [ - { - urlPattern: /env-config\.js$/, - handler: 'NetworkOnly' - }, { urlPattern: /\.(?:js|css)$/, handler: 'NetworkFirst', diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..7d0eeeb47 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,99 @@ +services: + certbot: + restart: always + image: certbot/certbot:latest + volumes: + - /etc/certbot/www/:/var/www/certbot/:rw + - /etc/certbot/conf/:/etc/letsencrypt/:rw + + nginx: + restart: always + image: nginx:latest + ports: + - "80:80" + - "443:443" + environment: + FRONTEND_SERVER_NAME: ${FRONTEND_SERVER_NAME} + BACKEND_SERVER_NAME: ${BACKEND_SERVER_NAME} + volumes: + - ./templates:/etc/nginx/templates + - /etc/certbot/www:/var/www/certbot/:ro + - /etc/certbot/conf:/etc/nginx/ssl/:ro + + + loki: + restart: always + container_name: loki + image: grafana/loki:latest + ports: + - "3100:3100" + command: -config.file=/etc/loki/local-config.yaml + volumes: + - ./loki/config:/etc/loki + + frontend: + restart: always + image: streetcodeua/streetcode_client:${DOCKER_TAG_FRONTEND} + pull_policy: always + expose: + - "80" + healthcheck: + test: curl --fail http://localhost || exit 1 + interval: 30s + timeout: 10s + retries: 5 + environment: + API_URL: ${ENV_API_BACKEND} + REACT_APP_GOOGLE_ANALYTICS: ${ENV_GOOGLE_ANALYTICS} + RECAPTCHA_SITE_KEY: ${RECAPTCHA_SITE_KEY} + logging: + driver: loki + options: + loki-url: "http://localhost:3100/loki/api/v1/push" + + backend: + restart: always + image: streetcodeua/streetcode:${DOCKER_TAG_BACKEND} + pull_policy: always + expose: + - "80" + environment: + STREETCODE_ConnectionStrings__DefaultConnection: ${DB_CONNECTION_STRING} + STREETCODE_Blob__BlobStoreKey: ${BLOB_STORAGE_KEY} + STREETCODE_Blob__BlobStorePath: /mnt/data/ + STREETCODE_Instagram__InstagramID: ${INSTAGRAM_ID} + STREETCODE_Instagram__InstagramToken: ${INSTAGRAM_TOKEN} + STREETCODE_Payment__Token: ${PAYMENT_TOKEN} + STREETCODE_EMAILCONFIGURATION__PASSWORD: ${EMAIL_PASSWORD} + STREETCODE_RECAPTCHA__SECRETKEY: ${RECAPTCHA_SECRET_KEY} + STREETCODE_CORS__AllowedOrigins: ${CORS_ALLOWED_ORIGINS} + STREETCODE_CORS__AllowedHeaders: ${CORS_ALLOWED_HEADERS} + STREETCODE_CORS__AllowedMethods: ${CORS_ALLOWED_METHODS} + STREETCODE_CORS__ExposedHeaders: ${CORS_EXPOSED_HEADERS} + STREETCODE_CORS__PreflightMaxAge: "600" + STREETCODE_IPRATELIMITING__GENERALRULES__0__LIMIT: 500 + ASPNETCORE_ENVIRONMENT: ${SWAGGER_APP_ENVIRONMENT} + volumes: + - type: bind + source: /imagestorage + target: /mnt/data + healthcheck: + test: curl --fail http://localhost/api/partners/getAll || exit 1 + interval: 30s + timeout: 10s + retries: 5 + extra_hosts: + - "host.docker.internal:host-gateway" + logging: + driver: loki + options: + loki-url: "http://localhost:3100/loki/api/v1/push" +volumes: + backend: +networks: + backend: + external: + name: backend + frontend: + external: + name: frontend diff --git a/public/env-config.js b/public/env-config.js index fbd5c3254..111a97b97 100644 --- a/public/env-config.js +++ b/public/env-config.js @@ -3,5 +3,4 @@ window._env_ = { API_URL: "https://stageback.streetcode.com.ua/api", REACT_APP_GOOGLE_ANALYTICS: "REACT_APP_GOOGLE_ANALYTICS_VALUE", RECAPTCHA_SITE_KEY: "6LeUO3ApAAAAAOC7F4v0qTsSwIR9mZu33SWjAAtM", - VERSION: "1.0.0" } diff --git a/src/app/common/components/withClearCache.tsx b/src/app/common/components/withClearCache.tsx deleted file mode 100644 index 84f3fe966..000000000 --- a/src/app/common/components/withClearCache.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable no-underscore-dangle */ -import { Component, useEffect, useState } from 'react'; - -const WithClearCache: React.FC<{ children: React.ReactNode }> = ({ children }) => { - const [isLatestBuildDate, setIsLatestBuildDate] = useState(false); - - const refreshCacheAndReload = () => { - if (caches) { - caches.keys().then((names) => { - for (const name of names) { - caches.delete(name); - } - }); - console.log("Cache is cleared") - } - window.location.reload(); - }; - - useEffect(() => { - const localVersion = localStorage.getItem('VERSION'); - const isVersionMatches = localVersion === window._env_.VERSION; - setIsLatestBuildDate(isVersionMatches); - if (!isVersionMatches) { - localStorage.setItem('VERSION', window._env_.VERSION); - refreshCacheAndReload(); - } - }, []); - - if (isLatestBuildDate) { - return children; - } - return null; -}; - -export default WithClearCache; diff --git a/src/index.tsx b/src/index.tsx index a1524593b..c3bf711c2 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,7 +8,6 @@ import { RouterProvider } from 'react-router-dom'; import router from '@app/router/Routes'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; -import WithClearCache from './app/common/components/withClearCache'; declare global { interface Window { @@ -17,7 +16,6 @@ declare global { SERVER_API_URL: string; REACT_APP_GOOGLE_ANALYTICS: string; RECAPTCHA_SITE_KEY: string; - VERSION: string; }; } } @@ -41,12 +39,10 @@ const root = ReactDOM.createRoot( const queryClient = new QueryClient(); root.render( - - - - - - - - , + + + + + + , ); From 703920ef5e261992b211e4269cd51b0e5eede28d Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 22:32:45 +0200 Subject: [PATCH 5/7] Update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 98820c653..86857b204 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -249,7 +249,7 @@ pipeline { post { success { sh 'gh auth status' - sh "gh release create v${vers} --generate-notes --draft" + sh "gh release create v${vers} --generate-notes --draft --no-git-tag-version" } } From 626e914319c8211d27892233c7124d5ad4298141 Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 22:36:20 +0200 Subject: [PATCH 6/7] Update Jenkinsfile --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 86857b204..5624c171d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -240,7 +240,7 @@ pipeline { sh "git checkout master" sh 'echo ${BRANCH_NAME}' sh 'git merge ${BRANCH_NAME}' - sh "npm version ${env.vers} -m 'Upgrade to %s as part of release'" + sh "npm version ${env.vers} -m 'Upgrade to %s as part of release' --allow-same-version --no-git-tag-version" sh "git push origin master" @@ -249,7 +249,7 @@ pipeline { post { success { sh 'gh auth status' - sh "gh release create v${vers} --generate-notes --draft --no-git-tag-version" + sh "gh release create v${vers} --generate-notes --draft" } } From 283d01e8424001490c227db838d965580c59935e Mon Sep 17 00:00:00 2001 From: streetcodeUa Date: Thu, 12 Sep 2024 22:42:30 +0200 Subject: [PATCH 7/7] Update Jenkinsfile --- Jenkinsfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5624c171d..dbb63a6bd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -240,8 +240,9 @@ pipeline { sh "git checkout master" sh 'echo ${BRANCH_NAME}' sh 'git merge ${BRANCH_NAME}' - sh "npm version ${env.vers} -m 'Upgrade to %s as part of release' --allow-same-version --no-git-tag-version" - + sh "npm version ${env.vers} --allow-same-version --no-git-tag-version" + sh "git add ." + sh "git commit -m 'Upgrade to %s as part of release'" sh "git push origin master" }