name: CI on: [push, pull_request] env: CARGO_TERM_COLOR: always MOONFIRE_COLOR: always RUST_BACKTRACE: 1 jobs: rust: name: Test Rust server code strategy: matrix: rust: - stable - 1.52 - nightly include: - rust: nightly extra_args: "--features nightly --benches" - rust: stable extra_components: rustfmt runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v2 - name: Cache uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git server/target key: ${{ matrix.rust }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Install dependencies run: sudo apt-get update && sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libncurses-dev libsqlite3-dev pkgconf - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true components: ${{ matrix.extra_components }} - name: Test run: cd server && cargo test ${{ matrix.extra_args }} --all - name: Check formatting if: matrix.rust == 'stable' run: cd server && cargo fmt --all -- --check js: name: Build, test, lint, and check formatting of Javascript frontend runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: "14" path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: cd ui && npm ci - run: cd ui && npm run build - run: cd ui && npm run test - run: cd ui && npm run lint - run: cd ui && npm run check-format license: name: Check copyright/license headers runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v2 - run: find . -type f -print0 | xargs -0 .github/workflows/check-license.py