-
Notifications
You must be signed in to change notification settings - Fork 0
170 lines (150 loc) · 5.41 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
name: Build OpenWrt
on:
repository_dispatch:
workflow_dispatch:
inputs:
openwrt_kernel:
description: "Select Kernel Version"
required: false
default: "5.15.1_6.1.1"
type: choice
options:
- 5.4.1
- 5.10.1
- 5.15.1
- 6.1.1
- 5.4.1_5.10.1
- 5.15.1_6.1.1
env:
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
TAGS_NAME: lede
STORAGE: save
BOARD: s905d
FEEDS_CONF: feeds.conf.default
CONFIG_FILE: .config
DIY_P1_SH: diy-part1.sh
DIY_P2_SH: diy-part2.sh
TZ: Asia/Shanghai
jobs:
build:
runs-on: ubuntu-22.04
if: ${{ github.event.repository.owner.id }} == ${{ github.event.sender.id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Initialization Environment
id: init
env:
DEBIAN_FRONTEND: noninteractive
run: |
docker rmi `docker images -q`
[[ -n "${AGENT_TOOLSDIRECTORY}" ]] && sudo rm -rf "${AGENT_TOOLSDIRECTORY}"
sudo rm -rf /usr/share/dotnet /etc/apt/sources.list.d /usr/local/lib/android 2>/dev/null
sudo -E apt-get -y update
sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true
sudo -E apt-get -y install $(curl -fsSL https://is.gd/depend_ubuntu2204_openwrt)
sudo -E systemctl daemon-reload
#sudo -E apt-get -y full-upgrade
sudo -E apt-get -y autoremove --purge
sudo -E apt-get clean
sudo mkdir -p /workdir
sudo chown ${USER}:${GROUPS} /workdir
sudo timedatectl set-timezone "${TZ}"
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Clone Source Code
id: codes
working-directory: /workdir
if: ${{ steps.init.outputs.status }} == 'success' && !cancelled()
run: |
git clone ${REPO_URL} -b ${REPO_BRANCH} openwrt
ln -sf /workdir/openwrt ${GITHUB_WORKSPACE}/openwrt
df -hT ${PWD}
echo "build_tag=OpenWrt_${TAGS_NAME}_${STORAGE}_$(date +"%Y.%m")" >> ${GITHUB_OUTPUT}
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Cache
uses: klever1988/cachewrtbuild@main
with:
ccache: true
mixkey: ${{ env.BOARD }}
prefix: ${{ github.workspace }}/openwrt
- name: Load Custom Feeds
run: |
[[ -f ${FEEDS_CONF} ]] && cp -f ${FEEDS_CONF} openwrt/feeds.conf.default
chmod +x ${DIY_P1_SH}
cd openwrt/
${GITHUB_WORKSPACE}/${DIY_P1_SH}
- 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: |
[[ -d files ]] && mv files openwrt/files
[[ -f ${CONFIG_FILE} ]] && cp -f ${CONFIG_FILE} openwrt/.config
chmod +x ${DIY_P2_SH}
cd openwrt/
${GITHUB_WORKSPACE}/${DIY_P2_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 the OpenWrt
id: compile
run: |
cd openwrt/
echo -e "$(nproc) thread compile"
make -j$(nproc) || make -j1 || make -j1 V=s
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Clean Server Space
id: clean
if: ${{ steps.compile.outputs.status }} == 'success' && !cancelled()
run: |
cd openwrt/
mkdir output
cp -f bin/targets/*/*/*rootfs.tar.gz output/
cp -f .config output/config
rm -rf $(ls . | grep -v -E "^(output|tools|toolchain)$" | xargs) 2>/dev/null
cd output/
for file in *; do [[ ! -d "${file}" ]] && sha256sum "${file}" > "${file}.sha"; done
df -hT ${PWD}
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Upload OpenWrt to Release
uses: ncipollo/release-action@main
if: ${{ steps.clean.outputs.status }} == 'success' && !cancelled()
with:
tag: ${{ steps.codes.outputs.build_tag }}
artifacts: openwrt/output/*
allowUpdates: true
removeArtifacts: false
replacesArtifacts: true
token: ${{ secrets.GH_TOKEN }}
- name: Package OpenWrt
uses: unifreq/openwrt_packit@master
if: ${{ steps.clean.outputs.status }} == 'success' && !cancelled()
env:
OPENWRT_ARMVIRT: openwrt/output/*rootfs.tar.gz
KERNEL_VERSION_NAME: ${{ inputs.openwrt_kernel }}
PACKAGE_SOC: ${{ env.BOARD }}
WHOAMI: lsilencej
- name: Upload the Packaged OpenWrt
uses: ncipollo/release-action@main
if: ${{ env.PACKAGED_STATUS }} == 'success' && !cancelled()
with:
tag: ${{ steps.codes.outputs.build_tag }}
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
removeArtifacts: false
replacesArtifacts: true
token: ${{ secrets.GH_TOKEN }}
body: |
### OpenWrt Image information
- Default IP: 192.168.1.1
- Default username: root
- Default password: password
### OpenWrt Image Verification
- sha256sum