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 Debugging Stage 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 > /dev/null 2>&1 - | echo "=== DEBUGGING WOODPECKER ENV ===" echo "1. Menampilkan semua variabel CI yang tersedia:" env | grep CI_ | sort echo "" echo "2. Mengecek apakah Secret terpetakan ke Env OS:" if [ -z "$TELEGRAM_TOKEN" ]; then echo "❌ ERROR: TELEGRAM_TOKEN kosong di environment shell!" else echo "✅ TELEGRAM_TOKEN terdeteksi (Awalan: $(echo $TELEGRAM_TOKEN | cut -c 1-3)...)" fi if [ -z "$TELEGRAM_CHAT_ID" ]; then echo "❌ ERROR: TELEGRAM_CHAT_ID kosong di environment shell!" else echo "✅ TELEGRAM_CHAT_ID terdeteksi: $TELEGRAM_CHAT_ID" fi echo "" echo "3. Mencoba koneksi dasar ke API Telegram:" # Hanya mengecek apakah API merespons, bukan mengirim pesan curl -s -I https://api.telegram.org | grep "HTTP/" echo "" echo "4. Menjalankan perintah utama..." # Menentukan status (Woodpecker versi terbaru biasanya pakai CI_PIPELINE_STATUS) STATUS="${CI_STATUS:-${CI_PIPELINE_STATUS}}" if [ "$STATUS" = "success" ]; then ICON="✅" TEXT="SUCCESS" else ICON="❌" TEXT="FAILED" fi # Eksekusi dengan verbose (-v) untuk melihat header transmisi (tanpa membocorkan token) curl -v -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}!" when: branch: master event: push status: [ success, failure ]