From 5d21b4b32ba6e586f734240298098e6bcc51b5e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:11:27 +0300 Subject: [PATCH 1/6] add CI/CD --- .dockerignore | 7 +++++++ .gitlab-ci.yml | 47 ++++++++++++++++++++--------------------------- Dockerfile | 22 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..15f6538 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.git +.gitlab +node_modules +.next/cache +Dockerfile +docker-compose.yml +*.log \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2caf235..a9c0cc3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,31 +1,24 @@ stages: - - build - - test - - deploy + - build + - deploy -build-job: - stage: build - script: - - echo "Compiling the code..." - - echo "Compile complete." +workflow: + rules: + - if: '$CI_COMMIT_BRANCH == "main"' -unit-test-job: - stage: test - script: - - echo "Running unit tests... This will take about 60 seconds." - - sleep 60 - - echo "Code coverage is 90%" +build: + stage: build + script: + - echo "Building Docker image..." + - docker build -t travelmarine-frontend:latest . -lint-test-job: - stage: test - script: - - echo "Linting code... This will take about 10 seconds." - - sleep 10 - - echo "No lint issues found." - -deploy-job: - stage: deploy - environment: production - script: - - echo "Deploying application..." - - echo "Application successfully deployed." +deploy: + stage: deploy + needs: ["build"] + script: + - echo "Restarting container..." + - docker rm -f travelmarine-frontend || true + - docker run -d --name travelmarine-frontend --restart unless-stopped \ + -p 127.0.0.1:3000:3000 \ + travelmarine-frontend:latest + when: on_success diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..856d656 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM node:22-alpine AS builder +WORKDIR /app +RUN apk add --no-cache libc6-compat + +COPY package-lock.json ./ +RUN npm ci + +COPY . . +RUN npm run build + +FROM node:22-alpine AS runner +WORKDIR /app +RUN apk add --no-cache libc6-compat +ENV NODE_ENV=production + +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/public ./public +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package*.json ./ +EXPOSE 3000 + +CMD ["npm", "run", "start"] \ No newline at end of file From 074567b74f300f044cb8a5118c0e1dd1b141a9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:15:50 +0300 Subject: [PATCH 2/6] test cicd --- .gitlab-ci.yml | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9c0cc3..6d57448 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,24 +1,31 @@ stages: - build + - test - deploy -workflow: - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - -build: +build-job: stage: build script: - - echo "Building Docker image..." - - docker build -t travelmarine-frontend:latest . + - echo "Compiling the code..." + - echo "Compile complete." -deploy: - stage: deploy - needs: ["build"] +unit-test-job: + stage: test script: - - echo "Restarting container..." - - docker rm -f travelmarine-frontend || true - - docker run -d --name travelmarine-frontend --restart unless-stopped \ - -p 127.0.0.1:3000:3000 \ - travelmarine-frontend:latest - when: on_success + - echo "Running unit tests... This will take about 60 seconds." + - sleep 60 + - echo "Code coverage is 90%" + +lint-test-job: + stage: test + script: + - echo "Linting code... This will take about 10 seconds." + - sleep 10 + - echo "No lint issues found." + +deploy-job: + stage: deploy + environment: production + script: + - echo "Deploying application..." + - echo "Application successfully deployed." From abb539edcba8eefc42fcbd33cb9f9f456b3a6cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:26:19 +0300 Subject: [PATCH 3/6] test cicd --- .gitlab-ci.yml | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6d57448..a9c0cc3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,31 +1,24 @@ stages: - build - - test - deploy -build-job: +workflow: + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + +build: stage: build script: - - echo "Compiling the code..." - - echo "Compile complete." + - echo "Building Docker image..." + - docker build -t travelmarine-frontend:latest . -unit-test-job: - stage: test - script: - - echo "Running unit tests... This will take about 60 seconds." - - sleep 60 - - echo "Code coverage is 90%" - -lint-test-job: - stage: test - script: - - echo "Linting code... This will take about 10 seconds." - - sleep 10 - - echo "No lint issues found." - -deploy-job: +deploy: stage: deploy - environment: production + needs: ["build"] script: - - echo "Deploying application..." - - echo "Application successfully deployed." + - echo "Restarting container..." + - docker rm -f travelmarine-frontend || true + - docker run -d --name travelmarine-frontend --restart unless-stopped \ + -p 127.0.0.1:3000:3000 \ + travelmarine-frontend:latest + when: on_success From c612badd6835478b81544d556f90075c617ad2bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:36:31 +0300 Subject: [PATCH 4/6] fix dockerfile --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 856d656..b66efdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ WORKDIR /app RUN apk add --no-cache libc6-compat COPY package-lock.json ./ +COPY package.json ./ RUN npm ci COPY . . @@ -16,7 +17,8 @@ ENV NODE_ENV=production COPY --from=builder /app/.next ./.next COPY --from=builder /app/public ./public COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/package-lock.json ./ +COPY --from=builder /app/package.json ./ EXPOSE 3000 CMD ["npm", "run", "start"] \ No newline at end of file From 3d5082ff3a880068ebbf2de8a2a5c644dcf11921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:42:15 +0300 Subject: [PATCH 5/6] fix gitlab-ci --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9c0cc3..75b7464 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,7 +17,7 @@ deploy: needs: ["build"] script: - echo "Restarting container..." - - docker rm -f travelmarine-frontend || true + - docker ps -a --filter 'name=^/travelmarine-frontend$' --format '{{.Names}}' | grep -q '^travelmarine-frontend$' && docker rm -f travelmarine-frontend || true - docker run -d --name travelmarine-frontend --restart unless-stopped \ -p 127.0.0.1:3000:3000 \ travelmarine-frontend:latest From 92e2d8a4f2fcbf4a19dbeddfe5f8ffefe3d1d623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Wed, 22 Oct 2025 22:48:05 +0300 Subject: [PATCH 6/6] fix gitlab-ci --- .gitlab-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 75b7464..737a3fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,5 @@ deploy: script: - echo "Restarting container..." - docker ps -a --filter 'name=^/travelmarine-frontend$' --format '{{.Names}}' | grep -q '^travelmarine-frontend$' && docker rm -f travelmarine-frontend || true - - docker run -d --name travelmarine-frontend --restart unless-stopped \ - -p 127.0.0.1:3000:3000 \ - travelmarine-frontend:latest + - docker run -d --name travelmarine-frontend --restart unless-stopped -p 127.0.0.1:3000:3000 travelmarine-frontend:latest when: on_success