-
Notifications
You must be signed in to change notification settings - Fork 75
147 lines (127 loc) · 5.06 KB
/
daily-build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: Daily Build
on:
workflow_dispatch:
schedule:
- cron: 0 19 * * 0,2,4
# push:
# branches:
# - master
# paths:
# - '.github/start'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Initialization environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- name: Set Golang environment
uses: actions/setup-go@v5
with:
go-version: "stable"
- name: Set env variables
run: |
echo "RELEASE_NAME=Released on $(date +%Y%m%d%H%M)" >> $GITHUB_ENV
echo "TAG_NAME=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV
echo "CUR_WEEK=$(date +%a)" >> $GITHUB_ENV
- name: Clone mmdb_china_ip_list
env:
REPO_URL: https://github.com/alecthw/mmdb_china_ip_list
REPO_BRANCH: master
run: git clone -b $REPO_BRANCH $REPO_URL
- name: Download GeoLite2-Country
env:
LICENSE_KEY: ${{ secrets.MAXMIND_GEOLITE2_LICENSE }}
run: |
cd mmdb_china_ip_list
curl -LR "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=${LICENSE_KEY}&suffix=tar.gz" -o GeoLite2-Country.tar.gz
tar xzvf GeoLite2-Country.tar.gz
rm -f GeoLite2-Country.tar.gz
mv GeoLite2-Country_*/GeoLite2-Country.mmdb ./
rm -rf GeoLite2-Country_*
- name: Download GeoLite2-Country-CSV
env:
LICENSE_KEY: ${{ secrets.MAXMIND_GEOLITE2_LICENSE }}
run: |
cd mmdb_china_ip_list
curl -LR "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=${LICENSE_KEY}&suffix=zip" -o GeoLite2-Country-CSV.zip
unzip GeoLite2-Country-CSV.zip
rm -f GeoLite2-Country-CSV.zip
mv GeoLite2-Country-CSV_* mindmax
- name: Download china_ip_list
run: |
cd mmdb_china_ip_list
curl -LR -o china_ip_list.txt "https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt"
- name: Download chunzhen cn list
run: |
cd mmdb_china_ip_list
curl -LR -o chunzhen_cn.txt "https://raw.githubusercontent.com/metowolf/iplist/master/data/special/china.txt"
- name: Download calng ip list
run: |
cd mmdb_china_ip_list
curl -LR -o all_cn.txt "https://ispip.clang.cn/all_cn.txt"
curl -LR -o all_cn_ipv6.txt "https://ispip.clang.cn/all_cn_ipv6.txt"
- name: Download china-operator-ip list
run: |
cd mmdb_china_ip_list
curl -LR -o china_operator_ipv4.txt "https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/china.txt"
curl -LR -o china_operator_ipv6.txt "https://raw.githubusercontent.com/gaoyifan/china-operator-ip/ip-lists/china6.txt"
- name: Download china cloud ip
run: |
cd mmdb_china_ip_list
curl -LR -o cloud_cn.list "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Cloud/CloudCN/CloudCN.list"
- name: Build mmdb generator
run: |
cd mmdb_china_ip_list
go build -o mmdb_gen
- name: Generate mmdb file
run: |
cd mmdb_china_ip_list
./mmdb_gen -new
- name: Generate version file
run: |
cd mmdb_china_ip_list
echo ${{ env.TAG_NAME }} > version
- name: Prepare publish
run: |
mkdir -p publish/lite
cp -af mmdb_china_ip_list/version publish/version
cp -af mmdb_china_ip_list/china_ip_list.mmdb publish/Country.mmdb
cp -af mmdb_china_ip_list/lite_china_ip_list.mmdb publish/lite/Country.mmdb
- name: Push to release branch
run: |
cd publish
git init
git config --local user.name "${{ github.actor }}"
git config --local user.email "${{ github.actor }}@users.noreply.github.com"
git checkout -b release
git add .
git commit -m "${{ env.RELEASE_NAME }}"
git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}"
git push -f -u origin release
cp -af lite/Country.mmdb Country-lite.mmdb
- name: Upload to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SFTP_HOST }}
port: ${{ secrets.SFTP_PORT }}
username: ${{ secrets.SFTP_USERNAME }}
password: ${{ secrets.SFTP_PASSWORD }}
source: "publish/Country.mmdb,publish/version,publish/lite/Country.mmdb"
target: "/www/mmdb"
rm: true
strip_components: 1
- name: Release and upload
if: env.CUR_WEEK == 'Mon'
uses: softprops/action-gh-release@v2
with:
name: ${{ env.RELEASE_NAME }}
tag_name: ${{ env.TAG_NAME }}
draft: false
prerelease: false
files: |
./publish/version
./publish/Country.mmdb
./publish/Country-lite.mmdb