Preview website on PR (#16) #103
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: Export Pluto notebooks & Deploy | |
permissions: | |
contents: write | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
concurrency: | |
group: export | |
cancel-in-progress: true | |
jobs: | |
build-and-deploy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Fall 23 source | |
uses: actions/checkout@v2 | |
- name: 🙌 Install Julia | |
uses: julia-actions/setup-julia@v1 | |
with: | |
version: "1" | |
- name: ⏱ Cache notebook states | |
uses: actions/cache@v2 | |
with: | |
path: _cache | |
key: ${{ runner.os }}-pluto_state_cache-v3-${{ hashFiles('**/Project.toml', '**/Manifest.toml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-pluto_state_cache-v3-${{ hashFiles('**/Project.toml', '**/Manifest.toml') }} | |
- name: ⏱ Cache .julia | |
uses: actions/cache@v2 | |
with: | |
path: ~/.julia | |
key: ${{ runner.os }}-dotjulia-v1-${{ hashFiles('**/Project.toml', '**/Manifest.toml') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-dotjulia-v1-${{ hashFiles('**/Project.toml', '**/Manifest.toml') }} | |
- name: 🪴 Generate site | |
run: julia --project=pluto-deployment-environment -e ' | |
import Pkg; | |
Pkg.instantiate(); | |
import PlutoPages; | |
PlutoPages.generate("."; html_report_path="generation_report.html")' | |
- name: 📰 Upload site generation report | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
path: generation_report.html | |
- name: 🔀 Combine semesters into single site | |
run: | | |
mkdir www | |
mv _site www/Fall23 | |
mv extra_outputs/* www | |
- name: 🚀 Deploy to GitHub Pages (main) | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
uses: JamesIves/github-pages-deploy-action@releases/v3 | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BRANCH: output | |
FOLDER: www | |
CLEAN_EXCLUDE: | | |
previews/* | |
- name: Deploy PR preview | |
if: github.event_name == 'pull_request' && github.repository == github.event.pull_request.head.repo.full_name # if this build is a PR build and the PR is NOT from a fork | |
uses: JamesIves/github-pages-deploy-action@releases/v3 | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BRANCH: output | |
FOLDER: www | |
TARGET_FOLDER: "previews/PR${{ github.event.number }}" # The website preview is going to be stored in the previews subfolder |