Source Code Update #142
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
# | |
# Copyright (c) 2019-2020 P3TERX <https://p3terx.com> | |
# | |
# This is free software, licensed under the MIT License. | |
# See /LICENSE for more information. | |
# | |
# https://github.com/P3TERX/Actions-OpenWrt | |
# Description: Build OpenWrt using GitHub Actions | |
# | |
name: Immortalwrt-master | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
inputs: | |
ssh: | |
description: 'SSH connection to Actions' | |
required: false | |
default: 'false' | |
env: | |
REPO_URL: https://github.com/immortalwrt/immortalwrt | |
REPO_BRANCH: master | |
# REPO_URL: https://github.com/coolsnowwolf/lede | |
# REPO_BRANCH: master | |
FEEDS_CONF: feeds.conf.default | |
CONFIG_FILE: immortalwrt.x86.config | |
DIY_P1_SH: immortalwrt-1.sh | |
DIY_P2_SH: immortalwrt-2.sh | |
UPLOAD_BIN_DIR: false | |
UPLOAD_FIRMWARE: true | |
UPLOAD_COWTRANSFER: false | |
UPLOAD_WETRANSFER: false | |
UPLOAD_RELEASE: true | |
TZ: Asia/Shanghai | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@main | |
- name: Show system | |
run: | | |
lscpu | |
free -h | |
df -Th | |
uname -a | |
- name: Free Space | |
run: | | |
sudo docker image prune -a -f | |
sudo systemctl stop docker | |
sudo apt-get -y purge firefox clang* ghc* google* llvm* mono* mongo* mysql* php* | |
sudo apt-get -y autoremove --purge | |
sudo apt-get clean | |
rm -rf ~/{.cargo,.dotnet,.rustup} | |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc | |
- name: Install | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo sh -c 'echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" >> /etc/apt/sources.list' | |
sudo sh -c 'echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" >> /etc/apt/sources.list' | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
sudo -E apt-get -qq update | |
sudo -E apt-get -qq install $(curl -fsSL git.io/depends-ubuntu-2004) | |
sudo apt update -y | |
sudo apt full-upgrade -y | |
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ | |
bzip2 ccache clang-13 cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \ | |
g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \ | |
libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 \ | |
libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lld llvm-13 lrzsz mkisofs msmtp \ | |
nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \ | |
python3-docutils python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig \ | |
texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd | |
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 | |
working-directory: /workdir | |
run: | | |
df -hT $PWD | |
git clone $REPO_URL -b $REPO_BRANCH openwrt | |
# cd openwrt | |
# git reset --hard 695bf40a48 # 能稳定吃鹅 ImmortalWrt 23.05.0 r27285-695bf40a48 / LuCI openwrt-23.05 branch git-23.313.50115-e3df634 | |
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt | |
- name: Run Script 1 | |
run: | | |
[ -e $FEEDS_CONF ] && mv $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: Run Script 2 | |
run: | | |
[ -e files ] && mv files openwrt/files | |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
chmod +x $DIY_P2_SH | |
cd openwrt | |
$GITHUB_WORKSPACE/$DIY_P2_SH | |
- name: Show .config | |
run: | | |
[ -e openwrt/.config ] && cat openwrt/.config | |
# - name: Cache | |
# uses: HiGarfield/cachewrtbuild@main | |
# with: | |
#是否一并缓存.ccache目录,如果你启用了ccache。这是唯一的常用参数,其他三个用于除错,一般不需要调整 | |
# ccache: false | |
#是否缓存工具链目录 | |
# toolchain: true | |
#是否跳过工具链编译 | |
# skip: true | |
#清空缓存 | |
# clean: false | |
# prefix: ${{ github.workspace }}/openwrt | |
# mixkey: 'immortalwrt-master-x86_64' | |
- name: Download | |
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 | |
id: compile | |
run: | | |
cd openwrt | |
echo -e "$(($(nproc)+1)) thread compile" | |
#make -j$(nproc) || make -j1 || make -j1 V=s | |
make -j$(($(nproc)+1)) || make -j$(nproc) || make -j1 V=s | |
# echo "::set-output name=status::success" | |
echo "status=success" >> $GITHUB_OUTPUT | |
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 "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV | |
- name: Check space usage | |
if: (!cancelled()) | |
run: df -hT | |
- 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: | | |
cd openwrt/bin/targets/*/* | |
rm -rf packages | |
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
# echo "::set-output name=status::success" | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload firmware directory | |
uses: actions/upload-artifact@main | |
if: steps.organize.outputs.status == 'success' && !cancelled() | |
with: | |
name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
path: ${{ env.FIRMWARE }} | |
- name: Generate release tag | |
id: tag | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
run: | | |
# echo "::set-output name=release_tag::$(date +"%Y.%m.%d-%H%M")" | |
echo "release_tag=$(date +"Immortalwrt-master-%Y.%m.%d-%H%M")" >> $GITHUB_OUTPUT | |
touch release.txt | |
[ $UPLOAD_COWTRANSFER = true ] && echo "🔗 [Cowtransfer](${{ steps.cowtransfer.outputs.url }})" >> release.txt | |
[ $UPLOAD_WETRANSFER = true ] && echo "🔗 [WeTransfer](${{ steps.wetransfer.outputs.url }})" >> release.txt | |
# echo "::set-output name=status::success" | |
echo "status=success" >> $GITHUB_OUTPUT | |
- name: Upload firmware to release | |
uses: softprops/action-gh-release@v1 | |
if: steps.tag.outputs.status == 'success' && !cancelled() | |
env: | |
GITHUB_TOKEN: ${{ secrets.ACTIONS_TRIGGER_PAT }} | |
with: | |
tag_name: ${{ steps.tag.outputs.release_tag }} | |
body_path: release.txt | |
files: ${{ env.FIRMWARE }}/* | |
- name: Delete workflow runs | |
uses: GitRML/delete-workflow-runs@main | |
with: | |
token: ${{ secrets.ACTIONS_TRIGGER_PAT }} | |
retain_days: 1 | |
keep_minimum_runs: 7 | |
- name: Remove old Releases | |
uses: dev-drprasad/delete-older-releases@v0.1.0 | |
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
with: | |
keep_latest: 7 | |
delete_tags: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.ACTIONS_TRIGGER_PAT }} |