Tutorial · Part 7 of 7

Deploy

One workflow file, push to main, done.

  1. Add the workflow

    .github/workflows/page.yml — this is the exact file both official templates ship, and what this site itself runs on:

    
                                    name: Build & Deploy
    
                                    on:
                                      push:
                                        branches: ["main"]
    
                                    permissions:
                                      contents: write      # commit files the build regenerated
                                      pages: write
                                      id-token: write
    
                                    jobs:
                                      build-and-deploy:
                                        runs-on: ubuntu-latest
                                        environment:
                                          name: github-pages
                                          url: ${{ steps.deployment.outputs.page_url }}
                                        steps:
                                          - name: Checkout
                                            uses: actions/checkout@v7
    
                                          - name: KiriBuild
                                            uses: php-kirigami/kiribuild@v2
                                            with: { node-version: '24' }
    
                                          - name: Commit regenerated files
                                            shell: bash
                                            run: |
                                              if [ -n "$(git status --porcelain)" ]; then
                                                git config user.name  "kirigami[bot]"
                                                git config user.email "kirigami-bot@users.noreply.github.com"
                                                git add -A
                                                git commit -m "chore: update generated files [skip ci]"
                                                git push
                                              else
                                                echo "Nothing to commit."
                                              fi
                                    
                                          - name: Upload artifact
                                            uses: actions/upload-pages-artifact@v5
                                            with: { path: dist }
    
                                          - name: Deploy to GitHub Pages
                                            id: deployment
                                            uses: actions/deploy-pages@v5
                                

    kiribuild@v2 does exactly three things: install Node 24, install the kiri CLI, run kiri export. Checkout, the commit-back, uploading the artifact, and the Pages deploy step are yours to wire — that's deliberate, so the action stays small and the workflow stays readable. It's a real published action — listed on the GitHub Marketplace, findable straight from a workflow file's Actions sidebar, not just a repo you happen to reference.

    The commit-back step matters the moment a project uses the image pipeline: kiri export can write new resized derivatives into src/images/ as a side effect, and those are meant to be committed — otherwise every future CI run regenerates them from scratch instead of finding them already there. [skip ci] in the commit message stops that commit from triggering an infinite rebuild loop. A project with no image: block has nothing to regenerate, so the step just logs "Nothing to commit." and moves on — harmless either way, so it's simpler to always include it than to decide per-project whether it's needed.

  2. Turn on Pages, once

    In the repo's settings: Settings → Pages → Source: GitHub Actions. No branch to pick, no folder — the workflow above handles the whole thing from here on.

  3. Push

    
                                    git add -A
                                    git commit -m "Studio Plié: first deploy"
                                    git push
                                

    Every push to main re-runs kiri export and republishes dist/. Locally, the same export step is one command:

    
                                    npx kiri export
                                

NOTE

That's the whole tutorial. Studio Plié has pages, real content, a theme with dark mode, a resized image pipeline, full SEO metadata, and now a live deploy on every push — the same seven pieces every Kirigami site is made of, including this one.