From 87b9197a930406af9b21e3a1b1a0a7777cfc2a0b Mon Sep 17 00:00:00 2001 From: Thatsaphorn Atchariyaphap Date: Mon, 28 Apr 2025 08:26:51 +0200 Subject: [PATCH] Add Dockerization stage and setup in GitLab CI pipelines --- .gitlab-ci.yml | 1 + frontend/.gitlab-ci.yml | 44 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 998ff4c..92784b5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,6 +7,7 @@ include: stages: - backend_build - frontend_build + - dockerize - deploy - sync diff --git a/frontend/.gitlab-ci.yml b/frontend/.gitlab-ci.yml index 58f3b46..7844622 100644 --- a/frontend/.gitlab-ci.yml +++ b/frontend/.gitlab-ci.yml @@ -1,8 +1,48 @@ +image: node:22@sha256:f6b9c31ace05502dd98ef777aaa20464362435dcc5e312b0e213121dcf7d8b95 + stages: - frontend_build + - dockerize + +cache: + key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ + - .next/cache/ + +variables: + NEXT_PUBLIC_ENV: "production" + OUTPUT_DIR: ".next" + PROJECT_NAME: $CI_PROJECT_NAME + DOCKER_IMAGE: "registry.boomlab.party/rheinsw/$CI_PROJECT_NAME" + +# Reusable block for docker build & push +.dockerize_script: &dockerize_script + - | + RAW_TAG="$CI_COMMIT_REF_NAME" + TAG="${RAW_TAG//\//_}" # replace "/" with "_" + echo "Sanitized tag: $TAG" + docker build -t $DOCKER_IMAGE:$TAG -f Dockerfile . + + if [[ "$RAW_TAG" == "dev" || "$RAW_TAG" == "production" ]]; then + echo "Pushing Docker image $DOCKER_IMAGE:$TAG" + docker push $DOCKER_IMAGE:$TAG + else + echo "Skipping Docker push for non-dev or production branch: $RAW_TAG" + fi frontend_build_job: stage: frontend_build - image: node:22@sha256:f6b9c31ace05502dd98ef777aaa20464362435dcc5e312b0e213121dcf7d8b95 script: - - echo "Building frontend project" + - npm install + - npx next build + - npm run lint + +dockerize_frontend: + stage: dockerize + image: docker:20.10@sha256:2967f0819c84dd589ed0a023b9d25dcfe7a3c123d5bf784ffbb77edf55335f0c + before_script: + - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin + script: *dockerize_script + needs: + - job: frontend_build_job