name: Export Pluto notebooks on: push: branches: - main - master workflow_dispatch: # When two jobs run in parallel, cancel the older ones, to make sure that the website is generated from the most recent commit. concurrency: group: pluto-export cancel-in-progress: true # This action needs permission to write the exported HTML file to the gh-pages branch. permissions: contents: write # (all other permission fields default to "none") jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout this repository uses: actions/checkout@v7 - name: Install Julia uses: julia-actions/setup-julia@v3 with: version: "1" # This will automatically pick the latest Julia version - name: Cache Julia artifacts & such uses: julia-actions/cache@v3 with: cache-registries: "true" # We set up a folder that Pluto can use to cache exported notebooks. If the notebook file did not change, then Pluto can take the exported file from cache instead of running the notebook. - name: Set up notebook state cache uses: actions/cache@v6 with: path: pluto_state_cache key: ${{ runner.os }}-pluto_state_cache-v2-${{ hashFiles('**/Project.toml', '**/Manifest.toml', '.github/workflows/*' ) }}-${{ hashFiles('**/*jl') }} restore-keys: | ${{ runner.os }}-pluto_state_cache-v2-${{ hashFiles('**/Project.toml', '**/Manifest.toml', '.github/workflows/*' ) }} - name: Ignore notebook state cache in export run: echo 'pluto_state_cache' >> .gitignore - name: Run & export Pluto notebooks run: | julia -e 'using Pkg Pkg.activate(mktempdir()) Pkg.add([ Pkg.PackageSpec(name="PlutoSliderServer", version="1"), ]) import PlutoSliderServer PlutoSliderServer.github_action("."; Export_cache_dir="pluto_state_cache", Export_baked_notebookfile=false, Export_baked_state=false, # more parameters can go here )' - name: Deploy to gh-pages uses: JamesIves/github-pages-deploy-action@releases/v4 with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages folder: . single-commit: true