stages: [notify] # --- Notify when MR is opened/updated --- notify_discord_mr: stage: notify image: alpine:3.20 rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' variables: WEBHOOK_URL: $DISCORD_WEBHOOK_URL before_script: - apk add --no-cache curl jq script: | MR_URL="${CI_PROJECT_URL}/-/merge_requests/${CI_MERGE_REQUEST_IID}" jq -n \ --arg repo "$CI_PROJECT_PATH" \ --arg mr "#${CI_MERGE_REQUEST_IID}" \ --arg url "$MR_URL" \ --arg requestor "${GITLAB_USER_LOGIN:-$GITLAB_USER_NAME}" \ --arg source "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" \ --arg target "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" \ --arg title "$CI_MERGE_REQUEST_TITLE" \ '{ username: "CI Bot - FE", embeds: [{ title: "📣 [LTI WEB CLIENT] Merge Request Opened/Updated", description: ($mr + " in " + $repo), url: $url, color: 3447003, fields: [ {name: "Author", value: $requestor, inline: true}, {name: "Source → Target", value: ($source + " → " + $target), inline: true}, {name: "Title", value: $title} ] }] }' \ | curl -sS -H "Content-Type: application/json" -d @- "$WEBHOOK_URL" # --- Notify when MR is merged --- notify_discord_merge: stage: notify image: alpine:3.20 rules: # Only run for merge request pipelines that are in merged state - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_STATE == "merged"' variables: WEBHOOK_URL: $DISCORD_WEBHOOK_URL before_script: - apk add --no-cache curl jq script: | MR_URL="${CI_PROJECT_URL}/-/merge_requests/${CI_MERGE_REQUEST_IID}" jq -n \ --arg repo "$CI_PROJECT_PATH" \ --arg mr "#${CI_MERGE_REQUEST_IID}" \ --arg url "$MR_URL" \ --arg requestor "${CI_MERGE_REQUEST_AUTHOR}" \ --arg source "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" \ --arg target "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" \ --arg title "$CI_MERGE_REQUEST_TITLE" \ '{ username: "CI Bot - FE", embeds: [{ title: "✅ [LTI WEB CLIENT] Merge Request Merged", description: ($mr + " has been merged into " + $repo), url: $url, color: 3066993, fields: [ {name: "Author", value: $requestor, inline: true}, {name: "Source → Target", value: ($source + " → " + $target), inline: true}, {name: "Title", value: $title} ] }] }' \ | curl -sS -H "Content-Type: application/json" -d @- "$WEBHOOK_URL"