diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml index ba1369f97..700757210 100644 --- a/.github/workflows/book.yml +++ b/.github/workflows/book.yml @@ -2,13 +2,14 @@ name: Book on: push: branches: [main] + tags: ['*'] permissions: contents: write # Adapted from: # https://github.com/rust-lang/mdBook/wiki/Automated-Deployment%3A-GitHub-Actions#github-pages-deploy jobs: deploy: - if: github.repository == 'rust-osdev/uefi-rs' + # if: github.repository == 'rust-osdev/uefi-rs' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -21,24 +22,32 @@ jobs: echo `pwd`/mdbook >> $GITHUB_PATH - name: Deploy GitHub Pages run: | - cd book - mdbook build - git worktree add gh-pages gh-pages + # Configure git user so that `git commit` works. git config user.name "Deploy from CI" git config user.email "" - cd gh-pages + + # Get the highest `uefi` release tag. + highest_tag="$(git tag --list | grep uefi-v | sort -V | tail -1)" + + # Create a worktree for the tag. + git worktree add wt-tag refs/tags/"${highest_tag}" + + # Create a worktree for the `gh-pages` branch. + git worktree add wt-gh-pages gh-pages + # Delete the ref to avoid keeping history. - git update-ref -d refs/heads/gh-pages - # Place the book under a "HEAD" directory so that we can later - # add other versions (e.g. "stable" or "v0.17") without breaking - # URLs. - rm -rf HEAD - mv ../book HEAD - git add HEAD - # Add an index in the root to redirect to HEAD. If we eventually - # serve multiple versions, this can be changed to a real index. - cp ../head_redirect.html index.html - git add index.html + git -C wt-gh-pages update-ref -d refs/heads/gh-pages + + # Build the book for the tag. Don't use `--dest-dir` because it will + # delete the destination directory including the worktree checkout's + # ".git". + mdbook build wt-tag/book + # Copy output to the destination directory. Note the "/." is needed at + # the end of the source path so that hidden files are included. + cp -r wt-tag/book/book/. wt-gh-pages + # Commit and push. + cd wt-gh-pages + git add . git commit -m "Deploy $GITHUB_SHA to gh-pages" git push --force diff --git a/book/head_redirect.html b/book/head_redirect.html deleted file mode 100644 index 7c75cfd02..000000000 --- a/book/head_redirect.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -Redirecting to latest documentation - - - -Redirecting to ./HEAD...