steps: # 1. Build & Push Image build-and-push: image: plugins/docker settings: registry: git.exavolt.web.id repo: git.exavolt.web.id/fikri/fullstack-portfolio dockerfile: Dockerfile use_cache: true purge: false username: from_secret: gitea_user password: from_secret: gitea_token when: branch: master event: push # 2. Deploy via SSH deploy: image: appleboy/drone-ssh settings: host: 103.197.190.44 username: exavolt port: 22 key: from_secret: ssh_key envs: [ gitea_user, gitea_token ] gitea_user: from_secret: gitea_user gitea_token: from_secret: gitea_token script: - cd ~/projects/fikri-fullstack-portfolio - echo $gitea_token | docker login git.exavolt.web.id -u $gitea_user --password-stdin - docker compose pull - docker compose up -d --remove-orphans - docker image prune -f when: branch: master event: push # 3. Notification (Menggunakan cURL untuk memastikan masuk Topik 8) notify-telegram: image: alpine environment: TELEGRAM_TOKEN: from_secret: telegram_token TELEGRAM_CHAT_ID: from_secret: telegram_chat_id commands: - apk add --no-cache curl - | # Tentukan Emoji berdasarkan status build if [ "${CI_BUILD_STATUS}" = "success" ]; then ICON="✅" TEXT="SUCCESS" else ICON="❌" TEXT="FAILED" fi # Kirim ke Telegram menggunakan API direct (sama seperti cara manual) curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \ -d "chat_id=${TELEGRAM_CHAT_ID}" \ -d "message_thread_id=8" \ -d "parse_mode=HTML" \ -d "text=${ICON} Deployment ${TEXT}!%0A%0A📦 Project: ${CI_REPO_NAME}%0A🌿 Branch: ${CI_COMMIT_BRANCH}%0A📝 Commit: ${CI_COMMIT_MESSAGE}%0A%0A🔗 Lihat Detail Log" when: branch: master event: push status: [ success, failure ]