# 钉钉消息推送 Gitea Action 一个用于向钉钉群发送消息的 Gitea Action,支持文本、Markdown、链接、ActionCard 和 FeedCard 消息类型。 ## 快速开始 ### 1. 获取钉钉 Webhook URL 1. 在钉钉群中添加"自定义机器人" 2. 复制生成的 Webhook URL 3. 配置安全设置 ### 2. 在 Gitea 仓库中使用 创建 `.gitea/workflows/dingtalk-notify.yml` 文件: ```yaml name: DingTalk Notification on: push: branches: [main] pull_request: branches: [main] jobs: notify: runs-on: ubuntu-latest steps: - name: Send DingTalk Message uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'text' content: '🎉 代码已推送到 ${{ github.repository }} 仓库!' ``` ## 输入参数 | 参数名 | 必需 | 默认值 | 描述 | | ----------------- | ---- | ------- | -------------------------------------------------------------------- | | `webhook_url` | 是 | - | 钉钉机器人 Webhook URL | | `message_type` | 否 | `text` | 消息类型:`text`、`markdown`、`link`、`actionCard`、`feedCard` | | `content` | 是 | - | 消息内容 | | `title` | 否 | - | 消息标题(markdown 和 link 类型必需) | | `at_mobiles` | 否 | - | @的手机号,多个用逗号分隔 | | `at_all` | 否 | `false` | 是否@所有人 | | `link_url` | 否 | - | 链接地址(link 类型必需) | | `pic_url` | 否 | - | 图片地址(link 类型可选) | | `btn_orientation` | 否 | `0` | actionCard 按钮排列方向:`0`竖直、`1`水平 | | `single_title` | 否 | - | actionCard 单按钮标题(整体跳转) | | `single_url` | 否 | - | actionCard 单按钮链接(整体跳转) | | `buttons` | 否 | - | actionCard 多按钮配置(JSON 数组),每项 `{ title, actionURL }` | | `feed_links` | 否 | - | feedCard 链接列表(JSON 数组),每项 `{ title, messageURL, picURL }` | ## 输出参数 | 参数名 | 描述 | | --------------- | -------------------- | | `success` | 是否发送成功 | | `message_id` | 消息ID(如果可用) | | `error_message` | 错误信息(如果失败) | ## 使用示例 ### 文本消息 ```yaml - name: Send Text Message uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'text' content: '✅ 构建成功!提交者:${{ github.actor }}' at_mobiles: '13800138000,13900139000' ``` ### Markdown 消息 ```yaml - name: Send Markdown Message uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'markdown' title: '构建报告' content: | ## 🎉 构建成功 **仓库**: ${{ github.repository }} **分支**: ${{ github.ref_name }} **提交者**: ${{ github.actor }} **提交信息**: ${{ github.event.head_commit.message }} [查看详情](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) at_all: true ``` ### 链接消息 ```yaml - name: Send Link Message uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'link' title: '新版本发布' content: '项目已发布新版本,点击查看详情' link_url: 'https://github.com/${{ github.repository }}/releases/latest' pic_url: 'https://avatars.githubusercontent.com/u/${{ github.actor_id }}' ``` ### ActionCard(整体跳转单按钮) ```yaml - name: Send ActionCard Single Button uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'actionCard' title: '乔布斯 20 年' content: | ![乔布斯](https://example.com/steve.jpg) 乔布斯 20 年 btn_orientation: '0' single_title: '阅读全文' single_url: 'https://www.dingtalk.com/' ``` ### ActionCard(独立跳转多按钮) ```yaml - name: Send ActionCard Multiple Buttons uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'actionCard' title: '构建结果' content: | ## 本次构建完成 - 版本:${{ github.ref_name }} - 提交者:${{ github.actor }} btn_orientation: '1' buttons: >- [ { "title": "查看日志", "actionURL": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" }, { "title": "查看发布页", "actionURL": "https://github.com/${{ github.repository }}/releases/latest" } ] ``` ### FeedCard(图文链接) ```yaml - name: Send FeedCard uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'feedCard' feed_links: >- [ { "title": "时代的火车向前开", "messageURL": "https://www.dingtalk.com/", "picURL": "https://static.dingtalk.com/media/xxx1.jpg" }, { "title": "正当防卫体育大战", "messageURL": "https://www.dingtalk.com/", "picURL": "https://static.dingtalk.com/media/xxx2.jpg" } ] ``` ## 高级配置 ### 条件发送 ```yaml # 构建失败时发送通知 - name: Send Notification on Failure if: failure() uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'text' content: '❌ 构建失败!请检查代码。' at_all: true # 构建成功时发送通知 - name: Send Notification on Success if: success() uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ secrets.DINGTALK_WEBHOOK_URL }} message_type: 'markdown' title: '✅ 构建成功' content: | ## 构建完成 **项目**: ${{ github.repository }} **分支**: ${{ github.ref_name }} **提交者**: ${{ github.actor }} **提交信息**: ${{ github.event.head_commit.message }} [查看详情](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) at_mobiles: ['${{ secrets.NOTIFY_MOBILE }}'] ``` ### 多环境配置 ```yaml - name: Send to Different Groups uses: actions/dingtalk-bot@v0.1 with: webhook_url: ${{ github.ref == 'refs/heads/main' && secrets.PROD_DINGTALK_WEBHOOK || secrets.DEV_DINGTALK_WEBHOOK }} message_type: 'text' content: '部署到 ${{ github.ref == "refs/heads/main" && "生产环境" || "测试环境" }} 完成' ```