Lean #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Lean | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: 00 17 * * * | |
watch: | |
types: started | |
env: | |
CLASH_KERNEL: amd64 | |
UPLOAD_FIRMWARE: true | |
UPLOAD_BIN_DIR: false | |
UPLOAD_ARTIFACT: true | |
UPLOAD_RELEASE: true | |
TZ: Asia/Shanghai | |
jobs: | |
merge: | |
runs-on: Ubuntu-22.04 | |
if: github.event.repository.owner.id == github.event.sender.id | |
name: Build ${{matrix.target}} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [Lean] | |
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 /opt/hostedtoolcache/CodeQL | |
sudo docker image prune --all --force | |
sudo -E apt-get -qq update | |
sudo -E apt-get -qq install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ | |
bzip2 ccache clang cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ | |
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \ | |
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \ | |
libssl-dev libtool llvm lrzsz mkisofs genisoimage msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \ | |
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \ | |
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev rename | |
sudo -E apt-get -qq autoremove --purge | |
sudo -E apt-get -qq clean | |
sudo timedatectl set-timezone "$TZ" | |
- name: Get current date | |
id: date | |
run: | | |
echo "date=$(date +'%Y.%m.%d-%H%M')" >> $GITHUB_ENV | |
echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV | |
echo "date3=$(date +'%m.%d')" >> $GITHUB_ENV | |
echo "DOCKERTAG=${{ secrets.DOCKER_ID }}/openwrt-6p:latest" >> $GITHUB_ENV | |
VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true | |
[ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV | |
- name: Clone source code | |
env: | |
REPO_URL: https://github.com/coolsnowwolf/lede | |
REPO_BRANCH: master | |
run: | | |
git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt | |
cd openwrt | |
sed -i '$a src-git smpackage https://github.com/richaradlee/small-package' feeds.conf.default | |
- name: Free up disk space | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo mkdir -p -m 777 /mnt/openwrt/dl /mnt/openwrt/bin /mnt/openwrt/staging_dir | |
ln -sf /mnt/openwrt/dl openwrt/dl | |
ln -sf /mnt/openwrt/bin openwrt/bin | |
ln -sf /mnt/openwrt/staging_dir openwrt/staging_dir | |
- name: Update feeds | |
working-directory: ./openwrt | |
run: | | |
sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default | |
sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default | |
git clone https://github.com/gdy666/luci-app-lucky.git package/lucky | |
git clone https://github.com/kingyond/luci-app-accesscontrol-plus.git package/accesscontrol-plus | |
./scripts/feeds update -a | |
- name: Defconfig ${{matrix.target}} | |
env: | |
CONFIG_FILE: '${{matrix.target}}.config' | |
run: | | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
chmod +x ./customize.sh && ./customize.sh | |
cd openwrt | |
rm -rf feeds/packages/lang/golang | |
git clone https://github.com/kenzok8/golang feeds/packages/lang/golang | |
cp -f feeds/smpackage/.github/diy/default-settings package/lean/default-settings/files/zzz-default-settings | |
cp -f feeds/smpackage/.github/diy/banner package/base-files/files/etc/banner | |
#cp -f feeds/smpackage/.github/diy/index_x86.htm package/lean/autocore/files/x86/index.htm | |
sed -i "s/%D %V, %C/openwrt $(date +'%m.%d') by Richard/g" package/base-files/files/etc/banner | |
sed -i 's/luci-theme-bootstrap/luci-theme-argon/g' feeds/luci/collections/luci/Makefile | |
./scripts/feeds update -a | |
sed -i 's#GO_PKG_TARGET_VARS.*# #g' feeds/packages/utils/v2dat/Makefile | |
./scripts/feeds install -a | |
cp -f feeds/smpackage/.github/diy/${{matrix.target}}.config .config && make defconfig | |
sed -i 's/CONFIG_BINUTILS_VERSION="2.42"/CONFIG_BINUTILS_VERSION="2.43.1"/' .config | |
- name: Download package | |
working-directory: ./openwrt | |
run: | | |
make download -j$(($(nproc)+1)) | |
find dl -size -1024c -exec rm -f {} \; | |
- name: Cache | |
uses: stupidloud/cachewrtbuild@main | |
with: | |
ccache: 'true' | |
mixkey: ${{ matrix.target }} | |
clean: ${{ contains(github.event.action, 'nocache') }} | |
prefix: ${{ github.workspace }}/openwrt | |
- name: Check space usage | |
run: | | |
shopt -s extglob | |
cd openwrt | |
if [[ -f staging_dir/*${{ env.MTARGET }}*/bin ]]; then | |
rm -rf staging_dir/!(*${{ env.MTARGET }}*|host|hostpkg) build_dir/!(*${{ env.MTARGET }}*|host|hostpkg) | |
fi | |
df -hT | |
- name: Compile the firmware | |
working-directory: ./openwrt | |
run: | | |
echo -e "$(($(nproc)+1)) thread compile" | |
make -j$(($(nproc)+1)) || make -j1 V=s | |
- name: Upload bin directory | |
uses: actions/upload-artifact@main | |
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' | |
with: | |
name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
path: openwrt/bin | |
- name: Organize files | |
id: organize | |
if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() | |
run: | | |
mkdir firmware | |
mv -f openwrt/bin/targets/*/*/{*combined*,*sysupgrade*} ./firmware/ 2>/dev/null || true | |
#cp openwrt/.config ./firmware/${{matrix.target}}.config | |
#cp openwrt/build_dir/target-*/linux-*/linux-*/.config ./firmware/${{matrix.target}}_kernel.config | |
cd firmware | |
echo "v${{ env.date2 }}" > version.txt | |
md5=$((md5sum *squashfs-sysupgrade* || md5sum *squashfs-combined-efi*) | awk '{print $1}') 2>/dev/null | |
echo $md5 >> version.txt | |
rename -v "s/^openwrt/${{ env.VERSION }}-openwrt/" * || true | |
rename -v "s/friendlyarm_//" *gz || true | |
echo $md5 >> version.txt | |
echo ${{matrix.target}} >> version.txt | |
#rm -rf sha256sums | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
#- name: Upload Firmware To Artifact | |
# if: steps.compile.conclusion == 'success' && env.UPLOAD_ARTIFACT == 'true' | |
# uses: actions/upload-artifact@main | |
# with: | |
# name: ${{ env.date2 }} ${{matrix.target}} | |
# path: ${{ env.FIRMWARE }} | |
#- name : Upload artifact | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: ${{ env.date2 }} ${{matrix.target}} | |
# path: ./bin/targets/ | |
- name: Generate release tag | |
id: tag | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
echo -e " -- π -- π» -- β½ -- π -- π -- π -- " >> release.txt | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload firmware to release | |
uses: softprops/action-gh-release@v2 | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
env: | |
GITHUB_TOKEN: ${{ secrets.SEARIY_TOKEN }} | |
with: | |
files: "firmware/*" | |
name: ${{ env.date2 }} ${{matrix.target}} | |
tag_name: ${{ env.date }}_${{matrix.target}} | |
body_path: release.txt | |
- name: Delete workflow runs | |
uses: Mattraks/delete-workflow-runs@main | |
with: | |
retain_days: 1 | |
keep_minimum_runs: 0 | |
- name: Remove Source Code from Release | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
gh release view "${{ env.date }}_${{ matrix.target }}" --json assets -q '.assets[].name' | grep -E 'Source code' | while read -r asset; do | |
gh release delete-asset "${{ env.date }}_${{ matrix.target }}" "$asset" | |
done | |
env: | |
GITHUB_TOKEN: ${{ secrets.SEARIY_TOKEN }} | |
- name: Remove old Releases | |
uses: dev-drprasad/delete-older-releases@master | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
with: | |
keep_latest: 6 | |
delete_tags: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.SEARIY_TOKEN }} |