-
ensure your git repo is up to date with
main -
create a branch
v1.x, where x is the version being releasedgit checkout -b v1.4git push origin v1.4
-
mark the current release as the new release in the
mainbranch- switch your repo back to
main:git checkout main - edit QUARTO_VERSION line in
/configurationto be the new version (e.g.1.5) - push the changes to the
mainbranch - kick off a v1.5 build in GHA: https://github.com/quarto-dev/quarto-cli/actions/workflows/create-release.yml
- ensure the build completes successfully
- switch your repo back to
-
mark v1.4 release as stable
- go to https://github.com/quarto-dev/quarto-cli/releases
- find the latest v1.4 release and edit, (eg https://github.com/quarto-dev/quarto-cli/releases/edit/v1.4.549)
- at the bottom of the page, there will be two checkboxes, "Set as pre-release" and "Set as latest release":
- "Set as pre-release" should be unchecked, and
- "Set as latest release" should be checked.
-
once the v1.5 build completes, edit the quarto.org website configuration on https://github.com/quarto-dev/quarto-web to reflect the new version
- this means flipping the profile group configuration in
_quarto.ymlfrom[rc,prelease]to[prerelease,rc]- push the changes to the
mainbranch
- push the changes to the
- this means flipping the profile group configuration in
-
quarto-dev/quarto-web changes
- wait for the downloads file to be automatically updated by the GitHub Action on https://github.com/quarto-dev/quarto-web
- wait for https://github.com/quarto-dev/quarto-web/actions/workflows/update-downloads.yml to run (it runs every 15 minutes, or you can manually trigger it)
- This workflow run rendered the website: https://github.com/quarto-dev/quarto-web/actions/runs/12016407762
- This workflow run did not: https://github.com/quarto-dev/quarto-web/actions/runs/12016128695
- Ensure the run just triggered looks like the former
- Ensure the header in https://quarto.org has the new version number in its 'generator' meta tag
- Ensure the download links on https://quarto.org/docs/get-started/ and https://quarto.org/docs/download/ point to the stable and prerelease versions respectively
- wait for https://github.com/quarto-dev/quarto-web/actions/workflows/update-downloads.yml to run (it runs every 15 minutes, or you can manually trigger it)
- In the
prereleasebranch:- update the highlights files
- create
docs/prerelease/1.5/{_highlights, index}.qmdfiles based on the ones from the previous release - change
docs/prerelease/_highlights.qmdso its include points to the new version-specific_highlights.qmdfile (here, 1.5) - change
docs/prerelease/_highlights-release.qmdso its include points to the new version-specific_highlights.qmdfile (here, 1.4)
- create
- add the stable version to the older downloads list by editing /docs/download/_download-older.yml
- run
quarto run tools/release-notes.Rto generate the release notes and bumpversionin_quarto.yml(to released version) and_quarto-prerelease-docs.yml(to next prerelease)
- update the highlights files
- push the changes to
prereleasebranch, ensure they build correctly - Merge the
prereleasebranch intomain, push tomain- ensure the build completes successfully
- verify
_quarto.ymlversiononmainreflects the released version (e.g.'1.4') — needed forprereleaseshortcodes to resolve blog links and pre-release callouts
- Merge
mainintoprerelease, push toprerelease- ensure the build completes successfully
- Create new tag on
mainwith stable release version number (here,v1.4) to mark when the new main site version went live-
git tag -a v1.4 -m "v1.4" -
git push origin v1.4
-
- Verify version numbers were updated by
tools/release-notes.R-
_quarto.ymlversionshould be the released version (e.g.'1.4') -
_quarto-prerelease-docs.ymlversionshould be the next prerelease (e.g.'1.5')
-
- publish the release blog post that should exist in https://github.com/quarto-dev/quarto-web/tree/main/docs/blog/posts
- Create a branch off of
main(to trigger our PR automation to make the corresponding change toprerelease). - Removing the
draft: trueline in the metadata - Change the date to match the release date.
- Create a branch off of
- wait for the downloads file to be automatically updated by the GitHub Action on https://github.com/quarto-dev/quarto-web
-
Update https://github.com/quarto-dev/quarto-cli/blob/main/CITATION.cff
-
Packaging and package managers, etc
- chocolatey (Only once quarto.org download page is updated with the new release)
- https://github.com/quarto-dev/quarto-release-bundles/actions/workflows/build-and-publish-choco.yaml
- In "Build Choco package & Publish" workflow page, click "Run Workflow"
- Check the "Whether to publish or not the package on chocolatey" checkbox
- Wait for @cderv to receive email confirmation, no action needed
- pypi
- Go to the quarto-cli-pypi repo
- Update
version.txtto be the version you'd like to publish and commit - Go to actions
- Select 'Publish Quarto PyPi'
- Click "Run Workflow"
- Publishing Test: You may elect to publish to test.pypi first by unchecking the
Production Releaseoption- Once complete, trest using
python3 -m pip install --index-url https://test.pypi.org/ --extra-index-url https://pypi.org/ quarto-cli
- You may have to run this command twice as the first time may report the package not found and cause cache invalidation. The next try should succeed.
- Published to: https://test.pypi.org/project/quarto-cli/
- Once complete, trest using
- Publishing Production: You may elect to publish to production pypyi by checking the
Production Releaseoption- Published to: https://pypi.org/project/quarto-cli/
- Publishing Test: You may elect to publish to test.pypi first by unchecking the
- Take a sip of tea ☕, bask in the glory of automation.
- Others installers
- Cloudsmith: Automatically published by Build Installers workflow. No action needed.
- See cloudsmith-publishing.md for manual republishing if needed.
- conda-forge: An automated PR will be created to update the package version in the feedstock <github.com/conda-forge/quarto-feedstock>
- This is community maintained, so no action is needed from us - except maybe helping if there are issues with the PR. We are assigned as reviewers to the PR.
- Winget: An automated PR will be created by a winget bot in <github.com/microsoft/winget-pkgs/>.
- This is community maintained, so no action is needed from us.
- Scoop: This will be updated automatically in the manifests repo. No action is needed from us. Maintained as personal project by @cderv.
- Homebrew: This is automated through an homebrew bot to update the cask https://github.com/Homebrew/homebrew-cask
- Cloudsmith: Automatically published by Build Installers workflow. No action needed.
- chocolatey (Only once quarto.org download page is updated with the new release)