Build Recomputer-Gateway Firmware #35
This file contains hidden or 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: Build Recomputer-Gateway Firmware | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| tag_name: | |
| description: 'release name' | |
| required: true | |
| default: 'v1.0.0' | |
| type: string | |
| release: | |
| types: [ created ] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Freeing up disk space | |
| uses: easimon/maximize-build-space@master | |
| with: | |
| root-reserve-mb: 3072 | |
| swap-size-mb: 1 | |
| remove-dotnet: 'true' | |
| remove-android: 'true' | |
| remove-haskell: 'true' | |
| remove-codeql: 'true' | |
| remove-docker-images: 'true' | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Initialization environment | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| run: | | |
| sudo rm -rf /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 build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev rsync unzip zlib1g-dev file wget | |
| sudo -E apt-get -qq autoremove --purge | |
| sudo -E apt-get -qq clean | |
| sudo timedatectl set-timezone "Asia/Shanghai" | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Check disk usage before build | |
| run: df -h | |
| - name: Set up OpenWrt build environment | |
| run: | | |
| git submodule update --init --recursive | |
| git clone https://github.com/openwrt/openwrt.git -b openwrt-24.10 | |
| cd openwrt && rm -r feeds.conf.default && cp ../feeds.conf.default feeds.conf.default | |
| cat feeds.conf.default | |
| - name: Update feeds | |
| run: cd openwrt && ./scripts/feeds update -a | |
| - name: Install feeds | |
| run: cd openwrt && ./scripts/feeds install -a | |
| - name: Initial configuration | |
| run: | | |
| cd openwrt && make defconfig | |
| rm -r .config && cp ../.config .config | |
| make defconfig | |
| cat .config | |
| - name: Disable Rust LLVM CI download | |
| run: | | |
| sed -i 's/--set=llvm.download-ci-llvm=true/--set=llvm.download-ci-llvm=false/' \ | |
| openwrt/feeds/packages/lang/rust/Makefile | |
| - name: Build for recomputer-gateway | |
| run: | | |
| cd openwrt | |
| unset CI | |
| unset GITHUB_ACTIONS | |
| unset CONTINUOUS_INTEGRATION | |
| make -j$(nproc) | |
| - name: Upload recomputer-gateway artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: recomputer-gateway | |
| path: | | |
| ./openwrt/bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-rootfs.tar.gz | |
| - name: Create version.txt file | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| cd ./openwrt/bin/targets/armsr/armv8/ | |
| echo "Version: ${{ github.event.inputs.tag_name }}" > version.txt | |
| echo "Build Date: $(date '+%Y-%m-%d %H:%M:%S')" >> version.txt | |
| mkdir openwrt-armsr-armv8-generic-rootfs && cd openwrt-armsr-armv8-generic-rootfs | |
| tar -xzf ../openwrt-armsr-armv8-generic-rootfs.tar.gz && cp ../version.txt ./ | |
| mkdir -p opt/packages | |
| cp ../../../../packages/aarch64_generic/lorawan_gateway/*.ipk opt/packages/ || true | |
| cp ../../../../packages/aarch64_generic/luci_lorawan_gateway/*.ipk opt/packages/ || true | |
| sudo tar --owner=0 --group=0 --numeric-owner -czf ../openwrt-armsr-armv8-generic-rootfs.tar.gz . | |
| tar -tzf ../openwrt-armsr-armv8-generic-rootfs.tar.gz | grep version.txt | |
| - name: Create Release | |
| if: github.event_name == 'workflow_dispatch' | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: ${{ github.event.inputs.tag_name }} | |
| name: ${{ github.event.inputs.tag_name }} | |
| files: | | |
| ./openwrt/bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-rootfs.tar.gz | |
| ./openwrt/bin/targets/armsr/armv8/version.txt | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |