Session 6
Saturday, the 7th of February, 2026
_publish.yml and repository configuration._publish.yml and repository configuration.This session explores comprehensive publishing strategies for Quarto projects, covering multiple deployment platforms, automation workflows, and best practices for different use cases.
By the end of this session, participants will be able to:
| Service | Best For | Key Features |
|---|---|---|
| Quarto Pub | Public content, getting started | Free, simple, 100MB limit |
| GitHub Pages | Open source projects | Git integration, custom domains |
| Netlify | Professional sites | Advanced features, previews |
| Posit Connect | Enterprise/organisations | Security, authentication |
| Other Services | Custom requirements | Firebase, S3, self-hosted |
Rule of thumb
Start with Quarto Pub for learning, use GitHub Pages for projects, Netlify for production sites
Authenticate.
That’s it!
Your site is live at https://username.quarto.pub/project-name.
_publish.ymlCreated automatically when you first publish:
Objective: Publish the branded project you created in Session 5 using Quarto Pub.
Example Code (reused from Session 5):
quarto publish quarto-pub.✅ You’ve successfully completed the exercise if you can:
docs/quarto publish
docs/quarto publish gh-pagesSetup Source Branch
Create Workflow File: .github/workflows/publish.yml.
yaml
name: Quarto Publish
on:
workflow_dispatch:
push:
branches: main
jobs:
build-deploy:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
- name: Render and Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
target: gh-pages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Objective: Publish the branded project you created in Session 5 using GitHub Pages.
Example Code (reused from Session 5):
Choose one method and deploy your project:
_quarto.yml..nojekyll..gitignore.quarto publish gh-pages.✅ You’ve successfully completed the exercise if you can:
Pros:
Cons:
Pros:
Cons:
Important
The _freeze/ directory stores computational results and must be committed to Git.
Commit to Git:
.qmd)._freeze/ directory.Don’t Commit:
_site/, _book/, or _manuscript/.Use a tool to manage your R
renv for R.uv, pip, or conda for Python.Pkg for Julia.Benefits: Version control, easy updates, namespace management (yourorg/extension).
Benefits: No GitHub required, works offline, controlled distribution.
Prepare your extension:
v1.0.0).Tip
See Distributing Extensions for complete details.