更新 .gitea/workflows/update-rules.yml
All checks were successful
Download and Publish Clash Rules / download-and-publish (push) Successful in 19s
All checks were successful
Download and Publish Clash Rules / download-and-publish (push) Successful in 19s
This commit is contained in:
@@ -1,49 +1,222 @@
|
|||||||
name: Download Clash Rules
|
name: Download and Publish Clash Rules
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 23 * * *'
|
- cron: '0 23 * * *' # 每天北京时间早上7点执行
|
||||||
workflow_dispatch:
|
workflow_dispatch: # 允许手动触发
|
||||||
push:
|
push:
|
||||||
branches: [ main, master ]
|
branches: [ main, master ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
download-rules:
|
download-and-publish:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: 创建规则目录
|
- name: 创建规则目录
|
||||||
run: mkdir -p ruleset
|
run: mkdir -p ruleset
|
||||||
|
|
||||||
- name: 下载规则文件
|
- name: 下载规则文件
|
||||||
run: |
|
run: |
|
||||||
|
echo "开始下载规则文件..."
|
||||||
|
|
||||||
|
# 定义规则文件列表
|
||||||
|
rules=(
|
||||||
|
"reject"
|
||||||
|
"icloud"
|
||||||
|
"apple"
|
||||||
|
"google"
|
||||||
|
"proxy"
|
||||||
|
"direct"
|
||||||
|
"private"
|
||||||
|
"gfw"
|
||||||
|
"tld-not-cn"
|
||||||
|
"telegramcidr"
|
||||||
|
"cncidr"
|
||||||
|
"lancidr"
|
||||||
|
"applications"
|
||||||
|
)
|
||||||
|
|
||||||
# 下载所有规则文件
|
# 下载所有规则文件
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt" -o "ruleset/reject.txt"
|
for rule in "${rules[@]}"; do
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt" -o "ruleset/icloud.txt"
|
echo "下载 $rule.txt..."
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt" -o "ruleset/apple.txt"
|
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/${rule}.txt" \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt" -o "ruleset/google.txt"
|
-o "ruleset/${rule}.txt" \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt" -o "ruleset/proxy.txt"
|
--fail \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt" -o "ruleset/direct.txt"
|
--silent \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt" -o "ruleset/private.txt"
|
--show-error \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt" -o "ruleset/gfw.txt"
|
--retry 3 \
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt" -o "ruleset/tld-not-cn.txt"
|
--retry-delay 5
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt" -o "ruleset/telegramcidr.txt"
|
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt" -o "ruleset/cncidr.txt"
|
# 同时生成 YAML 格式(Clash 需要)
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt" -o "ruleset/lancidr.txt"
|
echo "payload:" > "ruleset/${rule}.yaml"
|
||||||
curl -L "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt" -o "ruleset/applications.txt"
|
sed 's/^/ - /' "ruleset/${rule}.txt" >> "ruleset/${rule}.yaml"
|
||||||
|
done
|
||||||
|
|
||||||
- name: 检查下载结果
|
- name: 生成索引文件
|
||||||
run: |
|
run: |
|
||||||
echo "=== 下载完成,文件列表 ==="
|
cat > ruleset/README.md << 'EOF'
|
||||||
ls -la ruleset/
|
# Clash 规则文件
|
||||||
echo "=== 文件大小统计 ==="
|
|
||||||
du -h ruleset/*
|
|
||||||
|
|
||||||
- name: 设置日期环境变量
|
最后更新时间: $(date +'%Y-%m-%d %H:%M:%S UTC')
|
||||||
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
|
||||||
|
## 规则文件列表
|
||||||
- name: 上传规则文件
|
|
||||||
|
| 规则名称 | 文本格式 | YAML格式 | 描述 |
|
||||||
|
|---------|---------|----------|------|
|
||||||
|
| 广告拦截 | [reject.txt](./reject.txt) | [reject.yaml](./reject.yaml) | 广告和跟踪域名 |
|
||||||
|
| iCloud | [icloud.txt](./icloud.txt) | [icloud.yaml](./icloud.yaml) | iCloud 域名 |
|
||||||
|
| 苹果服务 | [apple.txt](./apple.txt) | [apple.yaml](./apple.yaml) | Apple 服务域名 |
|
||||||
|
| 谷歌服务 | [google.txt](./google.txt) | [google.yaml](./google.yaml) | Google 服务域名 |
|
||||||
|
| 代理列表 | [proxy.txt](./proxy.txt) | [proxy.yaml](./proxy.yaml) | 需要代理的域名 |
|
||||||
|
| 直连列表 | [direct.txt](./direct.txt) | [direct.yaml](./direct.yaml) | 直连域名 |
|
||||||
|
| 私有网络 | [private.txt](./private.txt) | [private.yaml](./private.yaml) | 私有网络域名 |
|
||||||
|
| GFW列表 | [gfw.txt](./gfw.txt) | [gfw.yaml](./gfw.yaml) | GFW 域名列表 |
|
||||||
|
| 非中国顶级域名 | [tld-not-cn.txt](./tld-not-cn.txt) | [tld-not-cn.yaml](./tld-not-cn.yaml) | 非中国顶级域名 |
|
||||||
|
| Telegram CIDR | [telegramcidr.txt](./telegramcidr.txt) | [telegramcidr.yaml](./telegramcidr.yaml) | Telegram IP 段 |
|
||||||
|
| 中国 CIDR | [cncidr.txt](./cncidr.txt) | [cncidr.yaml](./cncidr.yaml) | 中国 IP 段 |
|
||||||
|
| 局域网 CIDR | [lancidr.txt](./lancidr.txt) | [lancidr.yaml](./lancidr.yaml) | 局域网 IP 段 |
|
||||||
|
| 应用规则 | [applications.txt](./applications.txt) | [applications.yaml](./applications.yaml) | 应用程序规则 |
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
### 在 Clash 配置中使用(远程规则)
|
||||||
|
|
||||||
|
\`\`\`yaml
|
||||||
|
rule-providers:
|
||||||
|
reject:
|
||||||
|
type: http
|
||||||
|
behavior: domain
|
||||||
|
url: "https://raw.githubusercontent.com/[你的用户名]/[你的仓库名]/main/ruleset/reject.yaml"
|
||||||
|
path: ./ruleset/reject.yaml
|
||||||
|
interval: 86400
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
### 在 Clash 配置中使用(本地规则)
|
||||||
|
|
||||||
|
1. 下载规则文件到本地 Clash 配置目录
|
||||||
|
2. 在配置文件中引用:
|
||||||
|
|
||||||
|
\`\`\`yaml
|
||||||
|
rule-providers:
|
||||||
|
reject:
|
||||||
|
type: file
|
||||||
|
behavior: domain
|
||||||
|
path: ./ruleset/reject.yaml
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## 数据来源
|
||||||
|
|
||||||
|
规则文件来源于 [Loyalsoldier/clash-rules](https://github.com/Loyalsoldier/clash-rules)
|
||||||
|
|
||||||
|
## 更新频率
|
||||||
|
|
||||||
|
每天自动更新一次(UTC 23:00 / 北京时间 07:00)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: 生成更新日志
|
||||||
|
run: |
|
||||||
|
cat > ruleset/UPDATE_LOG.md << EOF
|
||||||
|
# 更新日志
|
||||||
|
|
||||||
|
## $(date +'%Y-%m-%d')
|
||||||
|
|
||||||
|
### 文件统计
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo '```' >> ruleset/UPDATE_LOG.md
|
||||||
|
ls -lh ruleset/*.txt | awk '{print $9 ": " $5}' >> ruleset/UPDATE_LOG.md
|
||||||
|
echo '```' >> ruleset/UPDATE_LOG.md
|
||||||
|
|
||||||
|
echo "" >> ruleset/UPDATE_LOG.md
|
||||||
|
echo "### 规则数量统计" >> ruleset/UPDATE_LOG.md
|
||||||
|
echo '```' >> ruleset/UPDATE_LOG.md
|
||||||
|
for file in ruleset/*.txt; do
|
||||||
|
name=$(basename "$file" .txt)
|
||||||
|
count=$(wc -l < "$file")
|
||||||
|
echo "$name: $count 条规则" >> ruleset/UPDATE_LOG.md
|
||||||
|
done
|
||||||
|
echo '```' >> ruleset/UPDATE_LOG.md
|
||||||
|
|
||||||
|
- name: 配置 Git
|
||||||
|
run: |
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
|
||||||
|
- name: 提交更改
|
||||||
|
run: |
|
||||||
|
git add ruleset/
|
||||||
|
git diff --cached --quiet || git commit -m "Update clash rules - $(date +'%Y-%m-%d')"
|
||||||
|
|
||||||
|
- name: 推送到仓库
|
||||||
|
run: |
|
||||||
|
git push origin main || git push origin master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: 创建 Release(每周一次)
|
||||||
|
if: github.event_name == 'schedule' && contains('1', github.run_number)
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: v${{ github.run_number }}
|
||||||
|
name: Clash Rules ${{ github.run_number }}
|
||||||
|
body: |
|
||||||
|
## 📦 Clash 规则文件更新
|
||||||
|
|
||||||
|
**更新时间**: ${{ env.DATE }}
|
||||||
|
|
||||||
|
### 📥 下载链接
|
||||||
|
|
||||||
|
您可以通过以下方式获取规则文件:
|
||||||
|
|
||||||
|
1. **直接引用**(推荐)
|
||||||
|
```
|
||||||
|
https://raw.githubusercontent.com/${{ github.repository }}/main/ruleset/[规则名].yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **下载压缩包**
|
||||||
|
点击下方的 `clash-rules.zip` 下载所有规则文件
|
||||||
|
|
||||||
|
### 📊 本次更新统计
|
||||||
|
查看 [UPDATE_LOG.md](https://github.com/${{ github.repository }}/blob/main/ruleset/UPDATE_LOG.md)
|
||||||
|
|
||||||
|
### 🔗 相关链接
|
||||||
|
- [规则使用说明](https://github.com/${{ github.repository }}/blob/main/ruleset/README.md)
|
||||||
|
- [数据来源](https://github.com/Loyalsoldier/clash-rules)
|
||||||
|
files: |
|
||||||
|
ruleset/*.txt
|
||||||
|
ruleset/*.yaml
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
- name: 创建规则压缩包
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
run: |
|
||||||
|
cd ruleset
|
||||||
|
zip -r ../clash-rules.zip *.txt *.yaml README.md UPDATE_LOG.md
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: 上传压缩包作为 Artifact
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: clash-rules-${{ env.DATE }}
|
name: clash-rules-${{ github.run_number }}
|
||||||
path: ruleset/
|
path: clash-rules.zip
|
||||||
retention-days: 30
|
retention-days: 7
|
||||||
|
|
||||||
|
- name: 输出访问地址
|
||||||
|
run: |
|
||||||
|
echo "✅ 规则文件已成功发布!"
|
||||||
|
echo ""
|
||||||
|
echo "📁 文件访问地址:"
|
||||||
|
echo "https://github.com/${{ github.repository }}/tree/main/ruleset"
|
||||||
|
echo ""
|
||||||
|
echo "🔗 Raw 文件地址示例:"
|
||||||
|
echo "https://raw.githubusercontent.com/${{ github.repository }}/main/ruleset/reject.yaml"
|
||||||
|
echo ""
|
||||||
|
echo "📦 CDN 加速地址(中国可访问):"
|
||||||
|
echo "https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/reject.yaml"
|
||||||
|
echo "https://fastly.jsdelivr.net/gh/${{ github.repository }}@main/ruleset/reject.yaml"
|
||||||
Reference in New Issue
Block a user