Compare commits

...

36 Commits

Author SHA1 Message Date
kris ebc960abb5 Update .gitlab-ci.yml file 2025-11-11 04:32:51 +00:00
kris af4926b1d7 Update .gitlab-ci.yml file 2025-11-11 04:26:32 +00:00
kris 3d134d7b8e Update .gitlab-ci.yml file 2025-11-11 04:20:32 +00:00
kris ea5ab83795 Update .gitlab-ci.yml file 2025-11-11 04:08:07 +00:00
kris 132ce52f23 Update .gitlab-ci.yml file 2025-11-11 03:59:20 +00:00
kris b1482fb586 Update .gitlab-ci.yml file 2025-11-10 09:48:36 +00:00
Mitra Berlian Unggas 56b75af69f Update .gitlab-ci.yml file 2025-11-10 09:31:50 +00:00
kris e05db3c0c4 Update .gitlab-ci.yml file 2025-11-10 09:05:07 +00:00
kris 695b7d64ec Update .gitlab-ci.yml file 2025-11-10 08:57:15 +00:00
kris f2c581fcc2 Update .gitlab-ci.yml file 2025-11-10 08:52:09 +00:00
kris f761a12137 Update .gitlab-ci.yml file 2025-11-10 08:44:55 +00:00
kris fef1b59138 Update .gitlab-ci.yml file 2025-11-10 08:34:58 +00:00
kris 472ff1d3da Update .gitlab-ci.yml file 2025-11-10 08:26:05 +00:00
kris 90de8f4e4d Update .gitlab-ci.yml file 2025-11-10 08:22:49 +00:00
kris 8912a82dba Update .gitlab-ci.yml file 2025-11-10 08:06:34 +00:00
kris 3ae5a0f9b7 Update .gitlab-ci.yml file 2025-11-10 08:05:40 +00:00
kris 2aaaf9a442 Update .gitlab-ci.yml file 2025-11-10 08:04:37 +00:00
kris caf406a383 Update .gitlab-ci.yml file 2025-11-10 06:59:47 +00:00
kris 10ed17b0ed Update .gitlab-ci.yml file 2025-11-10 06:44:05 +00:00
kris fd47a3b407 Update .gitlab-ci.yml file 2025-11-10 06:36:25 +00:00
kris 5cab1a072d Update .gitlab-ci.yml file 2025-11-10 06:32:29 +00:00
kris 288c675de7 Update .gitlab-ci.yml file 2025-11-10 06:24:44 +00:00
kris d8f16558a3 Update .gitlab-ci.yml file 2025-11-10 06:20:57 +00:00
kris 13d57c206b Update .gitlab-ci.yml file 2025-11-09 10:21:06 +00:00
kris 773aa2dbb1 Update .gitlab-ci.yml file 2025-11-09 10:10:19 +00:00
kris f14adc46d3 Update .gitlab-ci.yml file 2025-11-09 09:50:29 +00:00
kris e7592eb221 Update .gitlab-ci.yml file 2025-11-09 09:48:13 +00:00
kris 32f202d814 Update .gitlab-ci.yml file 2025-11-09 09:23:32 +00:00
kris 942b19375e Merge branch 'chore/build-cicd' into 'development'
update Dockerfile

See merge request mbugroup/lti-web-client!47
2025-11-09 09:09:14 +00:00
kris f126e976fd Update .gitlab-ci.yml file 2025-11-09 08:34:51 +00:00
kris 0a2373572f Merge branch 'chore/build-cicd' into 'development'
edit Dockerfile

See merge request mbugroup/lti-web-client!46
2025-11-09 08:22:15 +00:00
kris 49e648689a Merge branch 'chore/build-cicd' into 'development'
edit Dockerfile

See merge request mbugroup/lti-web-client!45
2025-11-09 08:16:08 +00:00
kris a9620246c0 Update .gitlab-ci.yml file 2025-11-09 08:05:11 +00:00
kris 2d649eb0ff Merge branch 'chore/build-cicd' into 'development'
edit .gitlab-ci

See merge request mbugroup/lti-web-client!44
2025-11-09 08:02:31 +00:00
kris 4f9695aabe Merge branch 'chore/build-cicd' into 'development'
edit .gitlab-ci

See merge request mbugroup/lti-web-client!43
2025-11-09 07:54:31 +00:00
kris fefb665485 Merge branch 'chore/build-cicd' into 'development'
build docker via gitlab

