diff --git a/.github/workflows/B70-master.yml b/.github/workflows/B70-master.yml new file mode 100644 index 00000000..316e1cc6 --- /dev/null +++ b/.github/workflows/B70-master.yml @@ -0,0 +1,136 @@ +name: B70-master + +on: + repository_dispatch: + workflow_dispatch: + inputs: + ssh: + description: 'SSH connection to Actions' + required: false + default: 'false' + # schedule: + # - cron: 0 6 1/3 * * +# watch: +# types: started + +env: + OPENWRT_RELEASE_BRANCH: ImmortalWRT + REPO_URL: https://github.com/immortalwrt/immortalwrt.git + REPO_BRANCH: master + FEEDS_CONF: feeds.conf.default + CONFIG_FILE: config/B70-master.config + CUSTOM_SH: custom.sh + DVC_NAME: B70 + DVC_IP: 192.168.121.3 + UPLOAD_BIN_DIR: true + UPLOAD_FIRMWARE: true + UPLOAD_RELEASE: true + TZ: Asia/Shanghai + +jobs: + build: + runs-on: ubuntu-20.04 + + 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-2004) + sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential bzip2 ccache clang 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 lrzsz mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply python-docutils python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev + sudo -E apt-get -qq autoremove --purge + sudo -E apt-get -qq clean + sudo timedatectl set-timezone "Asia/Shanghai" + 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 & Install feeds + run: cd openwrt && ./scripts/feeds update -a && ./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 $CUSTOM_SH + cd openwrt + $GITHUB_WORKSPACE/$CUSTOM_SH $DVC_NAME $DVC_IP + + - name: SSH connection to Actions + uses: P3TERX/ssh2actions@v1.0.0 + if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') + + - 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 firmware + id: compile + run: | + cd openwrt + echo -e "$(nproc) thread compile" + make -j$(nproc) || make -j1 V=s + echo "::set-output name=status::success" + 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" + + - 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")-$OPENWRT_RELEASE_BRANCH-$REPO_BRANCH-$DVC_NAME" + touch release.txt + echo "::set-output name=status::success" + + - name: Upload firmware to release + uses: softprops/action-gh-release@v1 + if: steps.tag.outputs.status == 'success' && !cancelled() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.tag.outputs.release_tag }} + body_path: release.txt + files: ${{ env.FIRMWARE }}/* diff --git a/config/B70-master.config b/config/B70-master.config new file mode 100644 index 00000000..075c55bb --- /dev/null +++ b/config/B70-master.config @@ -0,0 +1,87 @@ +CONFIG_TARGET_ramips=y +CONFIG_TARGET_ramips_mt7621=y +CONFIG_TARGET_ramips_mt7621_DEVICE_hiwifi_hc5962=y +CONFIG_LUCI_LANG_zh_Hans=y +CONFIG_PACKAGE_automount=y +CONFIG_PACKAGE_block-mount=y +CONFIG_PACKAGE_cgi-io=y +CONFIG_PACKAGE_default-settings=y +CONFIG_PACKAGE_default-settings-chn=y +CONFIG_PACKAGE_e2fsprogs=y +CONFIG_PACKAGE_ip-tiny=y +CONFIG_PACKAGE_kmod-fs-exfat=y +CONFIG_PACKAGE_kmod-fs-ext4=y +CONFIG_PACKAGE_kmod-fs-ntfs3=y +CONFIG_PACKAGE_kmod-fs-vfat=y +CONFIG_PACKAGE_kmod-lib-crc16=y +CONFIG_PACKAGE_kmod-nls-cp437=y +CONFIG_PACKAGE_kmod-nls-iso8859-1=y +CONFIG_PACKAGE_kmod-nls-utf8=y +CONFIG_PACKAGE_kmod-scsi-core=y +CONFIG_PACKAGE_kmod-usb-storage=y +CONFIG_PACKAGE_kmod-usb-storage-extras=y +CONFIG_PACKAGE_libblkid=y +CONFIG_PACKAGE_libcap=y +CONFIG_PACKAGE_libcap-ng=y +CONFIG_PACKAGE_libcomerr=y +CONFIG_PACKAGE_libext2fs=y +CONFIG_PACKAGE_liblua=y +CONFIG_PACKAGE_liblucihttp=y +CONFIG_PACKAGE_liblucihttp-lua=y +CONFIG_PACKAGE_liblucihttp-ucode=y +CONFIG_PACKAGE_librt=y +CONFIG_PACKAGE_libss=y +CONFIG_PACKAGE_libubus-lua=y +CONFIG_PACKAGE_libuuid=y +CONFIG_PACKAGE_libuv=y +CONFIG_PACKAGE_libwebsockets-full=y +CONFIG_PACKAGE_lua=y +CONFIG_PACKAGE_luci=y +CONFIG_PACKAGE_luci-app-arpbind=y +CONFIG_PACKAGE_luci-app-firewall=y +CONFIG_PACKAGE_luci-app-nlbwmon=y +CONFIG_PACKAGE_luci-app-opkg=y +CONFIG_PACKAGE_luci-app-ttyd=y +CONFIG_PACKAGE_luci-app-upnp=y +CONFIG_PACKAGE_luci-app-wifischedule=y +CONFIG_PACKAGE_luci-base=y +CONFIG_PACKAGE_luci-compat=y +CONFIG_PACKAGE_luci-i18n-arpbind-zh-cn=y +CONFIG_PACKAGE_luci-i18n-base-zh-cn=y +CONFIG_PACKAGE_luci-i18n-firewall-zh-cn=y +CONFIG_PACKAGE_luci-i18n-nlbwmon-zh-cn=y +CONFIG_PACKAGE_luci-i18n-opkg-zh-cn=y +CONFIG_PACKAGE_luci-i18n-ttyd-zh-cn=y +CONFIG_PACKAGE_luci-i18n-upnp-zh-cn=y +CONFIG_PACKAGE_luci-i18n-wifischedule-zh-cn=y +CONFIG_PACKAGE_luci-lib-base=y +CONFIG_PACKAGE_luci-lib-ip=y +CONFIG_PACKAGE_luci-lib-jsonc=y +CONFIG_PACKAGE_luci-lib-nixio=y +CONFIG_PACKAGE_luci-light=y +CONFIG_PACKAGE_luci-lua-runtime=y +CONFIG_PACKAGE_luci-mod-admin-full=y +CONFIG_PACKAGE_luci-mod-network=y +CONFIG_PACKAGE_luci-mod-status=y +CONFIG_PACKAGE_luci-mod-system=y +CONFIG_PACKAGE_luci-proto-ipv6=y +CONFIG_PACKAGE_luci-proto-ppp=y +CONFIG_PACKAGE_luci-theme-argon=y +CONFIG_PACKAGE_luci-theme-bootstrap=y +CONFIG_PACKAGE_miniupnpd-nftables=y +CONFIG_PACKAGE_nlbwmon=y +CONFIG_PACKAGE_ntfs3-mount=y +CONFIG_PACKAGE_rpcd=y +CONFIG_PACKAGE_rpcd-mod-file=y +CONFIG_PACKAGE_rpcd-mod-iwinfo=y +CONFIG_PACKAGE_rpcd-mod-luci=y +CONFIG_PACKAGE_rpcd-mod-rrdns=y +CONFIG_PACKAGE_rpcd-mod-ucode=y +CONFIG_PACKAGE_ttyd=y +CONFIG_PACKAGE_ucode-mod-html=y +CONFIG_PACKAGE_ucode-mod-lua=y +CONFIG_PACKAGE_ucode-mod-math=y +CONFIG_PACKAGE_uhttpd=y +CONFIG_PACKAGE_uhttpd-mod-ubus=y +CONFIG_PACKAGE_wifischedule=y +CONFIG_PACKAGE_zlib=y