diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 90503c6..325b766 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -7,7 +7,7 @@ on: jobs: build-and-deploy: - runs-on: self-hosted + runs-on: debian steps: - name: Checkout uses: actions/checkout@v4 @@ -57,3 +57,40 @@ jobs: tar -C dist -czf - . | \ sshpass -e ssh -o StrictHostKeyChecking=yes -o ConnectTimeout=15 -p "${{ vars.DEPLOY_SSH_PORT }}" "${{ vars.DEPLOY_SSH_USER }}@${{ vars.DEPLOY_SSH_HOST }}" \ "set -euo pipefail; tmp='${{ vars.DEPLOY_PATH }}.tmp'; rm -rf \"\$tmp\"; mkdir -p \"\$tmp\"; tar -xzf - -C \"\$tmp\"; rm -rf '${{ vars.DEPLOY_PATH }}'; mv \"\$tmp\" '${{ vars.DEPLOY_PATH }}'" + + - name: 发送通知 + if: always() + continue-on-error: true + env: + WEBHOOK_URL: ${{ vars.WEBHOOK_URL }} + run: | + [ -z "$WEBHOOK_URL" ] && exit 0 + + if [ "${{ job.status }}" = "success" ]; then + status_text="部署成功 ✅" + else + status_text="部署失败 ❌" + fi + + commit_title=$(git log -1 --pretty=format:"%s" 2>/dev/null || echo "N/A") + workflow_url="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_number }}" + site_url="${{ vars.SITE_URL }}" + + if [ "${{ job.status }}" = "success" ]; then + payload=$(jq -n \ + --arg title "${{ github.event.repository.name }} ${status_text}" \ + --arg commit "$commit_title" \ + --arg author "${{ github.actor }}" \ + --arg site "$site_url" \ + --arg url "$workflow_url" \ + '{msg_type: "text", content: {text: "\($title)\n提交:\($commit)\n作者:\($author)\n站点:\($site)\n详情:\($url)"}}') + else + payload=$(jq -n \ + --arg title "${{ github.event.repository.name }} ${status_text}" \ + --arg commit "$commit_title" \ + --arg author "${{ github.actor }}" \ + --arg url "$workflow_url" \ + '{msg_type: "text", content: {text: "\($title)\n提交:\($commit)\n作者:\($author)\n详情:\($url)"}}') + fi + + curl -sS -H "Content-Type: application/json" -X POST -d "$payload" "$WEBHOOK_URL"