add CI/CD
This commit is contained in:
parent
0bf248ac64
commit
5d21b4b32b
|
|
@ -0,0 +1,7 @@
|
||||||
|
.git
|
||||||
|
.gitlab
|
||||||
|
node_modules
|
||||||
|
.next/cache
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
*.log
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
||||||
Loading…
Reference in New Issue