From 5fd35b6bb75b5d66733c89f60bac0b80115437d1 Mon Sep 17 00:00:00 2001 From: Nick Liu Date: Fri, 20 Sep 2024 21:37:33 -0500 Subject: [PATCH] CI: Multi-arch compilation --- .github/workflows/compile.yml | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/compile.yml diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml new file mode 100644 index 0000000..753173f --- /dev/null +++ b/.github/workflows/compile.yml @@ -0,0 +1,68 @@ +name: Build and Release mod_antiloris + +on: + push: + branches: + - '*' + tags: + - '*' + +jobs: + release: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - arch: x86_64 + platform: linux/amd64 + arch_label: x86_64 + - arch: armv7 + platform: linux/arm/v7 + arch_label: armv7 + - arch: aarch64 + platform: linux/arm64 + arch_label: aarch64 + - arch: ppc64le + platform: linux/ppc64le + arch_label: ppc64le + - arch: s390x + platform: linux/s390x + arch_label: s390x + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Get OS Name and Version + run: | + source /etc/os-release + echo "OS_ID=$ID" >> $GITHUB_ENV + echo "OS_VERSION_ID=$VERSION_ID" >> $GITHUB_ENV + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Build for ${{ matrix.arch }} + run: | + docker run --rm --privileged --platform ${{ matrix.platform }} \ + -v ${{ github.workspace }}:/src -w /src ${{ env.OS_ID }}:${{ env.OS_VERSION_ID }} bash -c " + apt-get update && \ + apt-get install -y git apache2-dev cmake gcc make && \ + mkdir -p build && cd build && \ + cmake .. && make mod_antiloris && \ + cp mod_antiloris.so /src/mod_antiloris-${{ matrix.arch_label }}.so + " + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: mod_antiloris-${{ matrix.arch_label }} + path: mod_antiloris-${{ matrix.arch_label }}.so + + - name: Upload release asset + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v1 + with: + files: mod_antiloris-${{ matrix.arch_label }}.so + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}