feat(root): Using mdbook-check as checker #15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: [push, pull_request] | |
| jobs: | |
| test: | |
| name: Run tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| with: | |
| submodules: true | |
| - name: Update rustup | |
| run: rustup self update | |
| - name: Install Rust | |
| run: | | |
| rustup set profile minimal | |
| rustup toolchain install 1.90 -c rust-docs | |
| rustup default 1.90 | |
| - name: Install mdbook | |
| run: | | |
| mkdir bin | |
| curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.45/mdbook-v0.4.45-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin | |
| echo "$(pwd)/bin" >> "${GITHUB_PATH}" | |
| - name: Report versions | |
| run: | | |
| rustup --version | |
| rustc -Vv | |
| mdbook --version | |
| # mdBook does not currently have particularly good support for “external” | |
| # crates. To make the test suite work correctly with `trpl`, we must first | |
| # build `trpl` itself (`mdbook` will not do it), and then explicitly pass | |
| # its `deps` path as a library search path for `mdbook test`. That will make | |
| # sure all the crates can be resolved when running the tests. | |
| - name: Build `trpl` crate | |
| run: | | |
| cd mdbook-check/packages/trpl | |
| cargo build | |
| - name: Run tests | |
| run: | |
| mdbook test --library-path mdbook-check/packages/trpl/target/debug/deps | |
| package_tests: | |
| name: Run package tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| with: | |
| submodules: true | |
| - name: Update rustup | |
| run: rustup self update | |
| - name: Install Rust | |
| run: | | |
| rustup set profile minimal | |
| rustup toolchain install 1.90 -c rust-docs | |
| rustup default 1.90 | |
| - name: Run `tools` package tests | |
| run: | | |
| cargo test | |
| - name: Run `mdbook-trpl` package tests | |
| working-directory: mdbook-check/packages/mdbook-trpl | |
| run: | | |
| cargo test | |
| lint: | |
| name: Run lints | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Force fetch submodules | |
| run: | | |
| git submodule update --init | |
| git submodule foreach --recursive git submodule update --init | |
| - name: Update rustup | |
| run: rustup self update | |
| - name: Install Rust | |
| run: | | |
| rustup set profile minimal | |
| rustup toolchain install nightly -c rust-docs | |
| rustup override set nightly | |
| - name: Install mdbook | |
| run: | | |
| mkdir bin | |
| curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.45/mdbook-v0.4.45-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin | |
| echo "$(pwd)/bin" >> "${GITHUB_PATH}" | |
| - name: Install mdbook-trpl binaries | |
| run: cargo install --path mdbook-check/packages/mdbook-trpl | |
| - name: Install aspell | |
| run: sudo apt-get install aspell | |
| - name: Install shellcheck | |
| run: sudo apt-get install shellcheck | |
| - name: Report versions | |
| run: | | |
| rustup --version | |
| rustc -Vv | |
| mdbook --version | |
| aspell --version | |
| shellcheck --version | |
| - name: Shellcheck | |
| run: | | |
| exclude_dirs=( | |
| "*/packages/autocorrect/**" | |
| "*/src/fuzz/books/codes/.venv/**" | |
| "*/book/**" | |
| ) | |
| find_args=() | |
| for pattern in "${exclude_dirs[@]}"; do | |
| find_args+=(-not -path "$pattern") | |
| done | |
| find . -name "*.sh" -type f "${find_args[@]}" -exec shellcheck {} + | |
| - name: Spellcheck | |
| run: bash mdbook-check/ci/spellcheck.sh list | |
| - name: Lint for local file paths | |
| run: | | |
| mdbook build | |
| cargo run --bin lfp src | |
| - name: Validate references | |
| run: bash mdbook-check/ci/validate.sh | |
| - name: Check for broken links | |
| run: | | |
| curl -sSLo linkcheck.sh \ | |
| https://raw.githubusercontent.com/rust-lang/rust/HEAD/src/tools/linkchecker/linkcheck.sh | |
| # Cannot use --all here because of the generated redirect pages aren't available. | |
| sh linkcheck.sh book | |
| - name: Check Markdown Lint | |
| run: make check-lint |