name: Continuous Integration on: push: branches: [ master ] pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: ๐Ÿ”ง Set up Node uses: actions/setup-node@v1 with: node-version: '16.x' - name: ๐Ÿšง Install Node dependencies run: | cd frontend npm ci - name: ๐Ÿ”ผ Update Rust to latest stable run: | rustc --version rustup update stable rustc --version - name: ๐ŸŒ Build Graphite web code env: NODE_ENV: production SKIP_CARGO_ABOUT: true run: | cd frontend npm run build - name: ๐Ÿ‘• Lint Graphite web formatting env: NODE_ENV: production run: | cd frontend npm run lint - name: ๐Ÿ”ฌ Check Rust formatting run: | cargo fmt --all -- --check - name: ๐Ÿฆ€ Build Rust code run: | cargo build --verbose - name: ๐Ÿงช Run Rust tests run: | cargo test --verbose cargo-deny: runs-on: ubuntu-latest strategy: matrix: checks: - 'crate security advisories' - 'crate license compatibility' # Prevent sudden announcement of a new advisory from failing ci: continue-on-error: ${{ matrix.checks == 'crate security advisories' }} steps: - uses: actions/checkout@v2 - uses: EmbarkStudios/cargo-deny-action@v1 if: matrix.checks == 'crate security advisories' with: command: check advisories - uses: EmbarkStudios/cargo-deny-action@v1 if: matrix.checks == 'crate license compatibility' with: command: check bans licenses sources