219 lines
7.1 KiB
Markdown
219 lines
7.1 KiB
Markdown
# 钉钉消息推送 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: |
|
||

|
||
|
||
乔布斯 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" && "生产环境" || "测试环境" }} 完成'
|
||
```
|