Skip to content

Build ruleset and geodata #1572

Build ruleset and geodata

Build ruleset and geodata #1572

Workflow file for this run

name: Build ruleset and geodata
on:
workflow_dispatch:
schedule:
- cron: "0 19 * * *"
push:
branches:
- master
paths-ignore:
- "**/README.md"
- "**/*.ini"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set variables
run: |
echo "update_version=$(date -d '+8 hours' +%Y-%m-%d)" >> ${GITHUB_ENV}
echo "singbox_core_release_version=$(curl -sSL https://api.github.com/repos/SagerNet/sing-box/releases/latest | jq -r '.tag_name' | sed -E -e 's/([0-9]+)$/0/' -e 's/^v//')" >> ${GITHUB_ENV}
echo "singbox_core_latest_version=$(curl -sSL https://raw.githubusercontent.com/SagerNet/sing-box/docs/configuration/rule-set/source-format/index.html | awk '/<li>/ {last=$0} END {print last}' | sed -n 's/.*\([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p')" >> ${GITHUB_ENV}
echo "singbox_core_compatible_version=$(curl -sSL https://raw.githubusercontent.com/SagerNet/sing-box/docs/configuration/rule-set/source-format/index.html | awk '/<li>/{lines[++count]=$0} END{print lines[count-1]}' | sed -n 's/.*\([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/p')" >> ${GITHUB_ENV}
echo "singbox_rules_latest_version=$(curl -sSL https://raw.githubusercontent.com/SagerNet/sing-box/docs/configuration/rule-set/source-format/index.html | awk '/<li>/ {last=$0} END {print last}' | sed -n 's/^<li>\([0-9]\+\).*/\1/p')" >> ${GITHUB_ENV}
echo "singbox_rules_compatible_version=$(curl -sSL https://raw.githubusercontent.com/SagerNet/sing-box/docs/configuration/rule-set/source-format/index.html | awk '/<li>/{lines[++count]=$0} END{print lines[count-1]}' | sed -n 's/^<li>\([0-9]\+\).*/\1/p')" >> ${GITHUB_ENV}
echo "domains_download_url=https://github.com/DustinWin/domain-list-custom/releases/download/domains" >> ${GITHUB_ENV}
echo "ips_download_url=https://github.com/DustinWin/geoip/releases/download/ips" >> ${GITHUB_ENV}
shell: bash
- name: Clone Repository
uses: actions/checkout@v6
- name: Checkout DustinWin/domain-list-custom
uses: actions/checkout@v6
with:
repository: DustinWin/domain-list-custom
path: custom
- name: Checkout v2fly/domain-list-community
uses: actions/checkout@v6
with:
repository: v2fly/domain-list-community
path: community
- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: ./custom/go.mod
cache-dependency-path: ./custom/go.sum
- name: Generate `mihomo` geodata
run: |
mkdir -p ./community/mydata/
archs1=(private ads trackerslist microsoft-cn apple-cn google-cn games-cn media games ai networktest tld-proxy gfw proxy cn)
archs2=(private ads trackerslist microsoft-cn apple-cn google-cn games-cn ai networktest tld-proxy gfw proxy cn)
archs3=(private microsoft-cn apple-cn google-cn games-cn tld-proxy gfw cn-lite)
# Generate `mihomo` geosite-all.dat
cd ./community/
for arch1 in "${archs1[@]}"; do
curl -sSL "${domains_download_url}/${arch1}.list" | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' -e 's/DOMAIN-KEYWORD,/keyword:/' -e 's/DOMAIN-REGEX,/regexp:/' > "./mydata/${arch1}"
done
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '!/(^DOMAIN-REGEX,|ntp|stun|time)/' | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' > ./mydata/fakeip-filter
cat <<EOF >> ./mydata/fakeip-filter
keyword:ntp
keyword:stun
keyword:time
EOF
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '/^DOMAIN-REGEX,/ && !/(ntp|stun|time)/' | sed 's/DOMAIN-REGEX,/regexp:/' >> ./mydata/fakeip-filter
go run ./ --datapath=./mydata/ --outputname geosite-all.dat
# Generate `mihomo` geosite-all-lite.dat
rm -f ./mydata/ads ./mydata/fakeip-filter
curl -sSL "${domains_download_url}/fakeip-filter-lite.list" | awk '!/(^DOMAIN-REGEX,|ntp|stun|time)/' | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' > ./mydata/fakeip-filter-lite
cat <<EOF >> ./mydata/fakeip-filter-lite
keyword:ntp
keyword:stun
keyword:time
EOF
go run ./ --datapath=./mydata/ --outputname geosite-all-lite.dat
# Generate `mihomo` geosite.dat
rm -f ./mydata/*
for arch2 in "${archs2[@]}"; do
curl -sSL "${domains_download_url}/${arch2}.list" | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' -e 's/DOMAIN-KEYWORD,/keyword:/' -e 's/DOMAIN-REGEX,/regexp:/' > "./mydata/${arch2}"
done
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '!/^DOMAIN-REGEX,/' | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' > ./mydata/fakeip-filter
cat <<EOF >> ./mydata/fakeip-filter
keyword:ntp
keyword:stun
keyword:time
EOF
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '/^DOMAIN-REGEX,/ && !/(ntp|stun|time)/' | sed 's/DOMAIN-REGEX,/regexp:/' >> ./mydata/fakeip-filter
go run ./ --datapath=./mydata/ --outputname geosite.dat
# Generate `mihomo` geosite-lite.dat
rm -f ./mydata/ads ./mydata/fakeip-filter
curl -sSL "${domains_download_url}/fakeip-filter-lite.list" | awk '!/^DOMAIN-REGEX,/' | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' > ./mydata/fakeip-filter-lite
cat <<EOF >> ./mydata/fakeip-filter-lite
keyword:ntp
keyword:time
keyword:stun
EOF
go run ./ --datapath=./mydata/ --outputname geosite-lite.dat
# Generate `mihomo` geosite-mini.dat
rm -f ./mydata/*
for arch3 in "${archs3[@]}"; do
curl -sSL "${domains_download_url}/${arch3}.list" | sed -e 's/DOMAIN,/full:/' -e 's/DOMAIN-SUFFIX,//' -e 's/DOMAIN-KEYWORD,/keyword:/' -e 's/DOMAIN-REGEX,/regexp:/' > "./mydata/${arch3}"
done
mv -f ./mydata/cn-lite ./mydata/cn
go run ./ --datapath=./mydata/ --outputname geosite-mini.dat
- name: Get geoip relative files
run: |
mkdir -p ./mihomo-geodata/
# Download mihomo geoip files (.mmdb)
mihomo_mmdb=($(curl -sSL https://api.github.com/repos/DustinWin/geoip/releases | grep '"browser_download_url"' | grep '.mmdb' | awk -F '"' '{print $4}'))
count_mihomo_mmdb=${#mihomo_mmdb[@]}
for ((i = 0; i < count_mihomo_mmdb; i++)); do
wget -P ./mihomo-geodata/ "${mihomo_mmdb[i]}"
done
# Download `mihomo` other geoip files (except .mmdb)
mihomo_others=($(curl -sSL https://api.github.com/repos/DustinWin/geoip/releases | grep '"browser_download_url"' | grep '/mihomo-geodata/' | grep -v '.mmdb' | awk -F '"' '{print $4}'))
count_mihomo_others=${#mihomo_others[@]}
for ((i = 0; i < count_mihomo_others; i++)); do
wget -P ./community/ "${mihomo_others[i]}"
done
- name: Move `mihomo` geodata files
run: |
cd ./community/ || exit 1
for file in $(ls *.dat *.metadb); do
install -Dp "./${file}" ../mihomo-geodata/
done
rm -rf ../custom* ../community*
- name: Download `mihomo` rule-set files
run: |
mkdir -p ./mihomo-ruleset/
domains=(ads trackerslist microsoft-cn apple-cn google-cn games-cn netflix disney max primevideo appletv youtube tiktok bilibili spotify media games ai networktest tld-proxy gfw proxy cn cn-lite)
ips=(netflixip mediaip gamesip privateip cnip telegramip)
for domain in "${domains[@]}"; do
mkdir -p "./tools/domains/${domain}/"
curl -sSL "${domains_download_url}/${domain}.list" | sed -e 's/DOMAIN,//' -e 's/DOMAIN-SUFFIX,/\+\./' >> "./tools/domains/${domain}/${domain}.list"
done
mkdir -p ./tmp/ ./tools/domains/fakeip-filter/
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '!/^DOMAIN-REGEX,/' | sed -e 's/DOMAIN,//' -e 's/DOMAIN-SUFFIX,/\+\./' > ./tmp/temp-fakeip-filter-domains.txt
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '/^DOMAIN-REGEX,/' | sed -e 's/\\s/ /' -e 's/\\./\./g' -e 's/\[\^.\]+/*/g' -e 's/\^\.\*/\^\+/' -e 's/.*\^//; s/\$//' >> ./tmp/temp-fakeip-filter-domains.txt
sort --ignore-case ./tmp/temp-fakeip-filter-domains.txt >> ./tools/domains/fakeip-filter/fakeip-filter.list
mkdir -p ./tools/domains/fakeip-filter-lite/
curl -sSL "${domains_download_url}/fakeip-filter-lite.list" | awk '!/^DOMAIN-REGEX,/' | sed -e 's/DOMAIN,//' -e 's/DOMAIN-SUFFIX,/\+\./' > ./tmp/temp-fakeip-filter-lite-domains.txt
curl -sSL "${domains_download_url}/fakeip-filter-lite.list" | awk '/^DOMAIN-REGEX,/' | sed -e 's/\\./\./g' -e 's/\[\^.\]+/*/g' -e 's/\^\.\*/\^\+/' -e 's/.*\^//; s/\$//' >> ./tmp/temp-fakeip-filter-lite-domains.txt
sort --ignore-case ./tmp/temp-fakeip-filter-lite-domains.txt >> ./tools/domains/fakeip-filter-lite/fakeip-filter-lite.list
mkdir -p ./tools/domains/private/
curl -sSL "${domains_download_url}/private.list" | awk '!/^DOMAIN-REGEX,/' | sed -e 's/DOMAIN,//' -e 's/DOMAIN-SUFFIX,/\+\./' > ./tmp/temp-private-domains.txt
curl -sSL "${domains_download_url}/private.list" | awk '/^DOMAIN-REGEX,/' | sed -e 's/\\./\./g' -e 's/\[\^.\]+/*/g' -e 's/\^\.\*/\^\+/' -e 's/.*\^//; s/\$//' >> ./tmp/temp-private-domains.txt
sort --ignore-case ./tmp/temp-private-domains.txt >> ./tools/domains/private/private.list
rm -f ./tmp/*
curl -sSL "${domains_download_url}/applications.list" > ./mihomo-ruleset/applications.list
for ip in "${ips[@]}"; do
mkdir -p "./tools/ips/${ip}/"
curl -sSL "${ips_download_url}/${ip}.list" | sed 's/.*,//' >> "./tools/ips/${ip}/${ip}.list"
done
- name: Download `sing-box` rule_set files
run: |
domains=(private ads trackerslist microsoft-cn apple-cn google-cn games-cn netflix disney max primevideo appletv youtube tiktok bilibili spotify media games ai networktest tld-proxy gfw proxy cn cn-lite)
ips=(netflixip mediaip gamesip privateip cnip telegramip)
for domain in "${domains[@]}"; do
mkdir -p "./tools/rules/${domain}/"
curl -sSL "${domains_download_url}/${domain}.list" > "./tools/rules/${domain}/${domain}.list"
done
mkdir -p ./tools/rules/fakeip-filter/
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '!/(^DOMAIN-REGEX,|ntp|stun|time)/' > ./tmp/temp-fakeip-filter-rules.txt
cat <<EOF >> ./tmp/temp-fakeip-filter-rules.txt
DOMAIN-KEYWORD,ntp
DOMAIN-KEYWORD,stun
DOMAIN-KEYWORD,time
EOF
curl -sSL "${domains_download_url}/fakeip-filter.list" | awk '/^DOMAIN-REGEX,/ && !/(ntp|stun|time)/' >> ./tmp/temp-fakeip-filter-rules.txt
sort --ignore-case ./tmp/temp-fakeip-filter-rules.txt > ./tools/rules/fakeip-filter/fakeip-filter.list
mkdir -p ./tools/rules/fakeip-filter-lite/
curl -sSL "${domains_download_url}/fakeip-filter-lite.list" | awk '!/(^DOMAIN-REGEX,|ntp|stun|time)/' > ./tmp/temp-fakeip-filter-lite-rules.txt
cat <<EOF >> ./tmp/temp-fakeip-filter-lite-rules.txt
DOMAIN-KEYWORD,ntp
DOMAIN-KEYWORD,stun
DOMAIN-KEYWORD,time
EOF
sort --ignore-case ./tmp/temp-fakeip-filter-lite-rules.txt > ./tools/rules/fakeip-filter-lite/fakeip-filter-lite.list
rm -rf ./tmp*
mkdir -p ./tools/rules/applications/
curl -sSL "${domains_download_url}/applications.list" > "./tools/rules/applications/applications.list"
for ip in "${ips[@]}"; do
mkdir -p "./tools/rules/${ip}/"
curl -sSL "${ips_download_url}/${ip}.list" > "./tools/rules/${ip}/${ip}.list"
done
- name: Generate `mihomo` rule-set (mrs) and move .list files
run: |
curl -L https://github.com/DustinWin/proxy-tools/releases/download/mihomo/mihomo-meta-linux-amd64v3.tar.gz | tar -zx -C ./tools/
mv -f ./tools/CrashCore ./tools/mihomo
cd ./tools/
chmod +x ./mihomo
list=($(ls ./domains/))
for ((i = 0; i < ${#list[@]}; i++)); do
./mihomo convert-ruleset domain text "./domains/${list[i]}/${list[i]}.list" ../mihomo-ruleset/${list[i]}.mrs
mv -f "./domains/${list[i]}/${list[i]}.list" ../mihomo-ruleset/
done
list=($(ls ./ips/))
for ((i = 0; i < ${#list[@]}; i++)); do
./mihomo convert-ruleset ipcidr text "./ips/${list[i]}/${list[i]}.list" ../mihomo-ruleset/${list[i]}.mrs
mv -f "./ips/${list[i]}/${list[i]}.list" ../mihomo-ruleset/
done
rm -rf ./mihomo* ./domains/ ./ips/
- name: Generate `sing-box` rule_set (srs) and move .json files
run: |
if [[ "${{ env.singbox_core_latest_version }}" == "${{ env.singbox_core_release_version }}" ]]; then
# Setting `sing-box` core&ruleset environment variables
echo "singbox_core_old_version=${{ env.singbox_core_compatible_version }}" >> $GITHUB_ENV
echo "singbox_core_new_version=${{ env.singbox_core_latest_version }}" >> $GITHUB_ENV
echo "singbox_ruleset_old_version=${{ env.singbox_rules_compatible_version }}" >> $GITHUB_ENV
echo "singbox_ruleset_new_version=${{ env.singbox_rules_latest_version }}" >> $GITHUB_ENV
echo "singbox_equal=true" >> $GITHUB_ENV
# Generate `sing-box` rule_set (compatible)
curl -L "https://github.com/SagerNet/sing-box/releases/download/v${{ env.singbox_core_compatible_version }}/sing-box-${{ env.singbox_core_compatible_version }}-linux-amd64.tar.gz" | tar -zx -C ./tools/
mv -f "./tools/sing-box-${{ env.singbox_core_compatible_version }}-linux-amd64/sing-box" ./tools/sing-box
mkdir -p ./sing-box-ruleset-compatible/
cd ./tools/
sed -i 's/"version": 1/"version": ${{ env.singbox_rules_compatible_version }}/' ./convert.sh
chmod +x ./convert.sh && ./convert.sh
mv -f ./*.json ./*.srs ../sing-box-ruleset-compatible/
rm -rf ./sing-box*
# Generate `sing-box` rule_set
cd ../
curl -L "https://github.com/DustinWin/proxy-tools/releases/download/sing-box/sing-box-release-linux-amd64.tar.gz" | tar -zx -C ./tools/
mv -f "./tools/CrashCore" ./tools/sing-box
mkdir -p ./sing-box-ruleset/
cd ./tools/
sed -i 's/"version": ${{ env.singbox_rules_compatible_version }}/"version": ${{ env.singbox_rules_latest_version }}/' ./convert.sh
chmod +x ./convert.sh && ./convert.sh
mv -f ./*.json ./*.srs ../sing-box-ruleset/
rm -rf ./sing-box* ./rules*
else
# Setting `sing-box` core&ruleset environment variables
echo "singbox_core_old_version=${{ env.singbox_core_compatible_version }}" >> $GITHUB_ENV
echo "singbox_core_new_version=${{ env.singbox_core_latest_version }}" >> $GITHUB_ENV
echo "singbox_ruleset_old_version=${{ env.singbox_rules_compatible_version }}" >> $GITHUB_ENV
echo "singbox_ruleset_new_version=${{ env.singbox_rules_latest_version }}" >> $GITHUB_ENV
echo "singbox_equal=false" >> $GITHUB_ENV
# Generate `sing-box` rule_set (compatible)
wget "https://github.com/DustinWin/proxy-tools/releases/download/sing-box/sing-box-release-linux-amd64.tar.gz" -O - | tar -zxf - -C ./tools/
mv -f "./tools/CrashCore" ./tools/sing-box
mkdir -p ./sing-box-ruleset-compatible/
cd ./tools/
sed -i 's/"version": 1/"version": ${{ env.singbox_rules_compatible_version }}/' ./convert.sh
chmod +x ./convert.sh && ./convert.sh
mv -f ./*.json ./*.srs ../sing-box-ruleset-compatible/
rm -rf ./sing-box*
# Generate `sing-box` rule_set
cd ../
curl -L "https://github.com/DustinWin/proxy-tools/releases/download/sing-box/sing-box-dev-linux-amd64.tar.gz" | tar -zx -C ./tools/
mv -f "./tools/CrashCore" ./tools/sing-box
mkdir -p ./sing-box-ruleset/
cd ./tools/
sed -i 's/"version": ${{ env.singbox_rules_compatible_version }}/"version": ${{ env.singbox_rules_latest_version }}/' ./convert.sh
chmod +x ./convert.sh && ./convert.sh
mv -f ./*.json ./*.srs ../sing-box-ruleset/
rm -rf ./sing-box* ./rules*
fi
- name: Release and upload `mihomo-geodata` assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: mihomo-geodata
tag: mihomo-geodata
overwrite: true
body: |
[mihomo 内核](https://github.com/MetaCubeX/mihomo) geodata 文件
geodata 文件更新于 ${{ env.update_version }}
file_glob: true
file: ./mihomo-geodata/*
- name: Commit and push `mihomo-geodata` branch
run: |
cd ./mihomo-geodata/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b mihomo-geodata
git add . && git commit -m "mihomo 内核 geodata 文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f origin mihomo-geodata
- name: Release and upload `mihomo-ruleset` assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: mihomo-ruleset
tag: mihomo-ruleset
overwrite: true
body: |
[mihomo 内核](https://github.com/MetaCubeX/mihomo) rule-set 规则集文件
规则集文件更新于 ${{ env.update_version }}
file_glob: true
file: ./mihomo-ruleset/*
- name: Commit and push `mihomo-ruleset` branch
run: |
cd ./mihomo-ruleset/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b mihomo-ruleset
git add . && git commit -m "mihomo 内核 rule-set 规则集文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f origin mihomo-ruleset
- name: Release and upload `sing-box-ruleset-compatible` assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: sing-box-ruleset-compatible
tag: sing-box-ruleset-compatible
overwrite: true
body: |
[sing-box 内核](https://github.com/SagerNet/sing-box) rule_set 规则集文件
适用于 v${{ env.singbox_core_old_version }}-v${{ env.singbox_core_new_version }}(不包含)系列版本的 sing-box 内核(`"version": ${{ env.singbox_ruleset_old_version }}`)
规则集文件更新于 ${{ env.update_version }}
file_glob: true
file: ./sing-box-ruleset-compatible/*
- name: Commit and push `sing-box-ruleset-compatible` branch
run: |
cd ./sing-box-ruleset-compatible/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b sing-box-ruleset-compatible
git add . && git commit -m "sing-box 内核 rule_set 规则集文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f origin sing-box-ruleset-compatible
- name: Release and upload `sing-box-ruleset` assets
if: ${{ env.singbox_equal == 'true' }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: sing-box-ruleset
tag: sing-box-ruleset
overwrite: true
body: |
[sing-box 内核](https://github.com/SagerNet/sing-box) rule_set 规则集文件
适用于 v${{ env.singbox_core_new_version }}(包含)+ 系列版本的 sing-box 内核(`"version": ${{ env.singbox_ruleset_new_version }}`)
规则集文件更新于 ${{ env.update_version }}
file_glob: true
file: ./sing-box-ruleset/*
- name: Release and upload `sing-box-ruleset` assets
if: ${{ env.singbox_equal == 'false' }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
release_name: sing-box-ruleset
tag: sing-box-ruleset
overwrite: true
body: |
[sing-box 内核](https://github.com/SagerNet/sing-box) rule_set 规则集文件
适用于 v${{ env.singbox_core_new_version }} 系列版本的 sing-box 内核(`"version": ${{ env.singbox_ruleset_new_version }}`)
规则集文件更新于 ${{ env.update_version }}
file_glob: true
file: ./sing-box-ruleset/*
- name: Commit and push `sing-box-ruleset` branch
run: |
cd ./sing-box-ruleset/ || exit 1
git init
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git checkout -b sing-box-ruleset
git add . && git commit -m "sing-box 内核 rule_set 规则集文件更新于 ${update_version}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f origin sing-box-ruleset
- name: Purge jsDelivr CDN
run: |
cd ./mihomo-geodata/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@mihomo-geodata/${file}"
done
cd ../mihomo-ruleset/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@mihomo-ruleset/${file}"
done
cd ../sing-box-ruleset-compatible/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@sing-box-ruleset-compatible/${file}"
done
cd ../sing-box-ruleset/ || exit 1
for file in $(ls); do
curl -i "https://purge.jsdelivr.net/gh/${{ github.repository }}@sing-box-ruleset/${file}"
done
- name: Delete old workflow runs
uses: Mattraks/delete-workflow-runs@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
retain_days: 3
keep_minimum_runs: 1