diff --git a/Jenkinsfile b/Jenkinsfile index da11484d6..dbb63a6bd 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}" @@ -234,14 +235,15 @@ 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 "git push origin main" + 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" } } 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/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( - - - - - - - - , + + + + + + , );