| # |
| # Copyright 2022 The Blaze Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| name: Build |
| |
| on: |
| workflow_dispatch: |
| push: |
| |
| jobs: |
| # build the library, a compilation step used by multiple steps below |
| linux-build-lib: |
| name: Build Libraries on AMD64 Rust ${{ matrix.rust }} |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| arch: [amd64] |
| rust: [nightly] |
| container: |
| image: ${{ matrix.arch }}/rust |
| env: |
| # Disable full debug symbol generation to speed up CI build and keep memory down |
| # "1" means line tables only, which is useful for panic tracebacks. |
| RUSTFLAGS: "-C debuginfo=1" |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Cache Cargo |
| uses: actions/cache@v3 |
| with: |
| # these represent dependencies downloaded by cargo |
| # and thus do not depend on the OS, arch nor rust version. |
| path: /github/home/.cargo |
| key: cargo-cache- |
| - name: Cache Rust dependencies |
| uses: actions/cache@v3 |
| with: |
| # these represent compiled steps of both dependencies and arrow |
| # and thus are specific for a particular OS, arch and rust version. |
| path: /github/home/target |
| key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }}- |
| - name: Setup Rust toolchain |
| run: | |
| rustup toolchain install ${{ matrix.rust }} |
| rustup default ${{ matrix.rust }} |
| rustup component add rustfmt |
| - name: Setup cmake |
| uses: jwlawson/actions-setup-cmake@v1.12 |
| with: |
| cmake-version: '3.16.x' |
| - name: Build Workspace |
| run: | |
| cargo build |
| env: |
| CARGO_HOME: "/github/home/.cargo" |
| CARGO_TARGET_DIR: "/github/home/target" |
| |
| macos: |
| name: Test on ${{ matrix.os }} Rust ${{ matrix.rust }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [macos-latest] |
| rust: [nightly] |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| submodules: true |
| # TODO: this won't cache anything, which is expensive. Setup this action |
| # with a OS-dependent path. |
| - name: Setup Rust toolchain |
| run: | |
| rustup toolchain install ${{ matrix.rust }} |
| rustup default ${{ matrix.rust }} |
| rustup component add rustfmt |
| - name: Run tests |
| shell: bash |
| run: | |
| cargo test |
| env: |
| # do not produce debug symbols to keep memory usage down |
| RUSTFLAGS: "-C debuginfo=0" |
| |
| lint: |
| name: Lint |
| runs-on: ubuntu-latest |
| container: |
| image: amd64/rust |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Setup toolchain |
| run: | |
| rustup toolchain install stable |
| rustup default stable |
| rustup component add rustfmt |
| - name: Run |
| run: cargo fmt --all -- --check |
| |
| clippy: |
| name: Clippy |
| needs: [linux-build-lib] |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| arch: [amd64] |
| rust: [nightly] |
| container: |
| image: ${{ matrix.arch }}/rust |
| env: |
| # Disable full debug symbol generation to speed up CI build and keep memory down |
| # "1" means line tables only, which is useful for panic tracebacks. |
| RUSTFLAGS: "-C debuginfo=1" |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| submodules: true |
| - name: Cache Cargo |
| uses: actions/cache@v3 |
| with: |
| path: /github/home/.cargo |
| # this key equals the ones on `linux-build-lib` for re-use |
| key: cargo-cache- |
| - name: Cache Rust dependencies |
| uses: actions/cache@v3 |
| with: |
| path: /github/home/target |
| # this key equals the ones on `linux-build-lib` for re-use |
| key: ${{ runner.os }}-${{ matrix.arch }}-target-cache-${{ matrix.rust }} |
| - name: Setup Rust toolchain |
| run: | |
| rustup toolchain install ${{ matrix.rust }} |
| rustup default ${{ matrix.rust }} |
| rustup component add rustfmt clippy |
| - name: Setup cmake |
| uses: jwlawson/actions-setup-cmake@v1.12 |
| with: |
| cmake-version: '3.16.x' |
| - name: Run clippy |
| run: | |
| cargo clippy --all-targets --workspace -- -D warnings |
| env: |
| CARGO_HOME: "/github/home/.cargo" |
| CARGO_TARGET_DIR: "/github/home/target" |
| |
| # coverage: |
| # name: Coverage |
| # runs-on: ubuntu-latest |
| # strategy: |
| # matrix: |
| # arch: [amd64] |
| # rust: [nightly] |
| # steps: |
| # - uses: actions/checkout@v2 |
| # with: |
| # submodules: true |
| # - name: Cache Cargo |
| # uses: actions/cache@v3 |
| # with: |
| # path: /home/runner/.cargo |
| # # this key is not equal because the user is different than on a container (runner vs github) |
| # key: cargo-coverage-cache- |
| # - name: Cache Rust dependencies |
| # uses: actions/cache@v3 |
| # with: |
| # path: /home/runner/target |
| # # this key is not equal because coverage uses different compilation flags. |
| # key: ${{ runner.os }}-${{ matrix.arch }}-target-coverage-cache-${{ matrix.rust }}- |
| # - name: Setup Rust toolchain |
| # run: | |
| # rustup toolchain install ${{ matrix.rust }} |
| # rustup default ${{ matrix.rust }} |
| # - name: Setup cmake |
| # uses: jwlawson/actions-setup-cmake@v1.12 |
| # with: |
| # cmake-version: '3.16.x' |
| # - name: Run coverage |
| # run: | |
| # # 2020-11-15: There is a cargo-tarpaulin regression in 0.17.0 |
| # # see https://github.com/xd009642/tarpaulin/issues/618 |
| # cargo install --version 0.16.0 cargo-tarpaulin |
| # cargo tarpaulin --out Xml |
| # env: |
| # CARGO_HOME: "/home/runner/.cargo" |
| # CARGO_TARGET_DIR: "/home/runner/target" |
| # - name: Report coverage |
| # continue-on-error: true |
| # run: bash <(curl -s https://codecov.io/bash) |