From 6cf176bbb31d4621fc74def0136e4014c43aab03 Mon Sep 17 00:00:00 2001 From: Alisa Sireneva Date: Wed, 30 Oct 2024 12:33:32 +0300 Subject: [PATCH] Add CI --- .github/workflows/ci.yml | 126 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b1b847c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,126 @@ +name: CI + +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + linux-native: + runs-on: ${{ matrix.os }} + strategy: + matrix: + libc: [gnu, musl] + include: + - os: ubuntu-latest + arch: x86_64 + - os: buildjet-2vcpu-ubuntu-2204-arm + arch: aarch64 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Add target + run: rustup target add ${{ matrix.arch }}-unknown-linux-${{ matrix.libc }} + - name: Test with panic backend + run: LITHIUM_BACKEND=panic cargo test --verbose --target ${{ matrix.arch }}-unknown-linux-${{ matrix.libc }} + - name: Test with Itanium backend + run: LITHIUM_BACKEND=itanium cargo test --verbose --target ${{ matrix.arch }}-unknown-linux-${{ matrix.libc }} + + linux-cross: + runs-on: ubuntu-latest + strategy: + matrix: + target: + - arm-unknown-linux-gnueabi + - arm-unknown-linux-gnueabihf + - armv7-unknown-linux-gnueabihf + - i686-unknown-linux-gnu + - i686-unknown-linux-musl + - loongarch64-unknown-linux-gnu + - loongarch64-unknown-linux-musl + - powerpc64le-unknown-linux-gnu + - riscv64gc-unknown-linux-gnu + - riscv64gc-unknown-linux-musl + - s390x-unknown-linux-gnu + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Install Cross + run: cargo install cross --git https://github.com/cross-rs/cross + - name: Test with panic backend + run: LITHIUM_BACKEND=panic cross test --verbose --target ${{ matrix.target }} + - name: Test with Itanium backend + run: LITHIUM_BACKEND=itanium cross test --verbose --target ${{ matrix.target }} + + darwin: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - macos-13 # x86_64 + - macos-15 # aarch64 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Test with panic backend + run: LITHIUM_BACKEND=panic cargo test --verbose + - name: Test with Itanium backend + run: LITHIUM_BACKEND=itanium cargo test --verbose + + windows: + runs-on: windows-latest + strategy: + matrix: + arch: [x86_64, i686] + abi: [msvc, gnu] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set default-host + run: rustup set default-host ${{ matrix.arch }}-pc-windows-${{ matrix.abi }} + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Test with panic backend + run: set LITHIUM_BACKEND=panic && cargo test --verbose + - name: Test with SEH backend + if: matrix.abi == 'msvc' + run: set LITHIUM_BACKEND=seh && cargo test --verbose + - name: Test with Itanium backend + if: matrix.abi == 'gnu' + run: set LITHIUM_BACKEND=itanium && cargo test --verbose + + # TODO: Restore this when strict provenance APIs are in stable. + # test_stable: + # runs-on: ubuntu-latest + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + # - name: Install Rust + # run: rustup update stable && rustup default stable + # - name: Test with panic backend + # run: cargo test --verbose + + lint: + runs-on: ubuntu-latest + strategy: + matrix: + backend: [panic, itanium, seh] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Rust + run: rustup update nightly && rustup default nightly + - name: Install rustfmt and clippy + run: rustup component add rustfmt clippy + - name: Rustfmt + run: LITHIUM_BACKEND=${{ matrix.backend }} cargo fmt -- --check + - name: Clippy + run: LITHIUM_BACKEND=${{ matrix.backend }} cargo clippy -- -D warnings