diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..f9a17d6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,64 @@ +image: docker:latest +services: + - docker:dind + +stages: + - build_docker + - deploy + +variables: + DOCKER_HOST: "tcp://docker:2375" + DOCKER_TLS_CERTDIR: "" + DOCKER_DRIVER: overlay2 + RESTART_ONLY: + value: "false" + description: "Change to 'true' if you want to restart application only." + +.update_env_only_exceptions: + only: + variables: + - $RESTART_ONLY != 'true' + +.docker-build: + image: bentolor/docker-dind-awscli + stage: build_docker + tags: + - docker + environment: + name: ${CI_COMMIT_REF_NAME} + script: + - cp "$DOCKER_ENV_VARIABLES" ./.env.local + - docker build -t $DOCKER_REGISTRY:$DOCKER_TAG . + - aws ecr get-login-password | docker login --username AWS --password-stdin $DOCKER_REGISTRY + - docker push $DOCKER_REGISTRY:$DOCKER_TAG + +.deploy: + image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest + stage: deploy + tags: + - docker + environment: + name: ${CI_COMMIT_REF_NAME} + script: + - echo "sciagam i porownuje zmienne srodowiskowe" + - cp "$DOCKER_ENV_VARIABLES" ./local_$ECS_SERVICE.env + - aws s3 cp s3://$AWS_DOCKER_ENV_VARIABLES_BUCKET/$ECS_SERVICE/.env aws_$ECS_SERVICE.env || touch aws_$ECS_SERVICE.env + - cmp -s local_$ECS_SERVICE.env aws_$ECS_SERVICE.env || aws s3 cp local_$ECS_SERVICE.env s3://$AWS_DOCKER_ENV_VARIABLES_BUCKET/$ECS_SERVICE/.env + - aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --force-new-deployment + +docker-build: + extends: + - .update_env_only_exceptions + - .docker-build + only: + refs: + - develop + - master + +deploy: + extends: + - .deploy + only: + refs: + - develop + - master diff --git a/Dockerfile b/Dockerfile index 60f2235..3d1d999 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ FROM node:20-alpine AS base WORKDIR /app COPY . . -RUN npm i +RUN npm install -g pnpm +RUN pnpm i EXPOSE 3000 diff --git a/next.config.mjs b/next.config.mjs index 021b699..96083f5 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -22,6 +22,7 @@ const nextConfig = { }, { test: /\.svg$/i, + issuer: /.[jt]sx?$/, resourceQuery: { not: /url/ }, // exclude if *.svg?url use: ['@svgr/webpack'] } diff --git a/package.json b/package.json index 3fc470a..7ede47b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "smart-beaver-wizard", - "version": "0.1.0", + "version": "0.2.0", "private": true, "husky": { "hooks": { @@ -33,7 +33,7 @@ "debounce": "^2.0.0", "highlight.js": "^11.9.0", "husky": "^8.0.3", - "ink-generator": "^0.3.3", + "ink-generator": "^0.3.5", "next": "14.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02ec55d..ae3b66a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,8 +39,8 @@ dependencies: specifier: ^8.0.3 version: 8.0.3 ink-generator: - specifier: ^0.3.3 - version: 0.3.3 + specifier: ^0.3.5 + version: 0.3.5 next: specifier: 14.0.0 version: 14.0.0(@babel/core@7.23.3)(react-dom@18.2.0)(react@18.2.0) @@ -3479,8 +3479,8 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ink-generator@0.3.3: - resolution: {integrity: sha512-W51bFFLChgN1uxU94VpqYqubMWRqD5RMPHcGsg1m3ODG3JQPAuOclSdwaUjvxNN4TSNPN6ebirA/wMAL+6d5cQ==} + /ink-generator@0.3.5: + resolution: {integrity: sha512-lwG1zzlNrBputifYZnp4f8HltDRO+3t9JRlibGaCzE/4crdZ0pz8W+3XK7tfNZLtsB3VMQScdYLtiQjjoLhBcw==} dev: false /internal-slot@1.0.6: diff --git a/src/assets/icons/github.svg b/src/assets/icons/github.svg new file mode 100644 index 0000000..d43b83e --- /dev/null +++ b/src/assets/icons/github.svg @@ -0,0 +1,8 @@ + + + diff --git a/src/components/analitics/GoogleTagManager.tsx b/src/components/analitics/GoogleTagManager.tsx new file mode 100644 index 0000000..06a0646 --- /dev/null +++ b/src/components/analitics/GoogleTagManager.tsx @@ -0,0 +1,37 @@ +'use client'; +import Script from 'next/script'; +import { env } from '@/env/env.mjs'; + +const GoogleTagManager: React.FC = () => { + if (env.NEXT_PUBLIC_ENVIRONMENT !== 'production') { + return null; + } + + return ( + <> +