Skip to content

Build

Build #24269

Workflow file for this run

name: Build
on:
workflow_dispatch:
schedule:
- cron: "*/60 * * * *"
push:
branches:
- main
paths-ignore:
- "**/README.md"
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Prepare Workstation
shell: bash
run: |
git config --global init.defaultBranch main
curl -L https://github.com/zhanhb/cidr-merger/releases/download/v1.1.3/cidr-merger-linux-amd64 -o cidr-merger
chmod +x ./cidr-merger
mkdir -p ./publish
- name: Get Upstream
run: |
curl -L https://raw.githubusercontent.com/misakaio/chnroutes2/master/chnroutes.txt | sed '/^\#/d' > ipv4-chnroutes.txt
curl -L https://raw.githubusercontent.com/metowolf/iplist/master/data/special/china.txt -o ipv4-metowolf.txt
curl -L https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/china.txt -o ipv4-china.txt
curl -L https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt -o ipv4-china_ip_list.txt
curl -L https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/googlecn.txt -o ipv4-googlecn.txt
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > ipv4-apnic.txt
# get ipv4 data
cat ./ipv4*.txt | ./cidr-merger -s > ./ipv4.txt
curl -L https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/china6.txt -o ipv6-china6.txt
curl -L https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/googlecn6.txt -o ipv6-googlecn6.txt
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep '|CN|ipv6|' | cut -d'|' -f'4,5' | tr '|' '/' > ipv6-apnic.txt
# get ipv6 data
cat ./ipv6*.txt | ./cidr-merger -s > ./ipv6.txt
# get maxmind data
curl -L https://raw.githubusercontent.com/v2fly/geoip/release/text/cn.txt -o maxmind-cn.txt
# get db-ip data
export curdate=$(date +%Y-%m)
curl -L "https://download.db-ip.com/free/dbip-country-lite-$curdate.csv.gz" -o dbip.gz
gzip -d dbip.gz
cat dbip | grep "CN" | sed 's/...$//' | sed 's/\,/\-/g' | ./cidr-merger -s > dbip.txt
- name: Create Basefile
run: |
# create base file
cat ipv4.txt ipv6.txt maxmind-cn.txt dbip.txt | ./cidr-merger -s > publish/ip.txt
- name: Split to IPv4 and IPv6
run: |
# create ipv4 file
cat publish/ip.txt | perl -ne '/^(\d{1,3}(\.\d{1,3}){3}\/\d{1,2})/ && print "$1\n"' > publish/ipv4.txt
# create ipv6 file
cat publish/ip.txt | grep ":" | perl -ne '/(.+\/\d+)/ && print "$1\n"' > publish/ipv6.txt
- name: Git push assets to "release" branch
run: |
cd publish || exit 1
git init
git config --local user.name "carrnot"
git config --local user.email "85714711+carrnot@users.noreply.github.com"
git checkout -b release
git add --all
git commit -m "sync"
git remote add china-ip-list "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f china-ip-list release