diff --git a/.github/workflows/RaspberryPi3-OpenWrt.yml b/.github/workflows/RaspberryPi3-OpenWrt.yml new file mode 100644 index 0000000000..9269a5aa98 --- /dev/null +++ b/.github/workflows/RaspberryPi3-OpenWrt.yml @@ -0,0 +1,146 @@ +#=============================================== +# Description: Build OpenWrt +# File name: build-openwrt.yml +# Lisence: MIT +# Author: P3TERX +# https://github.com/P3TERX +#=============================================== + +name: RaspberryPi3 OpenWrt + +on: + repository_dispatch: + workflow_dispatch: + schedule: + - cron: '10 15 * * *' + +env: + REPO_URL: https://github.com/coolsnowwolf/lede + REPO_BRANCH: master + CONFIG_FILE: configs/rpi3.config + EXTRA_CONFIG: configs/extra.config + DIY_SCRIPT: diy-script.sh + UPLOAD_BIN_DIR: false + UPLOAD_FIRMWARE: false + UPLOAD_RELEASE: true + FILE_NAME: RaspberryPi3 + TZ: Asia/Shanghai + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@main + + - name: Initialization environment + env: + DEBIAN_FRONTEND: noninteractive + run: | + docker rmi $(docker images -q) + sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /etc/mysql /etc/php /usr/local/lib/android /opt/ghc + sudo -E apt-get -y purge azure-cli ghc* zulu* hhvm llvm* firefox google* dotnet* powershell openjdk* adoptopenjdk* mysql* php* mongodb* dotnet* moby* snapd* || true + sudo -E apt-get -qq update + sudo -E apt-get -qq install $(curl -fsSL https://is.gd/depends_ubuntu_2204) + 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 + df -Th + + - 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 + cd openwrt + useVersionInfo=$(git show -s --date=short --format="Author: %an
date: %cd
commit: %s
commit hash: %H") + echo "useVersionInfo=$useVersionInfo" >> $GITHUB_ENV + + - name: Update feeds + run: cd openwrt && ./scripts/feeds update -a + + - name: Install feeds + run: cd openwrt && ./scripts/feeds install -a + + - name: Load custom configuration + run: | + [ -e files ] && mv files openwrt/files + [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config + cat $EXTRA_CONFIG >> openwrt/.config + chmod +x $DIY_SCRIPT + cd openwrt + $GITHUB_WORKSPACE/$DIY_SCRIPT + + - 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 || 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 "DATE=$(date +"%Y-%m-%d %H:%M:%S")" >> $GITHUB_ENV + echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV + + - name: Check space usage + if: (!cancelled()) + run: df -Th + + - 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: steps.compile.outputs.status == 'success' && !cancelled() + run: | + cp openwrt/.config build.config + mkdir -p Packages + mv -f openwrt/bin/packages/*/*/*.ipk Packages + mv -f openwrt/bin/targets/*/*/packages/*.ipk Packages + tar -zcvf Packages.tar.gz Packages + mv *.config *.tar.gz openwrt/bin/targets/*/* + cd openwrt/bin/targets/*/* + rm -rf packages feeds.buildinfo sha256sums version.buildinfo + 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' && env.UPLOAD_FIRMWARE == 'true' && !cancelled() + with: + name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} + path: ${{ env.FIRMWARE }} + + - name: Upload firmware to release + uses: ncipollo/release-action@v1 + if: steps.organize.outputs.status == 'success' && env.UPLOAD_RELEASE == 'true' && !cancelled() + with: + name: R${{ env.DATE }} for ${{ env.FILE_NAME }} + artifacts: ${{ env.FIRMWARE }}/* + allowUpdates: true + tag: ${{ env.FILE_NAME }} + token: ${{ secrets.GITHUB_TOKEN }} + body: | + **This is OpenWrt firmware for RaspberryPi3B/3B+** + * 这是 RaspberryPi3B/3B+ 使用的 OpenWrt 固件 + 默认 IP:192.168.1.1 默认密码:password + 当前使用版本:【编译前的最后一次[➦主源码](https://github.com/coolsnowwolf/lede)更新记录】 + ${{ env.useVersionInfo }} diff --git a/README.md b/README.md index ef93ed8947..dcd614d308 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ | [![](https://img.shields.io/badge/OpenWrt-NanoPi_R4S-32C955.svg?logo=openwrt)](https://github.com/haiibo/OpenWrt/blob/main/.github/workflows/Rockchip-OpenWrt.yml) | [![](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml/badge.svg)](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml) | [![](https://img.shields.io/badge/编译-配置-orange.svg?logo=apache-spark)](https://github.com/haiibo/OpenWrt/blob/main/configs/rockchip.config) | [![](https://img.shields.io/badge/下载-链接-blueviolet.svg?logo=hack-the-box)](https://github.com/haiibo/OpenWrt/releases/tag/Rockchip) | | [![](https://img.shields.io/badge/OpenWrt-NanoPi_R5S-32C955.svg?logo=openwrt)](https://github.com/haiibo/OpenWrt/blob/main/.github/workflows/Rockchip-OpenWrt.yml) | [![](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml/badge.svg)](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml) | [![](https://img.shields.io/badge/编译-配置-orange.svg?logo=apache-spark)](https://github.com/haiibo/OpenWrt/blob/main/configs/rockchip.config) | [![](https://img.shields.io/badge/下载-链接-blueviolet.svg?logo=hack-the-box)](https://github.com/haiibo/OpenWrt/releases/tag/Rockchip) | | [![](https://img.shields.io/badge/OpenWrt-香橙派_R1_Plus-32C955.svg?logo=openwrt)](https://github.com/haiibo/OpenWrt/blob/main/.github/workflows/Rockchip-OpenWrt.yml) | [![](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml/badge.svg)](https://github.com/haiibo/OpenWrt/actions/workflows/Rockchip-OpenWrt.yml) | [![](https://img.shields.io/badge/编译-配置-orange.svg?logo=apache-spark)](https://github.com/haiibo/OpenWrt/blob/main/configs/rockchip.config) | [![](https://img.shields.io/badge/下载-链接-blueviolet.svg?logo=hack-the-box)](https://github.com/haiibo/OpenWrt/releases/tag/Rockchip) | +| [![](https://img.shields.io/badge/OpenWrt-树莓派_3B/3B+-32C955.svg?logo=openwrt)](https://github.com/haiibo/OpenWrt/blob/main/.github/workflows/RaspberryPi3-OpenWrt.yml) | [![](https://github.com/haiibo/OpenWrt/actions/workflows/RaspberryPi3-OpenWrt.yml/badge.svg)](https://github.com/haiibo/OpenWrt/actions/workflows/RaspberryPi3-OpenWrt.yml) | [![](https://img.shields.io/badge/编译-配置-orange.svg?logo=apache-spark)](https://github.com/haiibo/OpenWrt/blob/main/configs/rpi3.config) | [![](https://img.shields.io/badge/下载-链接-blueviolet.svg?logo=hack-the-box)](https://github.com/haiibo/OpenWrt/releases/tag/RaspberryPi3) | | [![](https://img.shields.io/badge/OpenWrt-树莓派_4B-32C955.svg?logo=openwrt)](https://github.com/haiibo/OpenWrt/blob/main/.github/workflows/RaspberryPi4-OpenWrt.yml) | [![](https://github.com/haiibo/OpenWrt/actions/workflows/RaspberryPi4-OpenWrt.yml/badge.svg)](https://github.com/haiibo/OpenWrt/actions/workflows/RaspberryPi4-OpenWrt.yml) | [![](https://img.shields.io/badge/编译-配置-orange.svg?logo=apache-spark)](https://github.com/haiibo/OpenWrt/blob/main/configs/rpi4.config) | [![](https://img.shields.io/badge/下载-链接-blueviolet.svg?logo=hack-the-box)](https://github.com/haiibo/OpenWrt/releases/tag/RaspberryPi4) | diff --git a/configs/rpi3.config b/configs/rpi3.config new file mode 100644 index 0000000000..8ff01c93fb --- /dev/null +++ b/configs/rpi3.config @@ -0,0 +1,13 @@ +# Target Config +CONFIG_TARGET_bcm27xx=y +CONFIG_TARGET_bcm27xx_bcm2711=y +CONFIG_TARGET_bcm27xx_bcm2711_DEVICE_rpi-3=y + +# Set firmware size +CONFIG_TARGET_KERNEL_PARTSIZE=32 +CONFIG_TARGET_ROOTFS_PARTSIZE=900 + +# Firmware Type +CONFIG_TARGET_ROOTFS_TARGZ=y +CONFIG_TARGET_ROOTFS_EXT4FS=y +CONFIG_TARGET_ROOTFS_SQUASHFS=y