diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..efda72f0 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,76 @@ +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"