diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1c05e69 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,109 @@ +on: [push, pull_request] + +name: Rust IPLD + +jobs: + ci: + strategy: + fail-fast: false + matrix: + toolchain: + - rust: stable + #- rust: nightly + platform: + - target: x86_64-unknown-linux-gnu + host: ubuntu-latest + cross: false + + - target: x86_64-apple-darwin + host: macos-latest + cross: false + + - target: x86_64-pc-windows-msvc + host: windows-latest + cross: false + + - target: armv7-linux-androideabi + host: ubuntu-latest + cross: true + - target: aarch64-linux-android + host: ubuntu-latest + cross: true + + - target: aarch64-apple-ios + host: macos-latest + cross: true + env: + RUST_BACKTRACE: 1 + CARGO_INCREMENTAL: 0 + LLVM_CONFIG_PATH: /usr/local/opt/llvm/bin/llvm-config + NDK_HOME: /usr/local/lib/android/sdk/ndk-bundle + + runs-on: ${{ matrix.platform.host }} + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Cache cargo folder + uses: actions/cache@v1 + with: + path: ~/.cargo + key: ${{ matrix.platform.target }}-cargo-${{ matrix.toolchain.rust }} + + - name: Install dependencies ubuntu + if: matrix.platform.host == 'ubuntu-latest' + run: sudo apt-get install llvm-dev + + - name: Install dependencies macos + if: matrix.platform.host == 'macos-latest' + run: brew install llvm + + - name: Install dependencies windows + if: matrix.platform.host == 'windows-latest' + run: choco install llvm + + - name: Install rust toolchain + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.toolchain.rust }} + targets: ${{ matrix.platform.target }} + + - name: Install cargo-ndk + if: contains(matrix.platform.target, 'android') + run: cargo install cargo-ndk + + - name: Build + if: contains(matrix.platform.target, 'android') == false + run: cargo build --workspace --all-features --target ${{ matrix.platform.target }} + + - name: Build android + if: contains(matrix.platform.target, 'android') + run: cargo ndk --android-platform 29 --target ${{ matrix.platform.target }} build --workspace --all-features + + - name: Rust tests + if: matrix.platform.cross == false + run: cargo test --workspace --all-features + + lint-rust: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Cache cargo folder + uses: actions/cache@v1 + with: + path: ~/.cargo + key: lint-cargo + + - name: Install rust toolchain + uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + components: clippy, rustfmt + + - name: cargo fmt + run: cargo fmt --all -- --check + + - name: cargo clippy + run: cargo clippy --workspace --all-features --examples --tests -- -D warnings