Merge pull request #8 from binhtran432k/ci/not-found-page #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build GitHub Pages | |
on: | |
push: | |
branches: ["main"] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
jobs: | |
build: | |
name: Build Static Site Generation | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
toolchain: | |
- stable | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Pages | |
uses: actions/configure-pages@v3 | |
- name: Cache all bin of Cargo | |
uses: actions/cache@v4 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
# The cache should be OS-specific | |
key: ${{ runner.os }}-website-cargo-bins-$PERSEUS_VERSION | |
- name: Setup Rust | |
run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} | |
# Only install the binaries if the cache doesn't have them | |
- name: Install Dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: cargo install perseus-cli --version $PERSEUS_VERSION | |
# Also cache all the other Cargo files, since plenty of CI runs won't involve different dependencies | |
- name: Cache other files Cargo | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
dist/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
- name: Build using Perseus | |
run: perseus export --release | |
- name: Hack Browser Router for Github Page | |
run: perseus export-error-page -c 404 -o dist/exported/404.html | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v1 | |
with: | |
path: ./dist/exported/ | |
deploy: | |
name: Deploy Github Pages | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} |