diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b47621..ecb1577 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,3 +61,29 @@ jobs: run: ./ci/install-rust.sh "${{ matrix.rust-version }}" --profile minimal - name: Build and test run: ./ci/build-and-test.sh + + build-dist-linux: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + - name: Pull image + run: docker pull quay.io/pypa/manylinux2014_x86_64 + - name: Build + run: | + docker run \ + -v "$(pwd):/workdir" \ + -w /workdir \ + quay.io/pypa/manylinux2014_x86_64 \ + bash ./ci/build-dist-linux.sh + - name: Upload linux-x86_64 artifact + uses: actions/upload-artifact@v4 + with: + name: rsjsonnet-linux-x86_64 + path: output/rsjsonnet-linux-x86_64 + if-no-files-found: error + - name: Upload linux-i686 artifact + uses: actions/upload-artifact@v4 + with: + name: rsjsonnet-linux-i686 + path: output/rsjsonnet-linux-i686 + if-no-files-found: error diff --git a/ci/build-dist-linux.sh b/ci/build-dist-linux.sh new file mode 100755 index 0000000..4c0b573 --- /dev/null +++ b/ci/build-dist-linux.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -euo pipefail + +yum install -y glibc-devel.i686 + +rust_version="$(cat "ci/rust-versions/stable.txt")" + +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ + sh -s -- -y --default-toolchain "$rust_version" --profile minimal \ + -t x86_64-unknown-linux-gnu \ + -t i686-unknown-linux-gnu + +# shellcheck disable=SC1090 +. "$HOME/.cargo/env" + +export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 +export CARGO_PROFILE_RELEASE_CODEGEN_PANIC=abort +export CARGO_PROFILE_RELEASE_STRIP=debuginfo + +cargo fetch --locked +mkdir output + +cargo build -p rsjsonnet --target x86_64-unknown-linux-gnu --release --frozen +mkdir output/rsjsonnet-linux-x86_64 +cp target/x86_64-unknown-linux-gnu/release/rsjsonnet output/rsjsonnet-linux-x86_64/rsjsonnet + +cargo build -p rsjsonnet --target i686-unknown-linux-gnu --release --frozen +mkdir output/rsjsonnet-linux-i686 +cp target/i686-unknown-linux-gnu/release/rsjsonnet output/rsjsonnet-linux-i686/rsjsonnet