├── .github
└── workflows
│ └── 360T7.yml
├── LICENSE
├── README.md
├── Shell
├── FileName.sh
├── REVISECONFIG.sh
├── diy-immortalwrt.sh
├── diy2-360T7-hanwckf.sh
├── diy2-360T7-padavanonly.sh
├── diy2-360T7.sh
└── diy3-360T7-hanwckf.sh
├── config
├── ImmortalWrt.config
├── hanwckf.config
├── padavanonly.config
└── platform.config
├── python
└── lzy.py
└── rclone.zip
/.github/workflows/360T7.yml:
--------------------------------------------------------------------------------
1 | name: build 360T7 Images
2 |
3 | env:
4 | TZ: Asia/Shanghai
5 | DOWNLOAD: 8
6 | NPROC: 0
7 | Vanilla: true
8 | ENVIRONMENT: true
9 | FAST: true
10 | SSH: tru
11 | VanillaUboot: tru
12 | PLUGINver: true
13 | Release: true
14 | LanzhouYun: true
15 | OneDrive: true
16 |
17 | on:
18 | workflow_dispatch:
19 | inputs:
20 | INPUT_TARGET:
21 | description: "Target to build (platform/target/subtarget)"
22 | required: false
23 | default: "all"
24 | push:
25 | paths:
26 | - '.github/workflows/360T7.yml'
27 | schedule:
28 | - cron: '0 4 * * 5'
29 |
30 | jobs:
31 | Config:
32 | name: Generate Config
33 | permissions: write-all
34 | runs-on: ubuntu-latest
35 | outputs:
36 | TARGETS: ${{ steps.find-targets.outputs.TARGETS }}
37 |
38 | steps:
39 | - name: Checkout
40 | uses: actions/checkout@main
41 |
42 | - name: SSH
43 | if: env.SSH == 'true'
44 | uses: appleboy/ssh-action@master
45 | with:
46 | host: ${{ secrets.HOST }}
47 | username: ${{ secrets.USERNAME }}
48 | password: ${{ secrets.PASSWORD }}
49 | port: ${{ secrets.PORT }}
50 | script: whoami
51 |
52 | - name: Find Targets
53 | id: find-targets
54 | env:
55 | INPUT_TARGET: ${{ github.event.inputs.INPUT_TARGET }}
56 | run: |
57 | if [ "$INPUT_TARGET" = "all" ] || [ "$INPUT_TARGET" = "" ]; then
58 | export TARGETS="$(cat config/platform.config)"
59 | else
60 | export TARGETS="$INPUT_TARGET"
61 | fi
62 | echo -e "\033[31m INPUT_TARGET=${INPUT_TARGETT} \033[0m"
63 | echo -e "\033[31m TARGETS=${INPUT_TARGET} \033[0m"
64 | echo -e "\033[31m INPUT_TARGET: \033[0m $INPUT_TARGET"
65 | echo -e "\033[31m TARGETS: $TARGETS \033[0m"
66 |
67 | JSON='{"config": ["default"], "targets":['
68 | FIRST=1
69 | for TARGET in $TARGETS; do
70 | echo -e "\033[31m FIRST: $FIRST \033[0m"
71 | [[ $FIRST -ne 1 ]] && JSON="$JSON"','
72 | echo -e "\033[31m JSON1: $JSON \033[0m"
73 | JSON="$JSON"'"'"${TARGET}"'"'
74 | echo -e "\033[31m JSON2: $JSON \033[0m"
75 | FIRST=0
76 | done
77 | JSON="$JSON"']}'
78 | echo $JSON
79 | echo "::set-output name=TARGETS::$JSON"
80 |
81 | Mulit-Images:
82 | name: ${{ matrix.TARGETS }}
83 | needs: [Config]
84 | permissions: write-all
85 | runs-on: ubuntu-latest
86 | strategy:
87 | fail-fast: false
88 | matrix: ${{fromJson(needs.Config.outputs.TARGETS)}}
89 |
90 | steps:
91 | - name: Checkout
92 | uses: actions/checkout@main
93 |
94 | - name: Generate Variables
95 | id: env
96 | run: |
97 | export SERIAL=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $1}')
98 | echo "SERIAL=$SERIAL" >> $GITHUB_ENV
99 | export NAME=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $2}')
100 | echo "NAME=$NAME" >> $GITHUB_ENV
101 | export CONFIG_FILE=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $2}')".config"
102 | echo "CONFIG_FILE=$CONFIG_FILE" >> $GITHUB_ENV
103 | REPO_URL='https://github.com/'$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $3}')
104 | echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV
105 | export REPO_BRANCH=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $4}')
106 | echo "REPO_BRANCH=$REPO_BRANCH" >> $GITHUB_ENV
107 | export DIY_P1_SH=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $5}' )
108 | echo "DIY_P1_SH=$DIY_P1_SH" >> $GITHUB_ENV
109 | export DIY_P2_SH=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $6}' )
110 | echo "DIY_P2_SH=$DIY_P2_SH" >> $GITHUB_ENV
111 | export DIY_P3_SH=$(echo ${{ matrix.TARGETS }} | awk -F ',' '{print $7}')
112 | echo "DIY_P3_SH=$DIY_P3_SH" >> $GITHUB_ENV
113 |
114 | echo -e "\033[31m SERIAL: $SERIAL \033[0m"
115 | echo -e "\033[31m NAME: $NAME \033[0m"
116 | echo -e "\033[31m CONFIG_FILE: $CONFIG_FILE \033[0m"
117 | echo -e "\033[31m REPO_URL: $REPO_URL \033[0m"
118 | echo -e "\033[31m REPO_BRANCH: $REPO_BRANCH \033[0m"
119 | echo -e "\033[31m DIY_P1_SH: $DIY_P1_SH \033[0m"
120 | echo -e "\033[31m DIY_P2_SH: $DIY_P2_SH \033[0m"
121 | echo -e "\033[31m DIY_P3_SH: $DIY_P3_SH \033[0m"
122 |
123 | echo "matrix.TARGETS: ${{ matrix.TARGETS }}"
124 |
125 | - name: 1.Mount onedrive
126 | if: env.OneDrive == 'true' || env.LanzhouYun == 'true'
127 | run: |
128 | curl -s https://rclone.org/install.sh | sudo bash
129 | sudo -E apt-get -qq install unzip
130 | mkdir -p ~/.config/rclone/
131 | unzip -P ${{ secrets.PASSWD_rclone }} rclone.zip -d ~/.config/rclone/
132 | sudo mkdir /onedrive5g
133 | sudo chown -R $USER:$GROUPS /onedrive5g
134 | rclone mount one:/ /onedrive5g --daemon --copy-links --no-gzip-encoding --no-check-certificate
135 | df -h
136 |
137 | - name: 1.File Name
138 | run: |
139 | chmod +x Shell/FileName.sh
140 | bash Shell/FileName.sh $GITHUB_ENV
141 | echo "NUM: $NUM"
142 |
143 | - name: 1.DIY_P3_SH
144 | run: |
145 | if [ -f Shell/$DIY_P3_SH ];then cd Shell
146 | chmod +x $DIY_P3_SH ; chmod +x REVISECONFIG.sh
147 | cp $GITHUB_WORKSPACE/config/$CONFIG_FILE .
148 | mv $CONFIG_FILE .config
149 | ./$DIY_P3_SH
150 | mv .config $GITHUB_WORKSPACE/config/$CONFIG_FILE
151 | cat $GITHUB_WORKSPACE/config/$CONFIG_FILE
152 | fi
153 |
154 | - name: Initialization Environment
155 | if: env.ENVIRONMENT == 'true' && env.FAST != 'true'
156 | env:
157 | DEBIAN_FRONTEND: noninteractive
158 | run: |
159 | sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
160 | sudo -E apt-get -qq update
161 | sudo -E apt-get -qq install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib \
162 | gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget qemu-utils
163 | sudo -E apt-get -qq autoremove --purge
164 | sudo -E apt-get -qq clean
165 | sudo timedatectl set-timezone "$TZ"
166 | sudo mkdir -p /workdir
167 | sudo chown $USER:$GROUPS /workdir
168 |
169 | - name: Clone source code
170 | run: |
171 | df -hT $PWD
172 | git clone $REPO_URL -b $REPO_BRANCH openwrt
173 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
174 |
175 | - name: Load custom feeds
176 | run: |
177 | chmod +x Shell/$DIY_P1_SH
178 | cd openwrt
179 | echo '---------------------------------------------------------------'
180 | $GITHUB_WORKSPACE/Shell/$DIY_P1_SH
181 |
182 | - name: Update feeds
183 | run: cd openwrt && ./scripts/feeds update -a
184 |
185 | - name: Install feeds
186 | run: cd openwrt && ./scripts/feeds install -a
187 |
188 | - name: 1.Load custom configuration
189 | run: |
190 | [ -e config/$CONFIG_FILE ] && cp config/$CONFIG_FILE openwrt/
191 | sudo mkdir -p /workdir
192 | sudo chown $USER:$GROUPS /workdir
193 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
194 | chmod +x Shell/$DIY_P2_SH
195 | chmod +x Shell/REVISECONFIG.sh && cp Shell/REVISECONFIG.sh openwrt/
196 | cd openwrt
197 | mv $CONFIG_FILE .config
198 | $GITHUB_WORKSPACE/Shell/$DIY_P2_SH
199 | cat .config
200 |
201 | - name: FAST Initialization Environment
202 | working-directory: /workdir
203 | if: env.ENVIRONMENT == 'true' && env.FAST == 'true'
204 | env:
205 | DEBIAN_FRONTEND: noninteractive
206 | run: |
207 | sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
208 | sudo -E apt-get -qq update
209 | sudo -E apt-get -qq install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib \
210 | gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget qemu-utils
211 | sudo -E apt-get -qq autoremove --purge
212 | sudo -E apt-get -qq clean
213 | sudo timedatectl set-timezone "$TZ"
214 |
215 | - name: Download package_1
216 | id: package_1
217 | run: |
218 | cd openwrt && make defconfig && make download -j$DOWNLOAD
219 | find dl -size -1024c -exec ls -l {} \;
220 | find dl -size -1024c -exec rm -f {} \;
221 |
222 | - name: 1.Compile
223 | id: compile_1
224 | run: |
225 | cd openwrt
226 | echo -e "$(nproc) thread compile"
227 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
228 |
229 | - name: 1.Compile failure
230 | if: ${{ failure() }}
231 | id: Compile_failure_1
232 | run: |
233 | cd openwrt && make -j1 V=99
234 |
235 | - name: 1.Check space usage
236 | if: (!cancelled())
237 | run: df -hT
238 |
239 | - name : 1.Upload BIN
240 | uses: actions/upload-artifact@master
241 | with:
242 | name: ${{ env.BIN }}
243 | path: openwrt/bin/
244 | if-no-files-found: warn
245 |
246 | - name: 1.Upload factory
247 | uses: actions/upload-artifact@master
248 | with:
249 | name: ${{ env.FACTORY }}
250 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
251 | if-no-files-found: ignore
252 |
253 | - name: 1.Upload sysupgrade
254 | uses: actions/upload-artifact@master
255 | with:
256 | name: ${{ env.SYSUPGRADE }}
257 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
258 | if-no-files-found: ignore
259 |
260 | - name: 1.tar
261 | run: |
262 | mkdir RELEASE
263 | tar zcvf RELEASE/$BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
264 | tar zcvf RELEASE/$FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
265 | tar zcvf RELEASE/$SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
266 |
267 | #-----------------------------------------------------------------------
268 | - name: 0. build Vanilla Uboot
269 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
270 | run: |
271 | rm -rf openwrt/bin openwrt/.config
272 | cp config/$CONFIG_FILE openwrt/
273 | cd openwrt
274 | mv $CONFIG_FILE .config
275 | echo "修改前"
276 | cat .config
277 |
278 | - name: 0.修改后config
279 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
280 | run: |
281 | cd openwrt && ./REVISECONFIG.sh $NAME
282 | echo "修改后"
283 | cat .config
284 |
285 | - name: 0.Download package
286 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
287 | id: package0
288 | run: |
289 | cd openwrt && rm -rf tmp
290 | make defconfig && make download -j$DOWNLOAD
291 | find dl -size -1024c -exec ls -l {} \;
292 | find dl -size -1024c -exec rm -f {} \;
293 |
294 | - name: 0.Compile
295 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
296 | id: compile_0
297 | run: |
298 | cd openwrt
299 | echo -e "$(nproc) thread compile"
300 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
301 |
302 | - name: 0.Compile failure
303 | if: env.VanillaUboot == 'true' && env.PLUGINver == 'true' && failure()
304 | id: Compile_failure_0
305 | run: |
306 | cd openwrt && make -j1 V=99
307 |
308 |
309 | - name : 0.Upload Vanilla BIN stock(非108M 原厂Uboot)
310 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
311 | uses: actions/upload-artifact@master
312 | with:
313 | name: ${{ env.VanillaBIN }}
314 | path: openwrt/bin/
315 | if-no-files-found: warn
316 |
317 | - name : 0.Upload Vanilla factory(非108M 原厂Uboot)
318 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
319 | uses: actions/upload-artifact@master
320 | with:
321 | name: ${{ env.VanillaFACTORY }}
322 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
323 | if-no-files-found: ignore
324 |
325 | - name : 0.Upload Vanilla sysupgrade(非108M 原厂Uboot)
326 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
327 | uses: actions/upload-artifact@master
328 | with:
329 | name: ${{ env.VanillaSYSUPGRADE }}
330 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
331 | if-no-files-found: ignore
332 |
333 | - name: 0.tar
334 | if: env.VanillaUboot == 'true' && !failure() && !cancelled()
335 | run: |
336 | tar zcvf RELEASE/$VanillaBIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
337 | tar zcvf RELEASE/$VanillaFACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
338 | tar zcvf RELEASE/$VanillaSYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
339 |
340 | #-----------------------------------------------------------------------
341 | - name: 2. 108M ttyd filetransfer
342 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
343 | run: |
344 | rm -rf openwrt/bin openwrt/.config
345 | cp config/$CONFIG_FILE openwrt/
346 | cd openwrt && mv $CONFIG_FILE .config
347 | echo "修改前"
348 | cat .config
349 |
350 | - name: 2.修改后config
351 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
352 | run: |
353 | cd openwrt
354 | ./REVISECONFIG.sh ttyd filetransfer
355 | echo "修改后"
356 | cat .config
357 |
358 | - name: 2.Download package
359 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
360 | id: package2
361 | run: |
362 | cd openwrt && rm -rf tmp
363 | make defconfig && make download -j$DOWNLOAD
364 | find dl -size -1024c -exec ls -l {} \;
365 | find dl -size -1024c -exec rm -f {} \;
366 |
367 | - name: 2.Compile
368 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
369 | id: compile_2
370 | run: |
371 | cd openwrt
372 | echo -e "$(nproc) thread compile"
373 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
374 |
375 | - name: 2.Compile failure
376 | if: env.PLUGINver == 'true' && failure()
377 | id: Compile_failure_2
378 | run: |
379 | cd openwrt && make -j1 V=99
380 |
381 |
382 | - name : 2.Upload Vanilla BIN
383 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
384 | uses: actions/upload-artifact@master
385 | with:
386 | name: ${{ env.mini_BIN }}
387 | path: openwrt/bin/
388 | if-no-files-found: warn
389 |
390 | - name : 2.Upload factory
391 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
392 | uses: actions/upload-artifact@master
393 | with:
394 | name: ${{ env.mini_FACTORY }}
395 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
396 | if-no-files-found: ignore
397 |
398 | - name : 2.Upload sysupgrade
399 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
400 | uses: actions/upload-artifact@master
401 | with:
402 | name: ${{ env.mini_SYSUPGRADE }}
403 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
404 | if-no-files-found: ignore
405 |
406 | - name: 2.tar
407 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
408 | run: |
409 | tar zcvf RELEASE/$mini_BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
410 | tar zcvf RELEASE/$mini_FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
411 | tar zcvf RELEASE/$mini_SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
412 |
413 | #-----------------------------------------------------------------------
414 | - name: 3.108M ssrplus
415 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
416 | run: |
417 | rm -rf openwrt/bin openwrt/.config
418 | cp config/$CONFIG_FILE openwrt/
419 | cd openwrt && mv $CONFIG_FILE .config
420 | echo "修改前"
421 | cat .config
422 |
423 | - name: 3.修改后config
424 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
425 | run: |
426 | cd openwrt
427 | ./REVISECONFIG.sh ttyd filetransfer ssr-plus
428 | cat .config
429 |
430 | - name: 3.Download package
431 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
432 | id: package_3
433 | run: |
434 | cd openwrt && rm -rf tmp
435 | make defconfig && make download -j$DOWNLOAD
436 | find dl -size -1024c -exec ls -l {} \;
437 | find dl -size -1024c -exec rm -f {} \;
438 |
439 | - name: 3.Compile
440 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
441 | id: compile_3
442 | run: |
443 | cd openwrt
444 | echo -e "$(nproc) thread compile"
445 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
446 |
447 | - name: 3.Compile failure
448 | if: env.PLUGINver == 'true' && failure()
449 | id: Compile_failure_3
450 | run: |
451 | cd openwrt && make -j1 V=99
452 |
453 |
454 | - name : 3.Upload Vanilla BIN
455 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
456 | uses: actions/upload-artifact@master
457 | with:
458 | name: ${{ env.ssrplus_BIN }}
459 | path: openwrt/bin/
460 | if-no-files-found: warn
461 |
462 | - name : 3.Upload factory
463 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
464 | uses: actions/upload-artifact@master
465 | with:
466 | name: ${{ env.ssrplus_FACTORY }}
467 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
468 | if-no-files-found: ignore
469 |
470 | - name : 3.Upload sysupgrade
471 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
472 | uses: actions/upload-artifact@master
473 | with:
474 | name: ${{ env.ssrplus_SYSUPGRADE }}
475 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
476 | if-no-files-found: ignore
477 |
478 | - name: 3.tar
479 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
480 | run: |
481 | tar zcvf RELEASE/$ssrplus_BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
482 | tar zcvf RELEASE/$ssrplus_FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
483 | tar zcvf RELEASE/$ssrplus_SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
484 |
485 | #-----------------------------------------------------------------------
486 | - name: 4.108M passwall
487 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
488 | run: |
489 | rm -rf openwrt/bin openwrt/.config
490 | cp config/$CONFIG_FILE openwrt/
491 | cd openwrt && mv $CONFIG_FILE .config
492 | echo "修改前"
493 | cat .config
494 |
495 | - name: 4.修改后config
496 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
497 | run: |
498 | cd openwrt
499 | ./REVISECONFIG.sh ttyd filetransfer passwall
500 | cat .config
501 |
502 | - name: 4.Download package
503 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
504 | id: package_4
505 | run: |
506 | cd openwrt && rm -rf tmp
507 | make defconfig && make download -j$DOWNLOAD
508 | find dl -size -1024c -exec ls -l {} \;
509 | find dl -size -1024c -exec rm -f {} \;
510 |
511 | - name: 4.Compile
512 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
513 | id: compile_4
514 | run: |
515 | cd openwrt
516 | echo -e "$(nproc) thread compile"
517 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
518 |
519 | - name: 4.Compile failure
520 | if: env.PLUGINver == 'true' && failure()
521 | id: Compile_failure_4
522 | run: |
523 | cd openwrt && make -j1 V=99
524 |
525 |
526 | - name : 4.Upload Vanilla BIN
527 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
528 | uses: actions/upload-artifact@master
529 | with:
530 | name: ${{ env.passwall_BIN }}
531 | path: openwrt/bin/
532 | if-no-files-found: warn
533 |
534 | - name : 4.Upload factory
535 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
536 | uses: actions/upload-artifact@master
537 | with:
538 | name: ${{ env.passwall_FACTORY }}
539 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
540 | if-no-files-found: ignore
541 |
542 | - name : 4.Upload sysupgrade
543 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
544 | uses: actions/upload-artifact@master
545 | with:
546 | name: ${{ env.passwall_SYSUPGRADE }}
547 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
548 | if-no-files-found: ignore
549 |
550 | - name: 4.tar
551 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
552 | run: |
553 | tar zcvf RELEASE/$passwall_BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
554 | tar zcvf RELEASE/$passwall_FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
555 | tar zcvf RELEASE/$passwall_SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
556 |
557 | #-----------------------------------------------------------------------
558 | - name: 5.108M openclash
559 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
560 | run: |
561 | rm -rf openwrt/bin openwrt/.config
562 | cp config/$CONFIG_FILE openwrt/
563 | cd openwrt && mv $CONFIG_FILE .config
564 | echo "修改前"
565 | cat .config
566 |
567 | - name: 5.修改后config
568 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
569 | run: |
570 | cd openwrt
571 | ./REVISECONFIG.sh ttyd filetransfer openclash
572 | cat .config
573 |
574 | - name: 5.Download package
575 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
576 | id: package_5
577 | run: |
578 | cd openwrt && rm -rf tmp
579 | make defconfig && make download -j$DOWNLOAD
580 | find dl -size -1024c -exec ls -l {} \;
581 | find dl -size -1024c -exec rm -f {} \;
582 |
583 | - name: 5.Compile
584 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
585 | id: compile_5
586 | run: |
587 | cd openwrt
588 | echo -e "$(nproc) thread compile"
589 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
590 |
591 | - name: 5.Compile failure
592 | if: env.PLUGINver == 'true' && failure()
593 | id: Compile_failure_5
594 | run: |
595 | cd openwrt && make -j1 V=99
596 |
597 |
598 | - name : 5.Upload Vanilla BIN
599 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
600 | uses: actions/upload-artifact@master
601 | with:
602 | name: ${{ env.openclash_BIN }}
603 | path: openwrt/bin/
604 | if-no-files-found: warn
605 |
606 | - name : 5.Upload factory
607 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
608 | uses: actions/upload-artifact@master
609 | with:
610 | name: ${{ env.openclash_FACTORY }}
611 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
612 | if-no-files-found: ignore
613 |
614 | - name : 5.Upload sysupgrade
615 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
616 | uses: actions/upload-artifact@master
617 | with:
618 | name: ${{ env.openclash_SYSUPGRADE }}
619 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
620 | if-no-files-found: ignore
621 |
622 | - name: 5.tar
623 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
624 | run: |
625 | tar zcvf RELEASE/$openclash_BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
626 | tar zcvf RELEASE/$openclash_FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
627 | tar zcvf RELEASE/$openclash_SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
628 |
629 | #-----------------------------------------------------------------------
630 | - name: 6.108M openclash ssrplus passwall
631 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
632 | run: |
633 | rm -rf openwrt/bin openwrt/.config
634 | cp config/$CONFIG_FILE openwrt/
635 | cd openwrt && mv $CONFIG_FILE .config
636 | echo "修改前"
637 | cat .config
638 |
639 | - name: 6.修改后config
640 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
641 | run: |
642 | cd openwrt
643 | ./REVISECONFIG.sh ttyd filetransfer openclash ssr-plus passwall
644 | cat .config
645 |
646 | - name: 6.Download package
647 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
648 | id: package_6
649 | run: |
650 | cd openwrt && rm -rf tmp
651 | make defconfig && make download -j$DOWNLOAD
652 | find dl -size -1024c -exec ls -l {} \;
653 | find dl -size -1024c -exec rm -f {} \;
654 |
655 | - name: 6.Compile
656 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
657 | id: compile_6
658 | run: |
659 | cd openwrt
660 | echo -e "$(nproc) thread compile"
661 | [[ $NPROC -eq 0 ]] && make -j$(nproc) || make -j$NPROC
662 |
663 | - name: 6.Compile failure
664 | if: env.PLUGINver == 'true' && failure()
665 | id: Compile_failure_6
666 | run: |
667 | cd openwrt && make -j1 V=99
668 |
669 | - name : 6.Upload Vanilla BIN
670 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
671 | uses: actions/upload-artifact@master
672 | with:
673 | name: ${{ env.openclash_ssrplus_passwall_BIN }}
674 | path: openwrt/bin/
675 | if-no-files-found: warn
676 |
677 | - name : 6.Upload factory
678 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
679 | uses: actions/upload-artifact@master
680 | with:
681 | name: ${{ env.openclash_ssrplus_passwall_FACTORY }}
682 | path: openwrt/bin/targets/*/*/*squashfs-factory.bin
683 | if-no-files-found: ignore
684 |
685 | - name : 6.Upload sysupgrade
686 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
687 | uses: actions/upload-artifact@master
688 | with:
689 | name: ${{ env.openclash_ssrplus_passwall_SYSUPGRADE }}
690 | path: openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin
691 | if-no-files-found: ignore
692 |
693 | - name: 6.tar
694 | if: env.PLUGINver == 'true' && !failure() && !cancelled()
695 | run: |
696 | tar zcvf RELEASE/$openclash_ssrplus_passwall_BIN.tar.gz --exclude=openwrt/bin/targets/*/*/*squashfs-factory.bin --exclude=openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin openwrt/bin/ || echo "$NAME is no directory BIN"
697 | tar zcvf RELEASE/$openclash_ssrplus_passwall_FACTORY.tar.gz openwrt/bin/targets/*/*/*squashfs-factory.bin || echo "$NAME is no factory.bin"
698 | tar zcvf RELEASE/$openclash_ssrplus_passwall_SYSUPGRADE.tar.gz openwrt/bin/targets/*/*/*squashfs-sysupgrade.bin || echo "ERROR: $NAME is no sysupgrade"
699 |
700 | #-----------------------------------------------------------------------
701 | - name: 0.OneDrive Try
702 | id: UPload1
703 | if: env.OneDrive == 'true' && !failure() && !cancelled()
704 | run: |
705 | times=0
706 | while true;do up_status=`cat /onedrive5g/log/log.txt` || up_status=1
707 | if [[ $up_status != 0 ]];then echo "log is not 0, The OneDrive is being used " ; echo 'sleep 2m...' ; sleep 2m; times=$(($times+1))
708 | if [[ $times -ge 10 ]];then echo "超过30分钟" ; echo "0" > /onedrive5g/log/log.txt ; fi
709 | else echo "up_status = $up_status"; echo "1" > /onedrive5g/log/log.txt ; break ; fi ; done
710 | echo "::set-output name=status::success"
711 |
712 | - name: 0.UPload1 start OneDrive
713 | id: UPload1_start
714 | if: env.OneDrive == 'true' && steps.UPload1.outputs.status == 'success' && !failure() && !cancelled()
715 | run: |
716 | logname=$(date +"%Y.%m.%d_%H.%M")
717 | cp /onedrive5g/log/360T7_backup.log .
718 | rclone copy -P --transfers=4 --ignore-errors --log-file=new.log -v RELEASE/ one:360T7/ && echo '上传成功'
719 | cat new.log 360T7_backup.log > /onedrive5g/log/360T7_backup.log
720 | up_status=`cat /onedrive5g/log/log.txt`
721 | echo "up_status: $up_status"
722 | echo "0" > /onedrive5g/log/log.txt
723 | echo "up_status: $up_status"
724 |
725 | - name: 0.UPload Over
726 | if: env.OneDrive == 'true' && steps.UPload1_start.outputs.status == 'success' && failure()
727 | run: |
728 | echo "0" > /onedrive5g/log/log.txt
729 | up_status=`cat /onedrive5g/log/log.txt`
730 | echo "up_status: $up_status"
731 |
732 | - name: 1.Generate release tag1 latest
733 | if: env.Release == 'true' && !failure() && !cancelled()
734 | id: tag1
735 | run: |
736 | echo "::set-output name=release_tag1::latest"
737 | touch release.txt
738 | echo "🔗 [Cowtransfer] " >> release.txt
739 | echo "::set-output name=status::success"
740 |
741 | - name: 1.Upload firmware to release
742 | uses: softprops/action-gh-release@v1
743 | if: steps.tag1.outputs.status == 'success' && !cancelled() && env.Release == 'true'
744 | env:
745 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
746 | with:
747 | tag_name: ${{ steps.tag1.outputs.release_tag1 }}
748 | body_path: release.txt
749 | files: |
750 | RELEASE/*
751 |
752 | - name: 2.LZY Environment
753 | id: LZY_start
754 | if: env.LanzhouYun == 'true' && !failure() && !cancelled()
755 | run: |
756 | git clone https://github.com/weigefenxiang/LanZouCloud-API && cd LanZouCloud-API
757 | sudo pip install -U pip
758 | sudo pip install -r requirements.txt
759 | sudo python3 setup.py install
760 | sudo apt install rename
761 | cd $GITHUB_WORKSPACE/RELEASE
762 | export RELEASE_dir=`pwd`
763 | echo "RELEASE_dir=$RELEASE_dir" >> $GITHUB_ENV
764 | rename "s/openclash/猫/" *
765 | rename "s/ssrplus/师夷/" *
766 | rename "s/passwall/pa斯沃/" *
767 | rename "s/-360T7//" *
768 | sudo mv *BIN.tar.gz /tmp/
769 | echo "::set-output name=status::success"
770 |
771 | - name: 2.UPload LanzhouYun
772 | id: LZY_UPload
773 | if: env.LanzhouYun == 'true' && !failure() && !cancelled()
774 | run: |
775 | times=0
776 | while true;do LZYstatus=`cat /onedrive5g/log/Lanzhou_log.txt` || echo "LZYstatus 获取失败"
777 | if [[ $LZYstatus == 0 ]];then echo "LZY 暂未被开启" && echo "LZYstatus: $LZYstatus" ; LZYstatus=$(($LZYstatus+1)) ; echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt
778 | python3 python/lzy.py ${{ secrets.LZ_YLOGIN }} ${{ secrets.LZ_PHPDISK }} \
779 | 'HISTORY' 'latest' $RELEASE_dir 0
780 | LZYstatus=$(($LZYstatus+1)) ; echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt ;
781 | break
782 | elif [[ $(($LZYstatus%2)) == 0 ]];then echo "LZY 已开启,直接上传" && echo "LZYstatus: $LZYstatus" ; LZYstatus=$(($LZYstatus+1)) ; echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt ;
783 | python3 python/lzy.py ${{ secrets.LZ_YLOGIN }} ${{ secrets.LZ_PHPDISK }} \
784 | 'HISTORY' 'latest' $RELEASE_dir 1
785 | LZYstatus=$(($LZYstatus+1)) ;
786 | if [[ $LZYstatus == 6 ]];then echo 0 > /onedrive5g/log/Lanzhou_log.txt && echo -e "LZYstatus:$LZYstatus 成功初始化\nLanzhou_log=0" ; else echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt ; fi
787 | break
788 | elif [[ $(($LZYstatus%2)) == 1 ]];then echo "LZY is being used " && echo "LZYstatus: $LZYstatus" ; echo 'sleep 20s...' ; sleep 20s ; times=$(($times+1))
789 | if [[ $times -ge 20 ]];then echo "超时 400s" ; LZYstatus=$(($LZYstatus+1)) ; echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt ; fi
790 | else echo "LZYstatus 获取失败" ; echo "sleep 20s" ; sleep 20s
791 | fi ; done
792 | export LZYstatus=$LZYstatus
793 | echo "LZYstatus=$LZYstatus" >> $GITHUB_ENV
794 | echo "::set-output name=status::success"
795 |
796 | - name: 2.蓝奏云同步成功
797 | if: env.LanzhouYun == 'true' && steps.LZY_UPload.outputs.status == 'success'
798 | run: |
799 | echo "蓝奏云同步成功"
800 |
801 | - name: 2.LanzhouYun failer
802 | if: env.LanzhouYun == 'true' && steps.LZY_start.outputs.status == 'success' && failure()
803 | run: |
804 | if [ $LZYstatus -ge 4 ];then echo 0 > /onedrive5g/log/Lanzhou_log.txt ;
805 | elif [[ $(($LZYstatus%2)) == 1 ]];then LZYstatus=$(($LZYstatus+1)) ; echo $LZYstatus > /onedrive5g/log/Lanzhou_log.txt ;
806 | else echo "LZYstatus:$LZYstatus 正常退出" ; fi
807 |
808 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 @weigefenxiang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## 鸣谢
4 |
5 | weigefenxiang/360T7 (本项目基于此项目):
6 |
7 | [SuLingGG/OpenWrt-Docker](https://github.com/SuLingGG/OpenWrt-Docker)
8 |
9 | [P3TERX/Actions-OpenWrt](https://github.com/P3TERX/Actions-OpenWrt)
10 |
11 | [zaxtyson/LanZouCloud-API](https://github.com/zaxtyson/LanZouCloud-API)
12 |
--------------------------------------------------------------------------------
/Shell/FileName.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Copyright (c) 2023 @weigefenxiang
4 | #
5 |
6 | NUM=0
7 | GITHUB_ENV=$1
8 | #1.0 stock(非108M 原厂Uboot)
9 | export VanillaFILENAME=$SERIAL'.'$NUM'-360T7-'$NAME
10 | export VanillaBIN=$VanillaFILENAME'-BIN'
11 | export VanillaFACTORY=$VanillaFILENAME'-factory'
12 | export VanillaSYSUPGRADE=$VanillaFILENAME'-sysupgrade'
13 |
14 | echo "VanillaBIN=$VanillaBIN" >> $GITHUB_ENV
15 | echo "VanillaFACTORY=$VanillaFACTORY" >> $GITHUB_ENV
16 | echo "VanillaSYSUPGRADE=$VanillaSYSUPGRADE" >> $GITHUB_ENV
17 |
18 | export NUM=$((NUM+1))
19 |
20 | #1.1 108M
21 | export FILENAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME
22 | export BIN=$FILENAME'-BIN'
23 | export FACTORY=$FILENAME'-factory'
24 | export SYSUPGRADE=$FILENAME'-sysupgrade'
25 |
26 | #echo "FILENAME=$FILENAME" >> $GITHUB_ENV
27 | echo "BIN=$BIN" >> $GITHUB_ENV
28 | echo "FACTORY=$FACTORY" >> $GITHUB_ENV
29 | echo "SYSUPGRADE=$SYSUPGRADE" >> $GITHUB_ENV
30 | export NUM=$((NUM+1))
31 |
32 | #1.2 ttyd+filetransfer
33 | export mini_NAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME'-mini'
34 | export mini_BIN=$mini_NAME'-BIN'
35 | export mini_FACTORY=$mini_NAME'-factory'
36 | export mini_SYSUPGRADE=$mini_NAME'-sysupgrade'
37 |
38 | # echo "mini_NAME=${mini_NAME}" >> $GITHUB_ENV
39 | echo "mini_BIN=${mini_BIN}" >> $GITHUB_ENV
40 | echo "mini_FACTORY=${mini_FACTORY}" >> $GITHUB_ENV
41 | echo "mini_SYSUPGRADE=${mini_SYSUPGRADE}" >> $GITHUB_ENV
42 | export NUM=$((NUM+1))
43 |
44 | #1.3 ssrplus
45 | export ssrplus_NAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME'-ssrplus'
46 | export ssrplus_BIN=$ssrplus_NAME'-BIN'
47 | export ssrplus_FACTORY=$ssrplus_NAME'-factory'
48 | export ssrplus_SYSUPGRADE=$ssrplus_NAME'-sysupgrade'
49 |
50 | echo "ssrplus_BIN=${ssrplus_BIN}" >> $GITHUB_ENV
51 | echo "ssrplus_FACTORY=${ssrplus_FACTORY}" >> $GITHUB_ENV
52 | echo "ssrplus_SYSUPGRADE=${ssrplus_SYSUPGRADE}" >> $GITHUB_ENV
53 | export NUM=$((NUM+1))
54 |
55 | #1.4 passwall
56 | export passwall_NAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME'-passwall'
57 | export passwall_BIN=$passwall_NAME'-BIN'
58 | export passwall_FACTORY=$passwall_NAME'-factory'
59 | export passwall_SYSUPGRADE=$passwall_NAME'-sysupgrade'
60 |
61 | echo "passwall_BIN=${passwall_BIN}" >> $GITHUB_ENV
62 | echo "passwall_FACTORY=${passwall_FACTORY}" >> $GITHUB_ENV
63 | echo "passwall_SYSUPGRADE=${passwall_SYSUPGRADE}" >> $GITHUB_ENV
64 | export NUM=$((NUM+1))
65 |
66 | #1.5 openclash
67 | export openclash_NAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME'-openclash'
68 | export openclash_BIN=$openclash_NAME'-BIN'
69 | export openclash_FACTORY=$openclash_NAME'-factory'
70 | export openclash_SYSUPGRADE=$openclash_NAME'-sysupgrade'
71 |
72 | echo "openclash_BIN=${openclash_BIN}" >> $GITHUB_ENV
73 | echo "openclash_FACTORY=${openclash_FACTORY}" >> $GITHUB_ENV
74 | echo "openclash_SYSUPGRADE=${openclash_SYSUPGRADE}" >> $GITHUB_ENV
75 | export NUM=$((NUM+1))
76 |
77 | #1.6 openclash_ssrplus_passwall
78 | export openclash_ssrplus_passwall_NAME=$SERIAL'.'$NUM'-360T7-108M-'$NAME'-openclash-ssrplus-passwall'
79 | export openclash_ssrplus_passwall_BIN=$openclash_ssrplus_passwall_NAME'-BIN'
80 | export openclash_ssrplus_passwall_FACTORY=$openclash_ssrplus_passwall_NAME'-factory'
81 | export openclash_ssrplus_passwall_SYSUPGRADE=$openclash_ssrplus_passwall_NAME'-sysupgrade'
82 |
83 | echo "openclash_ssrplus_passwall_BIN=${openclash_ssrplus_passwall_BIN}" >> $GITHUB_ENV
84 | echo "openclash_ssrplus_passwall_FACTORY=${openclash_ssrplus_passwall_FACTORY}" >> $GITHUB_ENV
85 | echo "openclash_ssrplus_passwall_SYSUPGRADE=${openclash_ssrplus_passwall_SYSUPGRADE}" >> $GITHUB_ENV
86 | export NUM=$((NUM+1))
87 |
88 | echo "FILENAME: $FILENAME"
89 | echo "BIN: $BIN"
90 | echo "FACTORY: $FACTORY"
91 | echo "SYSUPGRADE: $SYSUPGRADE"
92 | echo "VanillaFILENAME: $VanillaFILENAME"
93 | echo "VanillaBIN: $VanillaBIN"
94 | echo "VanillaFACTORY: $VanillaFACTORY"
95 | echo "VanillaSYSUPGRADE: $VanillaSYSUPGRADE"
96 |
97 | echo "NUM=$NUM" >> $GITHUB_ENV
98 | export GITHUB_ENV
99 |
--------------------------------------------------------------------------------
/Shell/REVISECONFIG.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Copyright (c) 2023 @weigefenxiang
4 | #
5 |
6 | ###
7 | ### Usage:
8 | ### speedpower