See merge request mbugroup/lti-web-client!42
2025-11-09 07:49:21 +00:00
+138 -33
View File
@@ -1,44 +1,149 @@
stages: stages:
- build - build
- deploy
variables: # ====== TEMPLATE: BUILD STATIC NEXT.JS ======
# 🔧 Aktifkan Docker BuildKit (build lebih cepat & caching layer) .build_template: &build_template
DOCKER_BUILDKIT: "1" stage: build
COMPOSE_DOCKER_CLI_BUILD: "1" image: node:20-alpine
DOCKER_DRIVER: overlay2
# 🧠 Nama image (pakai commit short SHA)
IMAGE_NAME: "$CI_REGISTRY_IMAGE/web-lti:development_${CI_COMMIT_SHORT_SHA}"
# Cache npm (disimpan antar pipeline)
NPM_CACHE_DIR: "$CI_PROJECT_DIR/.npm"
cache: cache:
key: npm-cache key: npm-cache
paths: paths:
- .npm/ - node_modules/
variables:
build-image: NPM_CONFIG_PRODUCTION: "false"
stage: build NODE_ENV: ""
image: docker:27.0.3
services:
- docker:dind
before_script:
- echo "🔐 Logging in to GitLab Container Registry..."
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
script: script:
- echo "🚧 Building optimized Docker image..." - echo "Installing dependencies..."
- docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/web-lti:latest -t "$IMAGE_NAME" . - npm ci --no-audit --no-fund
- docker push "$IMAGE_NAME" - echo "Building Next.js static export..."
- npx next build
artifacts:
name: "out-$CI_COMMIT_SHORT_SHA"
paths:
- out/
expire_in: 1 week
# 🧹 Keep only last 3 images (hapus yang lama) .deploy_template: &deploy_template
- echo "🧹 Cleaning old images..." stage: deploy
- docker image prune -af --filter "until=72h" image:
name: amazon/aws-cli:latest
entrypoint: ["/bin/sh", "-c"]
script:
- set -e
- aws --version
- echo "Cleaning up newline characters in AWS credentials..."
- export AWS_ACCESS_KEY_ID=$(echo $AWS_ACCESS_KEY_ID | tr -d '\r\n')
- export AWS_SECRET_ACCESS_KEY=$(echo $AWS_SECRET_ACCESS_KEY | tr -d '\r\n')
- echo "Deploying to s3://$S3_BUCKET in region $AWS_REGION"
- aws s3api head-bucket --bucket "$S3_BUCKET" --region "$AWS_REGION" || aws s3api create-bucket --bucket "$S3_BUCKET" --region "$AWS_REGION" --create-bucket-configuration LocationConstraint="$AWS_REGION"
- aws s3 sync ./out "s3://$S3_BUCKET" --delete --region "$AWS_REGION" --endpoint-url "https://s3.ap-southeast-3.amazonaws.com"
after_script: # CloudFront invalidation
- echo "✅ Build complete: $IMAGE_NAME" - |
STATUS="success"
if [ -n "$CLOUDFRONT_DISTRIBUTION_ID" ]; then
echo "Invalidating CloudFront cache..."
if ! aws cloudfront create-invalidation --distribution-id "$CLOUDFRONT_DISTRIBUTION_ID" --paths "/*"; then
echo "CloudFront invalidation failed."
STATUS="failed"
fi
else
echo "No CloudFront distribution specified — skipping invalidation"
fi
# Notifikasi Discord
- |
RUN_URL="${CI_PROJECT_URL}/-/pipelines/${CI_PIPELINE_ID}"
# Tentukan nama environment
if [ "$CI_COMMIT_BRANCH" = "devops-s3" ]; then
ENVIRONMENT_NAME="WEB-LTI-DEV"
elif [ "$CI_COMMIT_BRANCH" = "master" ]; then
ENVIRONMENT_NAME="WEB-LTI-PROD"
else
ENVIRONMENT_NAME="UNKNOWN"
fi
if [ "$STATUS" = "success" ]; then
COLOR=3066993
TITLE="✅ Deployment ${ENVIRONMENT_NAME} Succeeded"
DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` completed successfully."
else
COLOR=15158332
TITLE="❌ Deployment ${ENVIRONMENT_NAME} Failed"
DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` encountered issues."
fi
jq -n \
--arg title "$TITLE" \
--arg desc "$DESC" \
--arg color "$COLOR" \
--arg repo "$CI_PROJECT_PATH" \
--arg actor "$GITLAB_USER_LOGIN" \
--arg commit "$CI_COMMIT_SHA" \
--arg run_url "$RUN_URL" \
'{
username: "CI Bot - LTI WEB",
embeds: [{
title: $title,
description: $desc,
color: ($color|tonumber),
fields: [
{name: "Repository", value: $repo, inline: true},
{name: "Actor", value: $actor, inline: true},
{name: "Commit", value: $commit, inline: false},
{name: "Pipeline", value: ("[Open run](" + $run_url + ")"), inline: false}
]
}]
}' > payload.json
curl -sS -H "Content-Type: application/json" -d @payload.json "$DISCORD_WEBHOOK_URL"
# ====== DEVELOPMENT (Branch devops-s3) ======
build:dev:
<<: *build_template
rules: rules:
- if: '$CI_COMMIT_BRANCH == "development"' - if: '$CI_COMMIT_BRANCH == "devops-s3"'
environment:
name: devops-s3
variables:
NEXT_PUBLIC_API_BASE_URL: "https://dev-api-lti.mbugroup.id"
NEXT_PUBLIC_SSO_LOGIN_URL: "https://dev-api-sso.mbugroup.id"
deploy:dev:
<<: *deploy_template
needs: ["build:dev"]
rules:
- if: '$CI_COMMIT_BRANCH == "devops-s3"'
variables:
S3_BUCKET: "dev-lti-erp.mbugroup.id"
AWS_REGION: "ap-southeast-3"
CLOUDFRONT_DISTRIBUTION_ID: "E1Z8XTA8XF1GIV"
environment:
name: devops-s3
url: https://dev-lti-erp.mbugroup.id
# ====== PRODUCTION ======
# build:production:
# <<: *build_template
# rules:
# # pilih salah satu: pakai branch master ATAU pakai tags rilis
# - if: '$CI_COMMIT_BRANCH == "master"'
# # - if: '$CI_COMMIT_TAG' # kalau mau rilis via tag, uncomment ini dan hapus baris di atas
# environment:
# name: production
# deploy:production:
# <<: *deploy_template
# needs: ["build:production"]
# rules:
# - if: '$CI_COMMIT_BRANCH == "master"'
# # - if: '$CI_COMMIT_TAG' # selaras dengan rule di build:production
# variables:
# S3_BUCKET: "lti-erp.mbugroup.id"
# CLOUDFRONT_DISTRIBUTION_ID: "ddfd"
# environment:
# name: production
# url: https://royalgoldcapital.com