diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7fc3fcae..0fab83ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,15 @@ variables: - if: $CI_COMMIT_BRANCH == "canary_release" - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/ +.notify_rule: + tags: + - macos + - flutter + rules: + - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_BRANCH == "release" + - if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/ + .generate_tag_rule: tags: - macos @@ -173,3 +182,23 @@ create-release: - name: 'sky ipa binary package' url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.ipa' link_type: 'package' + +notify_success: + stage: notification + extends: .notify_rule + before_script: + - printenv | while IFS='=' read -r key value; do echo "$key=$value"; done + script: + - bash notify.sh success + allow_failure: true + when: on_success + +notify_failure: + stage: notification + extends: .notify_rule + before_script: + - printenv | while IFS='=' read -r key value; do echo "$key=$value"; done + script: + - bash notify.sh failure + allow_failure: true + when: on_failure \ No newline at end of file diff --git a/notify.sh b/notify.sh new file mode 100755 index 00000000..f1f9919f --- /dev/null +++ b/notify.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -e +APP_PRODUCT_NAME=$APP_PRODUCT_NAME +BUILD_STATUS=$1 +if [[ "${CI_COMMIT_BRANCH}" == "release" ]] ; then + WECAHT_WEBHOOK_URL=$PRE_QYWECAHT_WEBHOOK_URL + SKY_IOS_DOWNLOAD_URL=$PRE_SKY_IOS_DOWNLOAD_URL + SKY_ANDROID_DOWNLOAD_URL=$PRE_SKY_ANDROID_DOWNLOAD_URL + XHJ_IOS_DOWNLOAD_URL=$PRE_XHJ_IOS_DOWNLOAD_URL + XHJ_ANDROID_DOWNLOAD_URL=$PRE_XHJ_ANDROID_DOWNLOAD_URL +elif [[ "${CI_COMMIT_BRANCH}" == "develop" ]] || [[ "${CI_COMMIT_BRANCH}" == "feat_devops" ]]; then + WECAHT_WEBHOOK_URL=$DEV_QYWECAHT_WEBHOOK_URL + SKY_IOS_DOWNLOAD_URL=$DEV_SKY_IOS_DOWNLOAD_URL + SKY_ANDROID_DOWNLOAD_URL=$DEV_SKY_ANDROID_DOWNLOAD_URL + XHJ_IOS_DOWNLOAD_URL=$DEV_XHJ_IOS_DOWNLOAD_URL + XHJ_ANDROID_DOWNLOAD_URL=$DEV_XHJ_ANDROID_DOWNLOAD_URL +fi + +if [[ "${BUILD_STATUS}" == "success" ]]; then + TITLE="😎 构建成功" + BUILD_STATUS_DESC="成功" + NOTIFICATION_CONENT='{"msgtype":"markdown","markdown":{"content":"'$TITLE'\n> **项目名称**: '$APP_PRODUCT_NAME'\n> **分支**: '$CI_COMMIT_REF_NAME'\n> **构建状态**: '$BUILD_STATUS_DESC'\n> **安装地址**:\n 通通公寓 ** [iOS]('$SKY_IOS_DOWNLOAD_URL') ** ** [Android]('$SKY_ANDROID_DOWNLOAD_URL')**\n > ** 星星公寓 ** [iOS]('$XHJ_IOS_DOWNLOAD_URL') ** ** [Android]('$XHJ_ANDROID_DOWNLOAD_URL')** \n> **详情查看**: [构建日志]('$CI_JOB_URL')"}}' +else + TITLE="😥 部署失败" + BUILD_STATUS_DESC="失败" + NOTIFICATION_CONENT='{"msgtype":"markdown","markdown":{"content": "'$TITLE'\n> **项目名称**: '$APP_PRODUCT_NAME'\n> **分支**: '$CI_COMMIT_REF_NAME'\n> **构建状态**: '$BUILD_STATUS_DESC'\n>**详情查看**: [构建日志]('$CI_JOB_URL')"}}' +fi +echo "$NOTIFICATION_CONENT" +JSON_PAYLOAD=$(cat <