name: Deploy Docs on: push: branches: - 'main' # Allows running the action manually. workflow_dispatch: env: CARGO_TERM_COLOR: always RUSTDOCFLAGS: --html-in-header header.html NIGHTLY_TOOLCHAIN: nightly # Sets the permissions to allow deploying to Github pages. permissions: contents: read pages: write id-token: write # Only allow one deployment to run at a time, however it will not cancel in-progress runs. concurrency: group: "pages" cancel-in-progress: false jobs: build-and-deploy: runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Checkout uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} - name: Install Linux dependencies uses: ./.github/actions/install-linux-deps with: wayland: true xkb: true # This does the following: # - Replaces the docs icon with one that clearly denotes it's not the released package on crates.io # - Adds a meta tag that forces Google not to index any page on the site. - name: Pre-docs-build run: | sed -i.bak "s/icon.png/icon-docs-dev.png/" src/lib.rs echo "" > header.html - name: Build docs env: # needs to be in sync with [package.metadata.docs.rs] RUSTDOCFLAGS: -Zunstable-options --cfg=docsrs run: cargo doc --all-features --no-deps -p bevy -Zunstable-options -Zrustdoc-scrape-examples # This adds the following: # - A top level redirect to the bevy crate documentation # - A CNAME file for redirecting the docs domain to the API reference # - A robots.txt file to forbid any crawling of the site (to defer to the docs.rs site on search engines). - name: Finalize documentation run: | echo "" > target/doc/index.html echo "dev-docs.bevyengine.org" > target/doc/CNAME echo "User-Agent: *\nDisallow: /" > target/doc/robots.txt rm target/doc/.lock - name: Upload site artifact uses: actions/upload-pages-artifact@v3 with: path: target/doc - name: Deploy to Github Pages id: deployment uses: actions/deploy-pages@v4