From 53702984b17d5b16655ff0f6465fcf33431e27ec Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Fri, 8 May 2026 13:50:02 +0800 Subject: [PATCH] ci: add QQ group notification for issues and PRs --- .github/workflows/qq-notify.yml | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/qq-notify.yml diff --git a/.github/workflows/qq-notify.yml b/.github/workflows/qq-notify.yml new file mode 100644 index 000000000..3638804be --- /dev/null +++ b/.github/workflows/qq-notify.yml @@ -0,0 +1,57 @@ +name: QQ Notify + +on: + issues: + types: [opened] + pull_request: + types: [opened, closed] + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Build message + id: msg + run: | + if [ "${{ github.event_name }}" = "issues" ]; then + TITLE="${{ github.event.issue.title }}" + URL="${{ github.event.issue.html_url }}" + USER="${{ github.event.issue.user.login }}" + MSG="📋 新 Issue: ${TITLE}\n提亀者: ${USER}\n${URL}" + elif [ "${{ github.event.action }}" = "opened" ]; then + TITLE="${{ github.event.pull_request.title }}" + URL="${{ github.event.pull_request.html_url }}" + USER="${{ github.event.pull_request.user.login }}" + MSG="🔀 新 PR: ${TITLE}\n提亀者: ${USER}\n${URL}" + elif [ "${{ github.event.action }}" = "closed" ] && [ "${{ github.event.pull_request.merged }}" = "true" ]; then + TITLE="${{ github.event.pull_request.title }}" + URL="${{ github.event.pull_request.html_url }}" + USER="${{ github.event.pull_request.merged_by.login }}" + MSG="✅ PR 已合并: ${TITLE}\n合并者: ${USER}\n${URL}" + else + echo "skip=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + echo "skip=false" >> "$GITHUB_OUTPUT" + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "msg<<$EOF" >> "$GITHUB_OUTPUT" + echo -e "$MSG" >> "$GITHUB_OUTPUT" + echo "$EOF" >> "$GITHUB_OUTPUT" + + - name: Send to QQ group + if: steps.msg.outputs.skip != 'true' + env: + SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} + HOST: ${{ secrets.DEPLOY_HOST }} + ASTRBOT_API_KEY: ${{ secrets.ASTRBOT_API_KEY }} + run: | + mkdir -p ~/.ssh + echo "$SSH_KEY" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan -H "$HOST" >> ~/.ssh/known_hosts 2>/dev/null + + MSG=$(echo '${{ steps.msg.outputs.msg }}' | jq -Rs .) + ssh "root@${HOST}" "curl -s -X POST http://localhost:6185/api/v1/im/message \ + -H 'Authorization: Bearer ${ASTRBOT_API_KEY}' \ + -H 'Content-Type: application/json' \ + -d '{\"umo\": \"default:GroupMessage:1087880322\", \"message\": ${MSG}}'"