-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path.gitlab-ci.yml
192 lines (183 loc) · 11 KB
/
.gitlab-ci.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# 改用ubuntu lts
image: ubuntu:22.04
stages:
- build_r4s
build_r4s:
stage: build_r4s
tags:
- docker
except:
- tags
before_script:
- apt-get update -y
- apt-get full-upgrade -y
- DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
- DEBIAN_FRONTEND=noninteractive apt-get install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential bzip2 ccache clang cmake cpio curl device-tree-compiler flex gawk gcc-multilib g++-multilib gettext genisoimage git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool llvm lrzsz msmtp ninja-build p7zip p7zip-full patch pkgconf python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
# git预设置-CI专用
- git config --global user.email "[email protected]"
- git config --global user.name "ci"
# 获取最新lede数据
- cd /builds/shihuang/routerbuild
script: |
echo "Clone LEDE Code"
git clone --branch "master" --single-branch https://github.com/coolsnowwolf/lede.git
echo "Update feeds"
cd ./lede
#sed -i 's/#src-git helloworld/src-git helloworld/g' ./feeds.conf.default
./scripts/feeds update -a
./scripts/feeds install -a
echo "Custom Settings Before Build"
echo "wan ip set to 192.168.2.1"
sed -i 's/192.168.1.1/192.168.2.1/g' package/base-files/files/bin/config_generate
#echo "default theme set to design"
#sed -i 's/luci-theme-bootstrap/luci-theme-design/' feeds/luci/collections/luci/Makefile
#echo "add design and design config repo"
#git clone --branch "main" --single-branch --depth 1 https://github.com/gngpp/luci-theme-design.git package/luci-theme-design
#git clone --branch "master" --single-branch --depth 1 https://github.com/gngpp/luci-app-design-config.git package/luci-app-design-config
echo "add openclash repo"
git clone --branch "dev" --single-branch --depth 1 https://github.com/vernesong/OpenClash.git package/openclash
echo "openclash base settings"
cd ./package/openclash/luci-app-openclash/root/etc/openclash
echo "add base openclash ip data"
curl -sfL -o ./Country.mmdb https://github.com/alecthw/mmdb_china_ip_list/raw/release/lite/Country.mmdb
curl -sfL -o ./GeoSite.dat https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat
curl -sfL -o ./GeoIP.dat https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat
echo "add latest dev openclash version"
mkdir ./core && cd ./core
export TUN_VER=$(curl -sfL https://raw.githubusercontent.com/vernesong/OpenClash/core/dev/core_version | sed -n "2{s/\r$//;p;q}")
echo $TUN_VER
curl -sfL -o ./tun.gz https://github.com/vernesong/OpenClash/raw/core/dev/premium/clash-linux-arm64-$TUN_VER.gz
gzip -d ./tun.gz && mv ./tun ./clash_tun
curl -sfL -o ./meta.tar.gz https://github.com/vernesong/OpenClash/raw/core/dev/meta/clash-linux-arm64.tar.gz
tar -zxf ./meta.tar.gz && mv ./clash ./clash_meta
curl -sfL -o ./dev.tar.gz https://github.com/vernesong/OpenClash/raw/core/dev/dev/clash-linux-arm64.tar.gz
tar -zxf ./dev.tar.gz
chmod +x ./clash*
rm -rf ./*.gz
echo 'show openclash info'
ls -lh
echo 'clean config'
cd /builds/shihuang/routerbuild/lede
rm -f ./.config*
touch ./.config
echo 'Custom configure file'
#
# ========================固件定制部分========================
# 参考:https://github.com/DHDAXCW/NanoPi-R4S-R4SE/blob/main/configs/lean/lean.config
# https://doc.openwrt.cc/1-General/4-Firmware-Format/
#
# 以下开始是个性化定制内容
# 编译r4s固件:
cat >> .config <<EOF
CONFIG_TARGET_rockchip=y
CONFIG_TARGET_rockchip_armv8=y
CONFIG_TARGET_rockchip_armv8_DEVICE_friendlyarm_nanopi-r4s=y
EOF
# 部分配置修改:
cat >> .config <<EOF
CONFIG_TARGET_ROOTFS_TARGZ=y
CONFIG_TARGET_ROOTFS_SQUASHFS=y
CONFIG_TARGET_IMAGES_GZIP=y
CONFIG_TARGET_ROOTFS_EXT4FS=y
CONFIG_TARGET_ROOTFS_PARTSIZE=1024
EOF
# 常用LuCI插件和额外包选择:
cat >> .config <<EOF
CONFIG_PACKAGE_ipv6helper=y
CONFIG_PACKAGE_dnsmasq_full_dhcpv6=y
CONFIG_PACKAGE_ip6tables-extra=y
CONFIG_PACKAGE_ip6tables-mod-nat=y
CONFIG_PACKAGE_autosamba=y
CONFIG_PACKAGE_luci-app-diskman=y
CONFIG_PACKAGE_luci-app-openclash=y
CONFIG_PACKAGE_luci-app-uugamebooster=y
CONFIG_PACKAGE_luci-app-wrtbwmon=y
CONFIG_PACKAGE_luci-app-ttyd=y
CONFIG_PACKAGE_luci-app-ddns=y
EOF
# LuCI主题:
#cat >> .config <<EOF
#CONFIG_PACKAGE_luci-theme-design=y
#CONFIG_PACKAGE_luci-app-design-config=y
#EOF
# 取消编译(不要删除被缩进的注释符号):
# 依据:CONFIG_DEFAULT_luci-app-xxx
cat >> .config <<EOF
# CONFIG_PACKAGE_luci-app-accesscontrol is not set
# CONFIG_PACKAGE_luci-app-ssr-plus is not set
# CONFIG_PACKAGE_luci-app-vlmcsd is not set
# CONFIG_PACKAGE_luci-app-wol is not set
# CONFIG_PACKAGE_luci-app-xlnetacc is not set
# CONFIG_PACKAGE_luci-app-zerotier is not set
# CONFIG_PACKAGE_luci-app-wireguard is not set
# CONFIG_PACKAGE_luci-app-ipsec-vpnd is not set
# CONFIG_PACKAGE_luci-app-adbyby-plus is not set
EOF
#
# ========================固件定制部分结束========================
#
echo 'Generate configuration file'
# 对比配置文件:
cd /builds/shihuang/routerbuild/lede
sed -i 's/^[ \t]*//g' ./.config
make defconfig
echo 'Make Clean'
make clean
echo 'Make download'
#echo -e "$(nproc) thread download"
#make download -j$(nproc) || make download -j1
make download -j1
echo 'Compile firmware'
#echo -e "$(nproc) thread compile"
# 设置为非root用户编译FORCE_UNSAFE_CONFIGURE=1
#make FORCE_UNSAFE_CONFIGURE=1 -j$(nproc) || make -j1
make dirclean
make FORCE_UNSAFE_CONFIGURE=1 -j1
# 保存编译后固件(编译后文件放置在bin目录下)
echo 'Assemble artifact'
# 设置时间标号
export BuildDate="`date +%Y%m%d`"
echo $BuildDate
## config
cp /builds/shihuang/routerbuild/lede/.config /builds/shihuang/routerbuild/bin/.config
## friendlyarm_nanopi_r4s
cp /builds/shihuang/routerbuild/lede/bin/targets/rockchip/armv8/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.gz /builds/shihuang/routerbuild/bin/$BuildDate-$CI_JOB_ID-openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.gz
cp /builds/shihuang/routerbuild/lede/bin/targets/rockchip/armv8/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz /builds/shihuang/routerbuild/bin/$BuildDate-$CI_JOB_ID-openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz
## remove git file
cd /builds/shihuang/routerbuild/bin
rm .gitignore
# 上传与发布
## 上传
### 上传到CowTransfer奶牛快传
### echo 'Upload Firmware To CowTransfer'
### cd /builds/shihuang/routerbuild/transfer
### curl -sL https://git.io/file-transfer | bash -s beta
### ./transfer cow --block 2621440 -s -p 99 -t 15 --hash --no-progress /builds/shihuang/routerbuild/bin 2>&1 | tee cowtransfer.log
####- echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)"
####- echo "::set-env name=COWTRANSFER_URL::$(cat cowtransfer.log | grep https | cut -f3 -d" ")"
####- echo $COWTRANSFER_URL
###export COWTRANSFER_URL=$(cat cowtransfer.log | grep https | cut -f3 -d" ")
###echo $COWTRANSFER_URL
### 上传到七牛云
echo 'Upload Firmware To Qiniu'
cd /builds/shihuang/routerbuild/qiniu
#### https://devtools.qiniu.com/qshell-v2.6.2-linux-amd64.tar.gz
chmod +x qshell
./qshell account $qAK $qSK qiniu --overwrite
##### squashfs-sysupgrade.img.gz
./qshell fput staticdownload openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade-gitlab.img.gz /builds/shihuang/routerbuild/bin/$BuildDate-$CI_JOB_ID-openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz --overwrite
##### ext4-sysupgrade.img.gz
./qshell fput staticdownload openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade-gitlab.img.gz /builds/shihuang/routerbuild/bin/$BuildDate-$CI_JOB_ID-openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade.img.gz --overwrite
##### .config
./qshell fput staticdownload r4s-gitlab.config /builds/shihuang/routerbuild/bin/.config --overwrite
# 发布release
echo 'Release R4S'
curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: $user_token" --data '{ "name": "'"$BuildDate"'-R4S-'"$CI_JOB_ID"'-snapshot", "tag_name": "CI-'"$CI_JOB_ID"'", "ref": "'"$CI_COMMIT_BRANCH"'", "description": "说明:<br />固件介绍页面:[https://www.qyh.name/807/](https://www.qyh.name/807/)<br />默认管理地址:192.168.2.1<br />默认账号:root<br />默认密码:password<br />默认主题:bootstrap<br />当前内核分区:32MB<br />当前系统分区:1024MB<br /><br />img.gz格式文件直接使用,无需解压。<br />将固件img.gz使用烧录工具烧录或者在路由器网页管理后台直接上传升级使用;<br />管理后台升级仅限于之前曾经使用在本处编译的固件并且并非大版本之间更新,大版本更新可能会清除所有配置信息或者请直接烧录重置全部数据。<br />请注意固件的格式和分区大小,若有不同请勿混合使用和更新。<br /><br />烧录工具下载:<br />[balenaEtcher](https://www.balena.io/etcher/)<br /><br />固件下载地址:<br />🔗[本地下载(仅限局域网内网用户)](http://192.168.2.100:800/shihuang/routerbuild/-/jobs/'"$CI_JOB_ID"'/artifacts/download)<br />【说明】链接有效期为编译成功后2周。<br /><br />🔗[七牛云(外网用户,squashfs固件)](http://down.cdn.qyh0214.com/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade-gitlab.img.gz)<br />【说明】链接有效期为长期,在每次编译成功后即覆盖为新版本。<br />🔗[七牛云(外网用户,ext4固件)](http://down.cdn.qyh0214.com/openwrt-rockchip-armv8-friendlyarm_nanopi-r4s-ext4-sysupgrade-gitlab.img.gz)<br />【说明】链接有效期为长期,在每次编译成功后即覆盖为新版本。<br />🔗[七牛云(外网用户,固件配置文件)](http://down.cdn.qyh0214.com/r4s-gitlab.config)<br />【说明】链接有效期为长期,在每次编译成功后即覆盖为新版本。此文件主要用于开发者使用,一般无需下载。<br /><br />Github分流:<br />请访问[Github](https://github.com/qyh214/OpenWRT-LEDE-BUILD/releases)"}' --request POST http://192.168.2.100:800/api/v4/projects/41/releases
artifacts:
#`date +%Y%m%d`-$CI_JOB_ID-openwrt-router-r4s
name: "$CI_JOB_ID-openwrt-router-r4s"
expire_in: 2 weeks
paths:
- /builds/shihuang/routerbuild/bin
# disable artifact passing
dependencies: []