Files
ShellCrash/.github/workflows/bin_update.yml

142 lines
5.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: bin_update
on:
schedule:
- cron: "0 18 * * *" # UTC 18 = 北京时间次日凌晨 2 点
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout update branch (ignore if missing)
uses: actions/checkout@v5
with:
ref: update
fetch-depth: 1
persist-credentials: false # 禁用默认凭据(我们用 token push
- name: Apt Update & Update CA
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get -y install unzip curl git tar ca-certificates
sudo update-ca-certificates
cp -f /etc/ssl/certs/ca-certificates.crt bin/fix/ca-certificates.crt
- name: Update Dashboard
run: |
##########################################################
mkdir -p bin/dashboard
cd bin/dashboard
echo 下载 meta 魔改 yacd 面板
curl -kfSL -o meta_yacd.zip https://github.com/MetaCubeX/Yacd-meta/archive/gh-pages.zip
echo 下载 meta-xd 面板
curl -kfSL -o meta_xd.zip https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip
echo 下载 zashboard 面板
curl -kfSL -o zashboard.zip https://github.com/Zephyruso/zashboard/releases/latest/download/dist-cdn-fonts.zip
########################################
# Yacd-meta
########################################
unzip -o meta_yacd.zip > /dev/null
cd Yacd-meta-gh-pages
find . -name '*.map' -delete
rm -f report.html
# 输出文件放上级目录,避免 tar 读到自己
tar -zcvf ../meta_yacd.tar.gz . > /dev/null
cd ..
########################################
# metacubexd
########################################
unzip -o meta_xd.zip > /dev/null
cd metacubexd-gh-pages
find . -name '*.ttf' -delete
tar -zcvf ../meta_xd.tar.gz . > /dev/null
cd ..
########################################
# zashboard
########################################
unzip -o zashboard.zip > /dev/null
# 自动识别 dist 目录位置
if [ -d dist ]; then
cd dist
elif [ -d dist-cdn-fonts/dist ]; then
cd dist-cdn-fonts/dist
else
echo "错误:未找到 dist 目录"
exit 1
fi
echo 'board.zash.run.place' > CNAME
tar -zcvf ../../zashboard.tar.gz . > /dev/null
cd ../..
########################################
# 清理
########################################
rm -rf meta_yacd.zip meta_xd.zip zashboard.zip
rm -rf Yacd-meta-gh-pages metacubexd-gh-pages dist dist-cdn-fonts
echo 面板更新完成!
- name: Update Geodata
run: |
cd bin
curl -kfSL -o geodata/cn_mini.mmdb https://raw.githubusercontent.com/Hackl0us/GeoIP2-CN/release/Country.mmdb
curl -kfSL -o geodata/china_ip_list.txt https://raw.githubusercontent.com/ChanthMiao/China-IPv4-List/release/cn.txt
curl -kfSL -o geodata/china_ipv6_list.txt https://raw.githubusercontent.com/ChanthMiao/China-IPv6-List/release/cn6.txt
curl -kfSL -o geodata/geosite.dat https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-geodata/geosite-all.dat
curl -kfSL -o geodata/srs_geoip_cn.srs https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cnip.srs
curl -kfSL -o geodata/srs_geosite_cn.srs https://github.com/DustinWin/ruleset_geodata/releases/download/sing-box-ruleset/cn.srs
curl -kfSL -o geodata/mrs_geosite_cn.mrs https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-ruleset/cn.mrs
# 下载规则集
curl -kfSL -o mihomo-ruleset.zip https://github.com/DustinWin/ruleset_geodata/archive/refs/heads/mihomo-ruleset.zip
curl -kfSL -o sing-box-ruleset.zip https://github.com/DustinWin/ruleset_geodata/archive/refs/heads/sing-box-ruleset.zip
# 解压
unzip -o mihomo-ruleset.zip > /dev/null
unzip -o sing-box-ruleset.zip > /dev/null
# 处理 mihomo 规则
cd ruleset_geodata-mihomo-ruleset
find . -name '*.list' -delete
tar -zcvf mrs.tar.gz . > /dev/null
mv -f mrs.tar.gz ../geodata/
cd ..
# 处理 sing-box 规则
cd ruleset_geodata-sing-box-ruleset
find . -name '*.json' -delete
tar -zcvf srs.tar.gz . > /dev/null
mv -f srs.tar.gz ../geodata/
cd ..
# 删除目录
rm -rf ruleset_geodata-mihomo-ruleset
rm -rf ruleset_geodata-sing-box-ruleset
sed -i "s/GeoIP_v=.*/GeoIP_v=$(date '+%Y%m%d')/" version
echo 数据库及根证书文件更新完成!
- name: Rebuild update branch with no history
run: |
# 彻底删除历史记录
rm -rf .git
# 重新初始化仓库
git init
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"
git add .
git commit -m "自动更新最新Dashboard、Geodata数据库及根证书"
# 强制推送覆盖 update 分支
git branch -M update
git remote add origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git"
git push -f origin update
- name: Cleanup Workflow
uses: Mattraks/delete-workflow-runs@main
with:
retain_days: 1
keep_minimum_runs: 2