name: Create Release on Tag # on: [workflow_dispatch] on: push: tags: - "v*.*.*" jobs: build: name: "v${{ matrix.tag }} - ${{ matrix.build_env.pkgarch}} :: ${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}} build" runs-on: ubuntu-latest strategy: matrix: #tag: ['v23.05.0', 'v23.05.2', 'v22.03.4'] tag: ['23.05.0'] # tag: ['v22.03.4'] build_env: # - pkgarch: mips_24kc # target: ath79 # subtarget: nand # - pkgarch: mipsel_24kc # target: ramips # subtarget: mt7620 - pkgarch: mipsel_24kc target: ramips subtarget: mt7621 vermagic: "9c242f353867f49a96054ff8c9f2c460" # - pkgarch: arm_cortex-a7 # target: mediatek # subtarget: mt7629 # - pkgarch: arm_cortex-a9 # target: linksys # subtarget: wrt3200acm steps: - uses: actions/checkout@v4 with: repository: openwrt/openwrt ref: v${{ matrix.tag }} fetch-depth: 0 - name: Cache Tools and Kernel id: cache-tools-kernel uses: actions/cache@v3 env: cache-name: "cache-tools-kernel-${{ matrix.tag }}-${{ matrix.build_env.pkgarch}}-${{ matrix.build_env.target}}-${{ matrix.build_env.subtarget}}" with: path: . key: ${{ runner.os }}-build-vm-${{ env.cache-name }} restore-keys: | ${{ runner.os }}-build-vm-cache-tools-kernel-${{ matrix.tag }}-${{ matrix.build_env.pkgarch}}- - name: Building kernel and tools if: ${{ steps.cache-tools-kernel.outputs.cache-hit != 'true' }} run: | echo "pkgarch: ${{ matrix.build_env.pkgarch}}, target:${{ matrix.build_env.target}}, subtarget: ${{ matrix.build_env.subtarget}}" wget https://downloads.openwrt.org/releases/${{ matrix.tag }}/targets/${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}}/feeds.buildinfo -O feeds.conf ./scripts/feeds update ./scripts/feeds install -a wget https://downloads.openwrt.org/releases/${{ matrix.tag }}/targets/${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}}/config.buildinfo -O .config echo "CONFIG_PACKAGE_kmod-amneziawg=m" >> .config echo "CONFIG_PACKAGE_amneziawg-tools=y" >> .config echo "CONFIG_PACKAGE_luci-app-amneziawg=y" >> .config echo "CONFIG_PACKAGE_kmod-crypto-lib-chacha20=m" >> .config echo "CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=m" >> .config echo "CONFIG_PACKAGE_kmod-crypto-chacha20poly1305=m" >> .config make defconfig make target/linux/compile V=s || true VERMAGIC=`cat ./build_dir/target-*/linux-*/linux-*/.vermagic` VERMAGIC_EXPECTED=${{ matrix.build_env.vermagic }} if [ "$VERMAGIC" != "$VERMAGIC_EXPECTED" ]; then echo Vermagic mismatch: $VERMAGIC, expected $VERMAGIC_EXPECTED exit 1 fi echo " > make tools/install" make tools/install -i -j `nproc` echo " > make toolchain/install" make toolchain/install -i -j `nproc` # compile kernel module echo " > make target/linux/compile" make target/linux/compile -i -j `nproc` V=s echo "Final Kernel vermagic:" cat ./build_dir/target-*/linux-*/linux-*/.vermagic - name: Update feeds run: | wget https://downloads.openwrt.org/releases/${{ matrix.tag }}/targets/${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}}/feeds.buildinfo -O feeds.conf echo "src-git awgopenwrt https://github.com/yury-sannikov/awg-openwrt.git" >> ./feeds.conf ./scripts/feeds update luci ./scripts/feeds install -a -p luci ./scripts/feeds update awgopenwrt ./scripts/feeds install -a -p awgopenwrt wget https://downloads.openwrt.org/releases/${{ matrix.tag }}/targets/${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}}/config.buildinfo -O .config echo "CONFIG_PACKAGE_kmod-amneziawg=m" >> .config echo "CONFIG_PACKAGE_amneziawg-tools=y" >> .config echo "CONFIG_PACKAGE_luci-app-amneziawg=y" >> .config echo "CONFIG_PACKAGE_kmod-amneziawg=m" >> .config echo "CONFIG_PACKAGE_kmod-crypto-lib-chacha20=m" >> .config echo "CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=m" >> .config echo "CONFIG_PACKAGE_kmod-crypto-chacha20poly1305=m" >> .config make defconfig - name: Build amneziawg-tools run: | make V=s package/amneziawg-tools/{clean,download,prepare} make V=s package/amneziawg-tools/compile - name: Build kmod-amneziawg run: | make package/kmod-amneziawg/{clean,download,prepare} make package/kmod-amneziawg/compile - name: Build luci run: | make package/luci-app-amneziawg/{clean,download,prepare} make package/luci-app-amneziawg/compile V=s - name: Prepare artifacts run: | tag_name=${{ github.ref_name }} mkdir -p awgrelease postfix="${tag_name}_v${{ matrix.tag }}_${{ matrix.build_env.pkgarch}}_${{ matrix.build_env.target}}_${{ matrix.build_env.subtarget}}" cp bin/packages/${{ matrix.build_env.pkgarch }}/awgopenwrt/amneziawg-tools_*.ipk awgrelease/amneziawg-tools_${postfix}.ipk cp bin/packages/${{ matrix.build_env.pkgarch }}/awgopenwrt/luci-app-amneziawg_*.ipk awgrelease/luci-app-amneziawg_${postfix}.ipk cp bin/targets/${{ matrix.build_env.target}}/${{ matrix.build_env.subtarget}}/packages/kmod-amneziawg_*.ipk awgrelease/kmod-amneziawg_${postfix}.ipk - name: Release uses: softprops/action-gh-release@v1 with: files: awgrelease/*.ipk - name: Cleanup run: | rm feeds.conf || true rm -rf awgrelease || true