name: book on: push: branches: [main] pull_request: branches: [main] merge_group: jobs: test: runs-on: ubuntu-latest name: test steps: - uses: actions/checkout@v3 - name: Install mdbook run: | mkdir mdbook curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook echo `pwd`/mdbook >> $GITHUB_PATH - name: Install mdbook-template run: | mkdir mdbook-template curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template echo `pwd`/mdbook-template >> $GITHUB_PATH - name: Run tests run: mdbook test lint: runs-on: ubuntu-latest name: lint steps: - uses: actions/checkout@v3 - name: Install mdbook-linkcheck run: | mkdir mdbook-linkcheck curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck chmod +x `pwd`/mdbook-linkcheck/mdbook-linkcheck echo `pwd`/mdbook-linkcheck >> $GITHUB_PATH - name: Run linkcheck run: mdbook-linkcheck --standalone build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Install toolchain uses: dtolnay/rust-toolchain@nightly - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install mdbook run: | mkdir mdbook curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook echo `pwd`/mdbook >> $GITHUB_PATH - name: Install mdbook-template run: | mkdir mdbook-template curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template echo `pwd`/mdbook-template >> $GITHUB_PATH - name: Build book run: mdbook build - name: Build docs run: RUSTDOCFLAGS="--enable-index-page -Zunstable-options" cargo +nightly doc --all --no-deps - name: Move docs to book folder run: | mv target/doc target/book/docs - name: Archive artifact shell: sh run: | chmod -c -R +rX "target/book" | while read line; do echo "::warning title=Invalid file permissions automatically fixed::$line" done tar \ --dereference --hard-dereference \ --directory "target/book" \ -cvf "$RUNNER_TEMP/artifact.tar" \ --exclude=.git \ --exclude=.github \ . - name: Upload artifact uses: actions/upload-artifact@v3 with: name: github-pages path: ${{ runner.temp }}/artifact.tar retention-days: 1 if-no-files-found: error deploy: # Only deploy if a push to main if: github.ref_name == 'main' && github.event_name == 'push' runs-on: ubuntu-latest needs: [test, lint, build] # Grant GITHUB_TOKEN the permissions required to make a Pages deployment permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v2