From 94f4929749f34a5d7d32e82604efac5d7beaf29b Mon Sep 17 00:00:00 2001 From: kris Date: Tue, 21 Oct 2025 17:07:46 +0000 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..05a8f7de --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,78 @@ +stages: + - build + - deploy + - cleanup + +# ============================== +# ๐Ÿ—๏ธ BUILD IMAGE (Overwrite :dev) +# ============================== +build_image: + stage: build + image: docker:latest + services: + - docker:dind + variables: + DOCKER_TLS_CERTDIR: "/certs" + script: + - echo "๐Ÿ”ง Building Docker image for :dev..." + - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY" + - docker build -f Dockerfile.local -t registry.gitlab.com/mbugroup/sso-mbugroup/lti-api:dev . + - docker push registry.gitlab.com/mbugroup/sso-mbugroup/lti-api:dev + only: + - development + +# ============================== +# ๐Ÿš€ DEPLOY TO DEV SERVER +# ============================== +deploy_lti: + stage: deploy + image: alpine:latest + before_script: + - apk add --no-cache openssh-client bash curl + - mkdir -p ~/.ssh + - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa + - chmod 600 ~/.ssh/id_rsa + - ssh-keyscan -H "$SERVER_IP" >> ~/.ssh/known_hosts + + script: + - echo "๐Ÿš€ Deploy ke ${SERVER_USER}@${SERVER_IP} menggunakan image :dev" + - | + ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} bash -s </dev/null 2>&1 || true + docker rm -f "\${APP_NAME}" >/dev/null 2>&1 || true + + echo "๐Ÿงน Membersihkan container zombie di port \${PORT}..." + OLD_ID=\$(docker ps -aq --filter "publish=\${PORT}") + if [ -n "\${OLD_ID}" ]; then + echo "โš ๏ธ Container lain masih pakai port \${PORT}, hapus..." + docker stop \${OLD_ID} >/dev/null 2>&1 || true + docker rm -f \${OLD_ID} >/dev/null 2>&1 || true + fi + + echo "๐Ÿณ Pull image baru..." + docker pull "\${DOCKER_IMAGE}" + + echo "๐Ÿš€ Run container baru..." + docker run -d --name "\${APP_NAME}" --restart always \ + --env-file "\${ENV_PATH}" \ + -p \${PORT}:8081 \ + --network "\${NETWORK_NAME}" \ + "\${DOCKER_IMAGE}" + + echo "โœ… Deployment selesai di port \${PORT}" + REMOTE + + only: + - development \ No newline at end of file