name: Check & Deploy
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
install-stable:
runs-on: ubuntu-latest
steps:
- name: install rust stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: clippy, rustfmt
fmt:
runs-on: ubuntu-latest
needs: install-stable
steps:
- uses: actions/checkout@v2
- run: cargo +stable fmt -- --check
miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: install rust nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
components: miri
- run: cargo +nightly miri test --no-default-features
clippy:
runs-on: ubuntu-latest
needs: install-stable
steps:
- uses: actions/checkout@v2
- run: cargo +stable clippy
env:
RUSTFLAGS: -D warnings
all-features:
runs-on: ubuntu-latest
needs: install-stable
steps:
- uses: actions/checkout@v2
- run: cargo +stable test --all-features
guide_master:
runs-on: ubuntu-latest
needs: [fmt, miri, clippy, all-features]
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v2
- name: download mdbook
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: "latest"
- run: cargo install mdbook-linkcheck
- run: mdbook build -d guide_master
working-directory: ./guide/master
- name: save guide master
uses: actions/upload-artifact@v2
with:
name: guide_master
path: guide/master/guide_master/html
guide_0_5_0:
runs-on: ubuntu-latest
needs: [fmt, miri, clippy, all-features]
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v2
- name: download mdbook
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: "latest"
- run: cargo install mdbook-linkcheck
- run: mdbook build -d guide_0_5_0
working-directory: ./guide/0.5.0
- name: save guide 0.5.0
uses: actions/upload-artifact@v2
with:
name: guide_0_5_0
path: guide/0.5.0/guide_0_5_0/html
bunny_demo:
runs-on: ubuntu-latest
needs: [fmt, miri, clippy, all-features]
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v2
- run: rustup +stable target add wasm32-unknown-unknown
- name: install node
uses: actions/setup-node@v1
- name: install npm deps
run: npm ci
working-directory: ./bunny_demo
- run: npm run build
working-directory: ./bunny_demo
- run: mv ./bunny_demo/public ./bunny_demo/bunny_demo
- name: save bunny_demo
uses: actions/upload-artifact@v2
with:
name: bunny_demo
path: bunny_demo/bunny_demo
square_eater:
runs-on: ubuntu-latest
needs: [fmt, miri, clippy, all-features]
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v2
- run: rustup +stable target add wasm32-unknown-unknown
- run: cargo +stable build --release --package square_eater --target wasm32-unknown-unknown
- run: mv ./target/wasm32-unknown-unknown/release/square_eater.wasm ./square_eater/public
- name: save square_eater
uses: actions/upload-artifact@v2
with:
name: square_eater
path: square_eater/public
deploy:
runs-on: ubuntu-latest
needs: [guide_master, guide_0_5_0, bunny_demo, square_eater]
if: github.event_name == 'push'
steps:
- name: load guide master
uses: actions/download-artifact@v2
with:
name: guide_master
path: dist/guide/master
- name: load guide 0.5.0
uses: actions/download-artifact@v2
with:
name: guide_0_5_0
path: dist/guide/0.5.0
- name: duplicate guide_master
run: cp -r dist/guide/master dist/book
- name: load bunny_demo
uses: actions/download-artifact@v2
with:
name: bunny_demo
path: dist/bunny_demo
- name: load square_eater
uses: actions/download-artifact@v2
with:
name: square_eater
path: dist/square_eater
- name: duplicate demo
run: cp -r dist/bunny_demo dist/demo
- name: deploy to gh pages
uses: maxheld83/ghpages@master
env:
BUILD_DIR: "dist/"
GH_PAT: ${{ secrets.GH_PAT }}