ci: Bark 推送逻辑提到独立脚本, 两 job 复用
之前 ci/release 各自 inline 拼 payload + curl, 重复 25 行 x 2.
device_key / endpoint / group / ttl 硬编码两次, 改一处忘另一处
会出现两个不同 group 的推送.
新建 .github/scripts/bark-notify.sh:
bash .github/scripts/bark-notify.sh "<title>" "<body>"
脚本封装:
- endpoint / device_key / group (Gitea) / isArchive / ttl 单一来源
- heredoc 拼 JSON, 不依赖 jq
- 错误用法打印 usage 并 exit 1 (set -euo pipefail)
workflow 两处都改成一行:
bash .github/scripts/bark-notify.sh "CI \${REF_NAME} \${STATUS}" "\${BODY}"
bash .github/scripts/bark-notify.sh "\${TAG_NAME} \${STATUS}" "\${BODY}"
emoji (✅/❌) 跟 status 映射仍在 workflow 里, 因为不同 job 拼
不同的 title prefix (CI vs release), 脚本不管这个, 调用方传什么
就推什么.
chmod +x 加在 commit 里, 但 git mode bit 在 .gitattributes 或
core.fileMode 关时可能丢. runner 一般会按 working tree 模式跑,
不需要额外 chmod 在 step 里.
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Executable
+37
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# bark-notify.sh — push a notification to the local Bark server.
|
||||||
|
#
|
||||||
|
# Usage: bark-notify.sh <title> <body>
|
||||||
|
#
|
||||||
|
# The Bark endpoint, device_key, and group are pinned in this script
|
||||||
|
# (it is a deployment detail, not a secret). The group is "Gitea" —
|
||||||
|
# change it here if you want to sort notifications by category.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [ "$#" -ne 2 ]; then
|
||||||
|
echo "usage: $0 <title> <body>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TITLE="$1"
|
||||||
|
BODY="$2"
|
||||||
|
|
||||||
|
PAYLOAD=$(cat <<EOF
|
||||||
|
{
|
||||||
|
"device_key": "6ZFVsxM95cuAjYoNLWSWaN",
|
||||||
|
"title": "${TITLE}",
|
||||||
|
"body": "${BODY}",
|
||||||
|
"group": "Gitea",
|
||||||
|
"isArchive": 1,
|
||||||
|
"ttl": 3600
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
curl -s \
|
||||||
|
-X POST http://101.43.40.124:81/push \
|
||||||
|
-H "Content-Type: application/json; charset=utf-8" \
|
||||||
|
-d "${PAYLOAD}"
|
||||||
|
|
||||||
|
echo "bark notified: ${TITLE}"
|
||||||
@@ -60,21 +60,7 @@ jobs:
|
|||||||
EMOJI="❌"
|
EMOJI="❌"
|
||||||
fi
|
fi
|
||||||
BODY="${EMOJI} ${REF_NAME} ${STATUS}: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${{ github.run_id }}"
|
BODY="${EMOJI} ${REF_NAME} ${STATUS}: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${{ github.run_id }}"
|
||||||
PAYLOAD=$(cat <<EOF
|
bash .github/scripts/bark-notify.sh "CI ${REF_NAME} ${STATUS}" "${BODY}"
|
||||||
{
|
|
||||||
"device_key": "6ZFVsxM95cuAjYoNLWSWaN",
|
|
||||||
"title": "CI ${REF_NAME} ${STATUS}",
|
|
||||||
"body": "${BODY}",
|
|
||||||
"group": "Gitea",
|
|
||||||
"isArchive": 1,
|
|
||||||
"ttl": 3600
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
curl -s \
|
|
||||||
-X POST http://101.43.40.124:81/push \
|
|
||||||
-H "Content-Type: application/json; charset=utf-8" \
|
|
||||||
-d "${PAYLOAD}"
|
|
||||||
|
|
||||||
release:
|
release:
|
||||||
name: Release
|
name: Release
|
||||||
@@ -143,18 +129,4 @@ jobs:
|
|||||||
EMOJI="❌"
|
EMOJI="❌"
|
||||||
fi
|
fi
|
||||||
BODY="${EMOJI} spark-mcp ${TITLE} ${STATUS}: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${TITLE}"
|
BODY="${EMOJI} spark-mcp ${TITLE} ${STATUS}: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${TITLE}"
|
||||||
PAYLOAD=$(cat <<EOF
|
bash .github/scripts/bark-notify.sh "${TITLE} ${STATUS}" "${BODY}"
|
||||||
{
|
|
||||||
"device_key": "6ZFVsxM95cuAjYoNLWSWaN",
|
|
||||||
"title": "${TITLE} ${STATUS}",
|
|
||||||
"body": "${BODY}",
|
|
||||||
"group": "Gitea",
|
|
||||||
"isArchive": 1,
|
|
||||||
"ttl": 3600
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
curl -s \
|
|
||||||
-X POST http://101.43.40.124:81/push \
|
|
||||||
-H "Content-Type: application/json; charset=utf-8" \
|
|
||||||
-d "${PAYLOAD}"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user