stages: - deploy deploy-dev: stage: deploy image: alpine:3.20 variables: DEPLOY_APP: "SSO-MBUGROUP" before_script: - echo "🧰 Installing dependencies..." - apk update && apk add --no-cache openssh git curl - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - eval $(ssh-agent -s) - ssh-add ~/.ssh/id_rsa - ssh-keyscan -H "$SERVER_IP" >> ~/.ssh/known_hosts script: - echo "🚀 Deploying latest code to $SERVER_USER@$SERVER_IP" - > if ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_IP" " cd /home/devops/docker/deployment/development/lti-api && git fetch origin development && git reset --hard origin/development && docker compose restart dev-lti-api || docker compose up -d dev-lti-api "; then STATUS='success'; else STATUS='failed'; fi; RUN_URL="${CI_PROJECT_URL}/-/pipelines/${CI_PIPELINE_ID}"; if [ "$STATUS" = "success" ]; then COLOR=3066993; TITLE="✅ Deployment API Succeeded"; DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` completed successfully."; else COLOR=15158332; TITLE="❌ Deployment API Failed Gaes"; DESC="Deployment job on branch \`${CI_COMMIT_REF_NAME}\` failed."; fi; echo "{ \"username\": \"CI Bot\", \"embeds\": [{ \"title\": \"$TITLE\", \"description\": \"$DESC\", \"color\": $COLOR, \"fields\": [ {\"name\": \"Repository\", \"value\": \"${CI_PROJECT_PATH}\", \"inline\": true}, {\"name\": \"Actor\", \"value\": \"${GITLAB_USER_LOGIN}\", \"inline\": true}, {\"name\": \"Commit\", \"value\": \"${CI_COMMIT_SHA}\", \"inline\": false}, {\"name\": \"Pipeline\", \"value\": \"[Open run](${RUN_URL})\", \"inline\": false} ] }] }" > payload.json; echo "📡 Sending notification to Discord..."; curl -sS -H "Content-Type: application/json" \ -d @payload.json "$DISCORD_WEBHOOK_URL"; only: - development environment: name: development