forked from redhandsome/N1Openwrt
-
Notifications
You must be signed in to change notification settings - Fork 0
166 lines (150 loc) · 5.58 KB
/
n1.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
#=================================================
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: P3TERX
# Blog: https://p3terx.com
#=================================================
name: N1
on:
repository_dispatch:
workflow_dispatch:
inputs:
days:
description: 'Number of days.'
required: true
default: 60
minimum_runs:
description: 'The minimum runs to keep for each workflow.'
required: true
default: 6
env:
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
CONFIG_FILE: ni.config
DIY_SH: diy.sh
UPLOAD_COWTRANSFER: true
TZ: Asia/Shanghai
RELEASE: true
DELETE_IPK: true
jobs:
build:
runs-on: ubuntu-18.04
if: github.event.repository.owner.id == github.event.sender.id
steps:
- name: Checkout
uses: actions/checkout@main
- name: Initialization Environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo -E apt-get -qq update
sudo -E apt-get -qq install $(curl -fsSL git.io/depends-ubuntu-1804) tree
sudo -E apt-get -qq autoremove --purge
sudo -E apt-get -qq clean
sudo timedatectl set-timezone "$TZ"
sudo mkdir -p /workdir
sudo chown $USER:$GROUPS /workdir
- name: Clone source code
working-directory: /workdir
run: |
df -hT $PWD
git clone $REPO_URL -b $REPO_BRANCH openwrt
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
- name: Update Feeds
run: |
cd openwrt
./scripts/feeds update -a
- name: Install Feeds
run: |
cd openwrt
./scripts/feeds install -a
- name: Load Custom Configuration
run: |
[ -e files ] && mv files openwrt/files
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config
chmod +x $DIY_SH
cd openwrt
$GITHUB_WORKSPACE/$DIY_SH
- name: Download Package
id: package
run: |
cd openwrt
make defconfig
make download -j8
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
- name: Compile Packages
id: compile
run: |
cd openwrt
echo -e "$(nproc) thread compile"
make tools/compile -j$(nproc) || make tools/compile -j1 V=s
make toolchain/compile -j$(nproc) || make toolchain/compile -j1 V=s
make target/compile -j$(nproc) || make target/compile -j1 V=s IGNORE_ERRORS=1
make diffconfig
make package/compile -j$(nproc) IGNORE_ERRORS=1 || make package/compile -j1 V=s IGNORE_ERRORS=1
make package/index
echo "::set-output name=status::success"
- name: Generate Firmware
if: steps.compile.outputs.status == 'success'
id: generate
run: |
cd openwrt
make package/install -j$(nproc) || make package/install -j1 V=s
make target/install -j$(nproc) || make target/install -j1 V=s
make checksum
grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV
echo "::set-output name=status::success"
echo "tag_name=$(date +%Y%m%d)" >> $GITHUB_ENV
- name: Remove files
if: steps.compile.outputs.status == 'success'
run: |
rm -rf openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-default.manifest
rm -rf openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-Image
rm -rf openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-Image-initramfs
rm -rf openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-root.squashfs.gz
rm -rf openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-rootfs.cpio.gz
cd openwrt/bin/targets/*/*
echo "FIRMWARE=$PWD" >> $GITHUB_ENV
- name: Delete IPK
if: env.DELETE_IPK == 'true' && !cancelled()
run: |
cd openwrt/bin/targets/*/*
rm -rf packages
- name: Create release
if: env.RELEASE == 'true' && !cancelled()
uses: ncipollo/release-action@v1
with:
name: ${{ env.DATE }} 🚀 / N1-Openwrt | 编译
allowUpdates: true
tag: ${{ env.tag_name }}
commit: master
token: ${{ secrets.RELEASES_TOKEN }}
body: |
当前使用版本:(编译前的最后一次源码更新记录)
artifacts: "${{ env.FIRMWARE }}/*.tar.gz,${{ env.FIRMWARE }}/*.tar.xz"
- name: Upload firmware to cowtransfer
id: cowtransfer
if: steps.compile.outputs.status == 'success' && env.UPLOAD_COWTRANSFER == 'true' && !cancelled()
run: |
curl -fsSL git.io/file-transfer | sh
./transfer cow --block 2621440 -s -p 64 --no-progress ${FIRMWARE} 2>&1 | tee cowtransfer.log
echo "::warning file=cowtransfer.com::$(cat cowtransfer.log | grep https)"
echo "::set-output name=url::$(cat cowtransfer.log | grep https | cut -f3 -d" ")"
- name: Delete workflow runs
uses: GitRML/delete-workflow-runs@main
with:
repository: ${{ github.repository }}
retain_days: ${{ github.event.inputs.days }}
keep_minimum_runs: ${{ github.event.inputs.minimum_runs }}
- name: Remove old Releases
uses: dev-drprasad/[email protected]
if: env.RELEASE == 'true' && !cancelled()
with:
keep_latest: 3
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASES_TOKEN }}