add CI/CD

This commit is contained in:
Иван 2025-10-22 22:11:27 +03:00
parent 0bf248ac64
commit 5d21b4b32b
3 changed files with 49 additions and 27 deletions

7
.dockerignore Normal file
View File

@ -0,0 +1,7 @@
.git
.gitlab
node_modules
.next/cache
Dockerfile
docker-compose.yml
*.log

View File

@ -1,31 +1,24 @@
stages: stages:
- build - build
- test
- deploy - deploy
build-job: workflow:
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
build:
stage: build stage: build
script: script:
- echo "Compiling the code..." - echo "Building Docker image..."
- echo "Compile complete." - docker build -t travelmarine-frontend:latest .
unit-test-job: deploy:
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:
stage: deploy stage: deploy
environment: production needs: ["build"]
script: script:
- echo "Deploying application..." - echo "Restarting container..."
- echo "Application successfully deployed." - 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

22
Dockerfile Normal file
View File

@ -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"]