Sync and Compile Steam Rules #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync and Compile Steam Rules | |
on: | |
schedule: | |
- cron: '0 18 * * *' # 每天北京时间02:00执行 | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
steam_rules: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repository | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Git user | |
run: | | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
- name: Install mihomo | |
run: | | |
version=$(curl -sL https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/version.txt) | |
curl -sL "https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/mihomo-linux-amd64-${version}.gz" | \ | |
gunzip -c > /usr/local/bin/mihomo && chmod +x /usr/local/bin/mihomo | |
- name: Fetch Steam Rules | |
run: | | |
mkdir -p rules/Domain rules/IP # 确保目录存在 | |
# 下载 Steam 规则文件 | |
curl -sL "https://raw.githubusercontent.com/Aethersailor/Custom_OpenClash_Rules/main/rule/Steam_CDN.list" -o rules/Steam_CDN.list | |
- name: Extract DOMAIN and IP rules from Steam list | |
run: | | |
# 提取 DOMAIN 和 IP-CIDR 规则 | |
grep -E 'DOMAIN|DOMAIN-SUFFIX' rules/Steam_CDN.list > rules/Domain/Steam-domain.list | |
grep -E 'IP-CIDR' rules/Steam_CDN.list > rules/IP/Steam-ip.list | |
- name: Convert Steam DOMAIN rules to YAML | |
run: | | |
# 将 DOMAIN 和 DOMAIN-SUFFIX 规则转换为 YAML 格式 | |
echo "payload:" > rules/Domain/Steam-domain.yaml | |
while IFS=, read -r type domain; do | |
if [[ -n "$domain" && ! "$domain" =~ ^# ]]; then | |
echo " - $domain" >> rules/Domain/Steam-domain.yaml | |
fi | |
done < rules/Domain/Steam-domain.list | |
- name: Convert Steam IP rules to YAML | |
run: | | |
# 将 IP-CIDR 规则转换为 YAML 格式 | |
echo "payload:" > rules/IP/Steam-ip.yaml | |
while IFS=, read -r type ip cidr; do | |
if [[ -n "$ip" && ! "$ip" =~ ^# && "$type" == "IP-CIDR" ]]; then | |
echo " - $ip" >> rules/IP/Steam-ip.yaml | |
fi | |
done < rules/IP/Steam-ip.list | |
- name: Convert Steam DOMAIN rules to MRS | |
run: | | |
# 使用 mihomo 转换为 MRS 格式 | |
mihomo convert-ruleset domain yaml rules/Domain/Steam-domain.yaml rules/Domain/Steam-domain.mrs | |
- name: Convert Steam IP rules to MRS | |
run: | | |
# 使用 mihomo 转换为 MRS 格式,并命名为 steamCDN-ip.mrs | |
mihomo convert-ruleset ipcidr yaml rules/IP/Steam-ip.yaml rules/IP/steamCDN-ip.mrs | |
- name: Clean up temporary files | |
run: | | |
# 删除临时文件 | |
rm -f rules/Steam_CDN.list rules/Domain/Steam-domain.list rules/IP/Steam-ip.list rules/Domain/Steam-domain.yaml rules/IP/Steam-ip.yaml | |
- name: Commit and Push Changes | |
run: | | |
git add . | |
git diff-index --quiet HEAD -- || (git commit -m "Updated Steam rules -> Steam-domain.mrs and steamCDN-ip.mrs" && git push) |