name: friendlywrt on: repository_dispatch: push: branches: - master paths: - '.github/workflows/friendlywrt.yml' - 'minimal_config.seed' - '*.sh' schedule: - cron: '0 17 * * *' jobs: build: runs-on: ubuntu-latest env: GITHUB_TOKEN: ${{ secrets.sec_token }} sec_token: ${{ secrets.sec_token }} steps: - name: Checkout uses: actions/checkout@master with: ref: master fetch-depth: 0 token: ${{ env.sec_token }} - name: Init Env env: DEBIAN_FRONTEND: noninteractive run: | . init_env.sh - name: Repo Hash run: | ./set_repo_hash.sh Builder - name: Friendlywrt Source run: | . friendlywrt_source.sh - name: Change Feeds to Lean run: | cd friendlywrt-rk3328 git clone https://github.com/coolsnowwolf/lede cd lede ../../set_repo_hash.sh Lean cd ../friendlywrt cp -r ../lede/package/lean package/ sed -i 's/^src-git luci.*/src-git luci https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default sed -i 's/^src-git packages.*/src-git packages https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default ../../set_repo_hash.sh LeanLuci https://github.com/coolsnowwolf/luci.git ../../set_repo_hash.sh LeanPackage https://github.com/coolsnowwolf/packages.git - name: Add Packages to Lean run: | . add_packages_to_lean.sh - name: Install Openwrt Libs run: | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" cd friendlywrt-rk3328 git clone https://github.com/openwrt/openwrt cd openwrt git revert --no-edit d27623b542548b765ddd46b046169006a3b5f66f cd .. rm -rf friendlywrt/package/libs cp -r openwrt/package/libs friendlywrt/package/ - name: Install Openwrt octeontx patches run: | cd friendlywrt-rk3328 cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/ ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4 - name: Change Log id: changelog run: | git config --global user.email "action@github.com" && git config --global user.name "GitHub Action" ./changelog.sh FriendlyWRT - name: Update Feeds if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328/friendlywrt ./scripts/feeds update -a ./scripts/feeds install -a - name: Install Mods if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328 sed -i '/Load Average/i\\t\t<%:CPU Temperature%><%=luci.sys.exec("cut -c1-2 /sys/class/thermal/thermal_zone0/temp")%> ℃' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm sed -i 's/<%=luci.sys.exec("cat \/etc\/bench.log") or " "%>//' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by scw' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update - name: Add Temperature to Netdata if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328 mkdir -p friendlywrt/package/base-files/files/usr/lib/netdata/charts.d cp ../scripts/temp.chart.sh friendlywrt/package/base-files/files/usr/lib/netdata/charts.d/ echo "sed -i 's/charts.d = no/charts.d = yes/' /etc/netdata/netdata.conf" >> friendlywrt/package/base-files/files/root/setup.sh echo "cp /usr/lib/netdata/conf.d/charts.d.conf /etc/netdata/" >> friendlywrt/package/base-files/files/root/setup.sh echo "echo 'temp=yes' >> /etc/netdata/charts.d.conf" >> friendlywrt/package/base-files/files/root/setup.sh echo "/etc/init.d/netdata restart" >> friendlywrt/package/base-files/files/root/setup.sh - name: Download Clash Binary if: steps.changelog.outputs.changelog != '' run: | CLASH_VERSION=v0.19.0 mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz gunzip clash.gz chmod +x clash cd ../.. mkdir -p etc/clash cd etc/clash wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb - name: Install UPX if: steps.changelog.outputs.changelog != '' run: | mkdir -p friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/ ln -s /usr/bin/upx-ucl friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/upx - name: Update Target.mk if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328/friendlywrt/include sed -i 's/dnsmasq /dnsmasq-full default-settings luci /' target.mk - name: Build Config if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328 cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config cat ../minimal_config.seed >> ../rk3328.config cat ../rk3328.config > configs/config_rk3328 cat configs/config_rk3328 - name: Clean src if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328 rm -rf lede rm -rf openwrt - name: Build Friendlywrt if: steps.changelog.outputs.changelog != '' run: | cd friendlywrt-rk3328 sed -i 's/set -eu/set -u/' scripts/mk-friendlywrt.sh ./build.sh nanopi_r2s.mk # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87 - name: Fix FriendlyWrt rootfs owner and group if: steps.changelog.outputs.changelog != '' run: | sudo df -lh lodev=$(sudo losetup -f) echo "found unused loop dev $lodev" sudo losetup -o 100663296 $lodev friendlywrt-rk3328/out/*.img sudo rm -rf /mnt/friendlywrt-tmp sudo mkdir -p /mnt/friendlywrt-tmp sudo mount $lodev /mnt/friendlywrt-tmp sudo chown -R root:root /mnt/friendlywrt-tmp sudo umount /mnt/friendlywrt-tmp sudo losetup -d $lodev - name: Zip Files if: steps.changelog.outputs.changelog != '' run: | gzip friendlywrt-rk3328/out/*.img - name: Assemble Artifact if: steps.changelog.outputs.changelog != '' id: assemble_artifact run: | rm -rf ./artifact/ mkdir -p ./artifact/ cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../ mv friendlywrt-rk3328/out/*img* ./artifact/ cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/ cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/ cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/ zip -r artifact.zip -j artifact artifact/* release_tag=${{ steps.changelog.outputs.buildtag }} echo "##[set-output name=release_tag;]$release_tag" - name: Create Release if: steps.changelog.outputs.changelog != '' id: create_release uses: actions/create-release@v1 with: tag_name: ${{ steps.assemble_artifact.outputs.release_tag }} release_name: ${{ steps.assemble_artifact.outputs.release_tag }} body: ${{ steps.changelog.outputs.changelog }} draft: false prerelease: false - name: Upload Release Asset if: steps.changelog.outputs.changelog != '' id: upload-release-asset uses: actions/upload-release-asset@v1 with: upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./artifact.zip asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip asset_content_type: application/zip - name: Push Change Log if: steps.changelog.outputs.changelog != '' run: | git pull --rebase --autostash git push