From e8238daa641c26651c20f06baeb2bd44690f2f68 Mon Sep 17 00:00:00 2001 From: ClementTsang Date: Sat, 21 Nov 2020 15:28:46 -0500 Subject: ci: Add initial github actions ci --- .github/workflows/ci.yml | 194 +++++++++++++++++++++++++++++++++++++++ .github/workflows/deployment.yml | 0 2 files changed, 194 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/deployment.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..e61d49ea --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,194 @@ +# CI pipeline based on: +# - https://github.com/heim-rs/heim/blob/master/.github/workflows/ci.yml +# - https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/ci.yml + +name: ci +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + schedule: + - cron: "0 5 * * *" + +jobs: + # Check rustfmt + rustfmt: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + - macOS-latest + - windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt + - run: cargo fmt --all -- --check + + # Check clippy. + clippy: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + - macOS-latest + - windows-latest + steps: + - uses: actions/checkout@v2 + - name: Cache cargo build target + uses: actions/cache@v1 + with: + path: target + key: clippy-${{ runner.os }}-${{ hashFiles('**/Cargo.toml') }} + + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: clippy + - run: cargo clippy --all-targets --workspace -- -D warnings + + # Compile test. + compile: + name: ${{ matrix.toolchain }} / ${{ matrix.triple.target }} + needs: [rustfmt, clippy] + runs-on: ${{ matrix.triple.os }} + strategy: + fail-fast: false + matrix: + triple: + # Standard x86-64 stuff, stable + - { + os: "ubuntu-latest", + target: "x86_64-unknown-linux-gnu", + cross: false, + rust: stable, + } + - { + os: "ubuntu-latest", + target: "i686-unknown-linux-gnu", + cross: true, + rust: stable, + } + - { + os: "ubuntu-latest", + target: "x86_64-unknown-linux-musl", + cross: false, + rust: stable, + } + - { + os: "ubuntu-latest", + target: "i686-unknown-linux-musl", + cross: true, + rust: stable, + } + - { + os: "macOS-latest", + target: "x86_64-apple-darwin", + cross: false, + rust: stable, + } + - { + os: "windows-latest", + target: "x86_64-pc-windows-msvc", + cross: false, + rust: stable, + } + - { os: "windows-latest", target: "i686-pc-windows-gnu", cross: true } + - { + os: "windows-latest", + target: "x86_64-pc-windows-gnu", + cross: false, + rust: stable, + } + + # aarch64 + - { + os: "ubuntu-latest", + target: "aarch64-unknown-linux-gnu", + cross: true, + rust: stable, + } + - { + os: "ubuntu-latest", + target: "aarch64-unknown-linux-musl", + cross: true, + rust: stable, + } + + # armv7 + - { + os: "ubuntu-latest", + target: "armv7-unknown-linux-gnueabihf", + cross: true, + rust: stable, + } + - { + os: "ubuntu-latest", + target: "armv7-unknown-linux-musleabihf", + cross: true, + rust: stable, + } + + # PowerPC 64 LE + - { + os: "ubuntu-latest", + target: "powerpc64le-unknown-linux-gnu", + cross: true, + rust: stable, + } + + steps: + - uses: actions/checkout@v2 + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + override: true + + - name: Check + uses: actions-rs/cargo@v1 + with: + command: check + args: --all-targets --verbose + use-cross: ${{ matrix.triple.cross }} + + tests: + needs: [compile] + name: Test ${{ matrix.os }} + runs-on: ${{ matrix.os }} + continue-on-error: true + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macOS-latest + - windows-latest + toolchain: + - stable + steps: + - uses: actions/checkout@v2 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + override: true + + - name: Run tests + run: cargo test --no-fail-fast + env: + CARGO_HUSKY_DONT_INSTALL_HOOKS: true + RUST_BACKTRACE: full diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3