diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..103ce4d --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +name: Build and Package OPKG + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + arch: [mipsel, mips, aarch64, armv7, armv5] + include: + - arch: mipsel + goos: linux + goarch: mipsle + gomips: softfloat + - arch: mips + goos: linux + goarch: mips + gomips: softfloat + - arch: aarch64 + goos: linux + goarch: arm64 + - arch: armv7 + goos: linux + goarch: arm + goarm: 7 + - arch: armv5 + goos: linux + goarch: arm + goarm: 5 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y fakeroot + + - name: Build binary + run: | + go mod tidy + GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} GOMIPS=${{ matrix.gomips }} GOARM=${{ matrix.goarm }} go build -o kvas2-${{ matrix.arch }} -v -a -trimpath -ldflags="-w -s" . + + - name: Package as OPKG + run: | + mkdir -p build/${{ matrix.arch }}/control + echo 'Package: kvas2' > build/${{ matrix.arch }}/control/control + echo 'Version: 0.0.1' >> build/${{ matrix.arch }}/control/control + echo 'Architecture: ${{ matrix.arch }}' >> build/${{ matrix.arch }}/control/control + echo 'Maintainer: Vladimir Avtsenov ' >> build/${{ matrix.arch }}/control/control + echo 'Description: kvas2' >> build/${{ matrix.arch }}/control/control + echo 'Section: base' >> build/${{ matrix.arch }}/control/control + echo 'Priority: optional' >> build/${{ matrix.arch }}/control/control + echo 'Depends: libc, iptables, socat' >> build/${{ matrix.arch }}/control/control + mkdir -p build/${{ matrix.arch }}/data/opt/usr/bin + cp kvas2-${{ matrix.arch }} build/${{ matrix.arch }}/data/opt/usr/bin/kvas2 + cp -r opt build/${{ matrix.arch }}/data/ + chmod +x build/${{ matrix.arch }}/data/opt/usr/bin/kvas2 + fakeroot sh -c "tar -C build/${{ matrix.arch }}/control -cvf build/${{ matrix.arch }}/control.tar ." + fakeroot sh -c "tar -C build/${{ matrix.arch }}/data -cvf build/${{ matrix.arch }}/data.tar ." + echo '2.0' > build/${{ matrix.arch }}/debian-binary + ar r build/kvas2_${{ matrix.arch }}.ipk build/${{ matrix.arch }}/debian-binary build/${{ matrix.arch }}/control.tar build/${{ matrix.arch }}/data.tar + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: kvas2_${{ matrix.arch }}.ipk + path: build/kvas2_${{ matrix.arch }}.ipk