summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2020-11-21 15:28:46 -0500
committerClementTsang <cjhtsang@uwaterloo.ca>2020-11-21 15:28:46 -0500
commite8238daa641c26651c20f06baeb2bd44690f2f68 (patch)
treeed21d50c99c64248ea03de8afbf93e7b5cd65558
parente04ce4fa1b42e99f00cf8825bcd58da43552214e (diff)
ci: Add initial github actions ci
-rw-r--r--.github/workflows/ci.yml194
-rw-r--r--.github/workflows/deployment.yml0
2 files changed, 194 insertions, 0 deletions
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
--- /dev/null
+++ b/.github/workflows/deployment.yml