From aa9dc2eb427ae85e875cfb742a09c81cef660923 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Thu, 20 Jan 2022 18:45:18 +0100 Subject: [PATCH] ci: add github actions --- .github/workflows/ci.yml | 166 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 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..5beffcb --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,166 @@ +name: CI + +on: + pull_request: + push: + branches: master + +env: + MSRV: 1.51.0 + RUSTFLAGS: "-Dwarnings" + CARGO_INCREMENTAL: 0 + RUST_BACKTRACE: 1 + +jobs: + set-msrv: + runs-on: ubuntu-latest + outputs: + msrv: ${{ steps.msrv.outputs.msrv }} + steps: + - uses: actions/checkout@v2 + - id: msrv + run: echo "::set-output name=msrv::$(echo $MSRV)" + + linux_foreign: + strategy: + matrix: + include: + # 64-bit Linux/arm64 + - target: aarch64-unknown-linux-gnu + rust: nightly + arch: aarch64 + + # 64-bit Linux/arm64 + - target: aarch64-unknown-linux-gnu + rust: nightly + arch: aarch64 + + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - uses: uraimo/run-on-arch-action@v2.1.1 + name: Run commands + id: runcmd + with: + arch: aarch64 + distro: ubuntu18.04 + + # Not required, but speeds up builds by storing container images in + # a GitHub package registry. + githubToken: ${{ github.token }} + + install: | + apt-get update -q -y + apt-get install -q -y ocl-icd-opencl-dev curl build-essential + curl https://sh.rustup.rs -sSf | sh -s -- --profile minimal --default-toolchain ${{ matrix.rust }} -y + source $HOME/.cargo/env + + run: | + $HOME/.cargo/bin/cargo test --release --target ${{ matrix.target }} + # Linux tests + linux: + needs: set-msrv + strategy: + matrix: + include: + # 32-bit Linux/x86 + - target: i686-unknown-linux-gnu + rust: ${{needs.set-msrv.outputs.msrv}} + deps: sudo apt update && sudo apt install gcc-multilib + - target: i686-unknown-linux-gnu + rust: stable + deps: sudo apt update && sudo apt install gcc-multilib + + # 64-bit Linux/x86_64 + - target: x86_64-unknown-linux-gnu + rust: ${{needs.set-msrv.outputs.msrv}} + - target: x86_64-unknown-linux-gnu + rust: stable + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.rust }} + target: ${{ matrix.target }} + override: true + - name: Install opencl + run: sudo apt-get install -y ocl-icd-opencl-dev + - run: ${{ matrix.deps }} + - run: cargo test --target ${{ matrix.target }} + + # macOS tests + macos: + needs: set-msrv + strategy: + matrix: + toolchain: + - ${{needs.set-msrv.outputs.msrv}} + - stable + + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + target: x86_64-apple-darwin + override: true + - run: cargo test + + # Windows tests + windows: + needs: set-msrv + strategy: + matrix: + include: + - target: x86_64-pc-windows-gnu + toolchain: stable + + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + target: ${{ matrix.target }} + override: true + - uses: msys2/setup-msys2@v2 + - run: cargo test --target ${{ matrix.target }} + + clippy_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - run: rustup component add clippy + - uses: actions-rs/clippy-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features + + check_fmt_and_docs: + name: Checking fmt and docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + components: rustfmt + + - name: setup + run: | + rustup component add rustfmt + rustc --version + - name: fmt + run: cargo fmt --all -- --check + + - name: Docs + run: cargo doc \ No newline at end of file