-
Notifications
You must be signed in to change notification settings - Fork 4
143 lines (122 loc) Β· 6.1 KB
/
build.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
name: Build and Release OpenClash Lite IPK
on:
push:
paths:
- 'Openclash dev/luci-app-openclash/Makefile'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Setup OpenWrt SDK
run: |
sudo apt update
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget tar -y
wget https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
tar xJf openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
mv openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64 openwrt-sdk
- name: Update and install feeds
run: |
cd openwrt-sdk
./scripts/feeds update -a
./scripts/feeds install -a
- name: Get Dev Version
id: get_dev_version
run: |
cd Openclash\ dev/luci-app-openclash
echo "dev_version=$(grep 'PKG_VERSION:=' Makefile | awk -F '=' '{print $2}' | tr -d ' ')" >> $GITHUB_OUTPUT
- name: Prepare Dev OpenClash
run: |
cd openwrt-sdk
mkdir -p package/luci-app-openclash
cp -R ../Openclash\ dev/luci-app-openclash/* package/luci-app-openclash/
- name: Compile po2lmo
run: |
cd openwrt-sdk/package/luci-app-openclash/tools/po2lmo
make && sudo make install
- name: Build Dev OpenClash
id: build_dev
run: |
cd openwrt-sdk && make defconfig
sed -i 's/CONFIG_LUCI_SRCDIET=y/# CONFIG_LUCI_SRCDIET is not set/' .config
sed -i 's/CONFIG_LUCI_JSMIN=y/# CONFIG_LUCI_JSMIN is not set/' .config
sed -i 's/CONFIG_LUCI_CSSTIDY=y/# CONFIG_LUCI_CSSTIDY is not set/' .config
sed -i 's/# CONFIG_NO_STRIP is not set/CONFIG_NO_STRIP=y/' .config
sed -i 's/CONFIG_USE_STRIP=y/# CONFIG_USE_STRIP is not set/' .config
sed -i 's/CONFIG_USE_SSTRIP=y/# CONFIG_USE_SSTRIP is not set/' .config
make package/luci-app-openclash/compile V=s -j$(nproc) || echo "BUILD_FAILED=true" >> $GITHUB_ENV
if [ "${{ env.BUILD_FAILED }}" != "true" ]; then
mv bin/packages/x86_64/base/luci-app-openclash*.ipk ../openclash-lite-beta-dev-${{ steps.get_dev_version.outputs.dev_version }}_all.ipk
fi
- name: Get Stable Version
id: get_stable_version
run: |
cd Openclash\ stable/luci-app-openclash
echo "stable_version=$(grep 'PKG_VERSION:=' Makefile | awk -F '=' '{print $2}' | tr -d ' ')" >> $GITHUB_OUTPUT
- name: Prepare Stable OpenClash
run: |
cd openwrt-sdk
make package/luci-app-openclash/clean V=s -j$(nproc)
rm -rf package/luci-app-openclash
mkdir -p package/luci-app-openclash
cp -R ../Openclash\ stable/luci-app-openclash/* package/luci-app-openclash/
- name: Build Stable OpenClash
id: build_stable
run: |
cd openwrt-sdk
make package/luci-app-openclash/compile V=s -j$(nproc) || echo "BUILD_FAILED=true" >> $GITHUB_ENV
if [ "${{ env.BUILD_FAILED }}" != "true" ]; then
mv bin/packages/x86_64/base/luci-app-openclash*.ipk ../openclash-lite-beta-stable-${{ steps.get_stable_version.outputs.stable_version }}_all.ipk
fi
- name: Check Existing Release
id: check_release
run: |
if [ -n "${{ steps.get_dev_version.outputs.dev_version }}" ]; then
dev_exists=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/${{ github.repository }}/releases/download/${{ steps.get_dev_version.outputs.dev_version }}/openclash-lite-beta-dev-${{ steps.get_dev_version.outputs.dev_version }}_all.ipk)
echo "dev_exists=${dev_exists}" >> $GITHUB_OUTPUT
else
echo "dev_exists=404" >> $GITHUB_OUTPUT
fi
if [ -n "${{ steps.get_stable_version.outputs.stable_version }}" ]; then
stable_exists=$(curl -s -o /dev/null -w "%{http_code}" https://github.com/${{ github.repository }}/releases/download/${{ steps.get_dev_version.outputs.dev_version }}/openclash-lite-beta-stable-${{ steps.get_stable_version.outputs.stable_version }}_all.ipk)
echo "stable_exists=${stable_exists}" >> $GITHUB_OUTPUT
else
echo "stable_exists=404" >> $GITHUB_OUTPUT
fi
- name: Create Release
if: env.BUILD_FAILED != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
release_date=$(date +'%y%m%d')
release_name="Openclash-Lite-${release_date}"
release_tag="${{ steps.get_dev_version.outputs.dev_version }}"
release_body="# π Openclash Lite for OpenWRT
## π¦ Release Versions
- π₯ Dev: \`${{ steps.get_dev_version.outputs.dev_version }}\`
- π‘οΈ Stable: \`${{ steps.get_stable_version.outputs.stable_version }}\`
## π₯ Downloads
- [π» Openclash Core](https://github.com/bobbyunknown/OpenClash-lite/tree/main/Openclash%20core)
- [π¦ Official Openclash IPK](https://github.com/bobbyunknown/OpenClash-lite/tree/main/Openclash%20official%20package)
---
> π Always ensure you're using the latest version for the best performance!
_Thank you for using Openclash Lite! π_"
gh release create "$release_tag" \
--title "$release_name" \
--notes "$release_body" \
--generate-notes=false
- name: Upload Dev IPK
if: env.BUILD_FAILED != 'true' && steps.check_release.outputs.dev_exists != '200'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ steps.get_dev_version.outputs.dev_version }} \
./openclash-lite-beta-dev-${{ steps.get_dev_version.outputs.dev_version }}_all.ipk
- name: Upload Stable IPK
if: env.BUILD_FAILED != 'true' && steps.check_release.outputs.stable_exists != '200'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload ${{ steps.get_dev_version.outputs.dev_version }} \
./openclash-lite-beta-stable-${{ steps.get_stable_version.outputs.stable_version }}_all.ipk