name: ci
on: [push, pull_request]
env:
CARGO_TERM_COLOR: always
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Clippy
run: cargo clippy --all -- -D warnings
- name: Check formatting
run: cargo fmt --all -- --check
ci_linux:
needs: checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libx11-dev libx11-xcb-dev libpng-dev zlib1g-dev xvfb lld
- name: Test
run: xvfb-run cargo test --all
ci_windows:
needs: checks
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Test
run: cargo test --all
ci_macos:
needs: checks
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Test
run: cargo test --all
publish:
needs: [ci_linux, ci_windows, ci_macos]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Publish
run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }}