name: CI on: [pull_request, merge_group] env: MDBOOK_VERSION: 0.4.40 jobs: test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Rust Toolchain uses: actions-rust-lang/setup-rust-toolchain@v1.9.0 with: toolchain: nightly components: rust-docs - run: rustup default nightly - name: Install mdbook run: | mkdir bin curl -sSL https://github.com/rust-lang/mdBook/releases/download/v${MDBOOK_VERSION}/mdbook-v${MDBOOK_VERSION}-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 - name: Run tests run: mdbook test # - name: Cache/Restore linkcheck # id: cache # uses: actions/cache@v4.0.2 # with: # path: linkchecker # key: linkchecker-${{ runner.os }} # - name: Install linkcheck and Check links # # if: steps.cache.outputs.cache-hit != 'true' # run: | # curl -sSLo linkcheck.sh \ # https://raw.githubusercontent.com/rust-lang/rust/master/src/tools/linkchecker/linkcheck.sh # sh linkcheck.sh --all nomicon # - name: Check links # if: steps.cache.outputs.cache-hit == 'true' # run: | # cd linkchecker # cargo run --release linkcheck # The success job is here to consolidate the total success/failure state of # all other jobs. This job is then included in the GitHub branch protection # rule which prevents merges unless all other jobs are passing. This makes # it easier to manage the list of jobs via this yml file and to prevent # accidentally adding new jobs without also updating the branch protections. success: name: Success gate if: always() needs: - test runs-on: ubuntu-latest steps: - run: jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' - name: Done run: exit 0