name: Continuous Integration on: push: branches: [ master ] pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: self-hosted env: RUSTC_WRAPPER: /usr/bin/sccache CARGO_INCREMENTAL: 0 SCCACHE_DIR: /var/lib/github-actions/.cache 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 mold -run npm run build - name: ๐Ÿ‘• Lint Graphite web formatting env: NODE_ENV: production run: | cd frontend # npm run lint echo "๐Ÿ’ฅ Frontend linting is temporarily disabled until it can be set up again with Svelte ๐Ÿ’ฅ" - name: ๐Ÿ”ฌ Check Rust formatting run: | mold -run cargo fmt --all -- --check - name: ๐Ÿฆ€ Build Rust code run: | mold -run cargo build - name: ๐Ÿงช Run Rust tests run: | mold -run cargo nextest run 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