99 lines
2.9 KiB
YAML
99 lines
2.9 KiB
YAML
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} <b>Deployment ${TEXT}!</b>"
|
|
when:
|
|
branch: master
|
|
event: push
|
|
status: [ success, failure ] |