forked from hugcabbage/shared-lede
-
Notifications
You must be signed in to change notification settings - Fork 0
199 lines (181 loc) · 5.74 KB
/
build-openwrt.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
193
194
195
196
197
198
199
#
# Copyright (C) 2022 hugcabbage <[email protected]>
#
# This is free software, licensed under the MIT License.
#
# <https://github.com/hugcabbage/shared-lede>
#
# 源码采用openwrt openwrt-22.03分支
#
name: 固件编译 openwrt 22.03
on:
workflow_dispatch:
inputs:
build:
description: '若要编译固件,请输入true'
required: true
default: 'true'
type: string
model:
description: '选择设备'
required: true
type: choice
options:
- 'xiaomi-cr6608'
- 'xiaomi-cr6606'
- 'xiaomi-cr6609'
- 'redmi-ac2100'
- 'xiaomi-ac2100'
- 'xiaomi-4a-gigabit'
- 'xiaomi-3g-v2'
- 'xiaomi-3g'
- 'xiaomi-4'
- 'xiaomi-3-pro'
- 'phicomm-k2p'
- 'redmi-ax6s'
- 'xiaomi-4a-100m'
- 'xiaomi-4c'
- 'miwifi-nano'
- 'glinet-mt300n-v2'
- 'glinet-microuter-n300'
- 'miwifi-mini'
- 'miwifi-r3'
lan_ipad:
description: '设置LAN口IP地址(会覆盖modify脚本中的设置)'
required: false
default: ''
type: string
record:
description: '输入版本描述'
required: false
default: '升级内容:内核升级,更新应用版本'
type: string
switch_tag:
description: '切换到最近稳定版本'
required: false
type: boolean
release:
description: '上传到release'
required: false
default: true
type: boolean
artifact:
description: '上传到artifact'
required: false
type: boolean
jobs:
build:
name: 固件编译
if: inputs.build == 'true'
runs-on: ubuntu-latest
env:
TEMP_PREFIX: temp
DEPLOYDIR: preset-openwrt
steps:
- name: 初始空间情况
run: |
df -h
- name: Checkout
uses: actions/checkout@v3
- name: 环境准备
run: |
sudo apt-get update
sudo apt-get -y install gcc-multilib gettext libncurses5-dev
sudo apt-get clean
pip3 install -r extra-files/requirements-transit.txt
- name: 读取配置
env:
MODEL_NAME: ${{ inputs.model }}
run: |
python3 extra-files/transit.py
- name: 下载源码与插件
env:
CLONE_SH: ${{ env.DEPLOYDIR }}/${{ env.TEMP_PREFIX }}.clone.sh
run: |
${{ inputs.switch_tag }} && \
sed -i '/SWITCH_TAG_FLAG=/ s/false/true/' $CLONE_SH
chmod +x $CLONE_SH
$CLONE_SH
- name: 升级feeds
run: |
./scripts/feeds update -a
./scripts/feeds install -a
- name: 修改配置
env:
MODIFY_SH: ${{ env.DEPLOYDIR }}/${{ env.TEMP_PREFIX }}.modify.sh
run: |
chmod +x $MODIFY_SH
$MODIFY_SH
${{ inputs.lan_ipad != '' }} && \
sed -i "/lan) ipad=/clan) ipad=\${ipaddr:-\"${{ inputs.lan_ipad }}\"} ;;" \
package/base-files/files/bin/config_generate
:
- name: 生成.config文件
env:
DOT_CONFIG: ${{ env.DEPLOYDIR }}/${{ env.TEMP_PREFIX }}.config
run: |
mv $DOT_CONFIG .config
make defconfig
- name: 下载编译资源
run: |
make download -j8 || make download -j1 V=s
- name: 编译
run: |
make -j$(nproc) || make -j1 V=s
- name: 整理固件目录
run: |
mkdir -p collected_firmware/packages
rm -rf $(find bin/targets/ -type d -name 'packages')
cp $(find bin/targets/ -type f) collected_firmware
cp $(find bin/packages/ -type f -name '*.ipk') collected_firmware/packages
cd collected_firmware
zip -r allfiles.zip *
cd packages
zip -r ../packages.zip *
- name: 读取release文本
id: release-text
if: inputs.release == true && env.RELEASE_FIRMWARE_VALUE != ''
env:
RELEASE_TEXT: ${{ env.DEPLOYDIR }}/${{ env.TEMP_PREFIX }}.release
RELEASE_FIRMWARE_VALUE: ${{ secrets.RELEASE_FIRMWARE }}
run: |
echo "RELEASE_TITLE=$(sed -n '1p' $RELEASE_TEXT)" >> $GITHUB_OUTPUT
echo 'RELEASE_BODY<<EOF' >> $GITHUB_OUTPUT
sed -n '2,$p' $RELEASE_TEXT >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: 计算tag版本
id: tag-version
if: steps.release-text.conclusion == 'success'
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.RELEASE_FIRMWARE }}
dry_run: true
- name: 上传固件到release
id: to-release
if: steps.release-text.conclusion == 'success'
continue-on-error: true
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.RELEASE_FIRMWARE }}
file: collected_firmware/*
tag: ${{ steps.tag-version.outputs.new_tag }}
release_name: ${{ steps.tag-version.outputs.new_version }} ${{ steps.release-text.outputs.RELEASE_TITLE }}
overwrite: true
prerelease: false
body: |
${{ steps.release-text.outputs.RELEASE_BODY }}
${{ inputs.record }}
file_glob: true
- name: 上传固件到artifact
if: inputs.artifact == true || steps.to-release.outcome != 'success'
uses: actions/upload-artifact@v3
with:
name: collected_firmware
path: |
collected_firmware/
!collected_firmware/*.zip
- name: 空间使用情况
run: |
df -h
echo "----------------------------"
du -h --max-depth=1