name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
defaults:
run:
shell: bash
jobs:
all:
name: All
strategy:
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: --deny warnings
steps:
- uses: actions/checkout@v2
- name: Install Rust Toolchain Components
uses: actions-rs/toolchain@v1
with:
components: clippy, rustfmt
target: wasm32-unknown-unknown
toolchain: stable
- uses: Swatinem/rust-cache@v1
- name: Check Lockfile
run: |
cargo update --locked --package degenerate
- name: Test
run: cargo test --all --release -- --include-ignored
- name: Clippy
run: cargo clippy --all --all-targets
- name: Format
run: cargo fmt --all -- --check
- name: Check for Forbidden Words
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get update
sudo apt-get install ripgrep
./bin/forbid
- name: Install `mdbook`
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: latest
- name: Build Book
run: mdbook build man
- name: Install `wasm-bindgen`
uses: jetli/wasm-bindgen-action@v0.1.0
with:
version: 0.2.80
- name: Build WASM
run: |
cargo build --release --target wasm32-unknown-unknown
wasm-bindgen \
--target web \
--no-typescript \
--out-dir www \
target/wasm32-unknown-unknown/release/degenerate.wasm
- name: Record Git Revision
run: git rev-parse --verify HEAD > www/commit.txt
- name: Deploy Pages
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/master' && matrix.os == 'ubuntu-latest'
with:
github_token: ${{secrets.GITHUB_TOKEN}}
publish_branch: gh-pages
publish_dir: www