diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml index ba1369f97..a3f2225da 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,36 @@ 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 worktrees for both the `main` branch and the highest tag. + git worktree add --detach wt-main main + git worktree add --detach wt-tag "${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 + + # Delete existing book builds. + rm -rf wt-gh-pages/HEAD wt-gh-pages/latest-release + + # Build the book for both `main` and the highest tag. + mdbook build --dest-dir wt-gh-pages/HEAD wt-main + mdbook build --dest-dir wt-gh-pages/latest-release wt-tag + + cd wt-gh-pages + + # Add an index in the root to redirect to the latest release. + cp ../redirect.html index.html + # Commit and push. + git add HEAD latest-release index.html 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 @@ - -
- -