- Announce intention to make a release.
- Review outstanding pull requests and issues for showstoppers or easy wins. Address as many as possible.
- Fetch from
tectonic-typesetting
and create a new branchrelease-X.Y.Z
frommaster
. - Update deps:
cargo update && cargo test --all
, then commit changes. - Check Arch Linux PKGBUILD file for updates and merge locally if necessary:
curl 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=tectonic' >dist/arch/PKGBUILD
- Consider updating the mdbook version used in
dist/build-mdbook.sh
; releases listed here. - Backfill
CHANGELOG.md
from the Git history (which will include GitHub PR numbers, etc.) To view the history while skipping dependabot commits:git log --perl-regexp --author='^((?!dependabot).*)$' v${CURRENT_VERSION}..
- Update version number(s):
- Main version in
Cargo.toml
- Un-bump versions of crates like
tectonic_xdv
if they haven't updated. cargo build --release
to updateCargo.lock
as well. Commit with messageTentative version $version
- Main version in
- Push to GitHub and create a pull request.
- Examine the CI output. Fix any failures, committing any changes and re-pushing. No need to rewrite history at this juncture.
mkdir ~/tectonictmp; mv .envrc target $other_files ~/tectonictmp ; git clean -fxd
- Attempt to
cargo publish
. Fix anything that needs fixing, committing changes. - Do a
git rebase -i
to rewrite the history to make the version-bump commit the most recent one, rewording its commit message to remove the "Tentative". Re-push and re-CI if anything changed that might affect the build. - Download the new package from
https://crates.io/api/v1/crates/tectonic/$version/download. Put its
sha512 sum into
dist/arch/PKGBULD
and update the package version and release in that file. Rewrite the version-bump commit to include the changes (git commit --amend -C HEAD
). git tag v${version}
and, if necessary,git tag submodule-v${version}
.- Back to development:
- Bump main version in
Cargo.toml
and crates liketectonic_xdv
. cargo build
to update the lockfile- Commit with message
Back to development, version $version
.
- Bump main version in
- Re-push to the release PR branch and wait for CI.
- Merge, assuming nothing bad happened with the CI.
- Pull the new
master
locally to get GitHub’s merge commit. git push --tags
, which should trigger some automated release processes. Monitor them.- Create new release on GitHub, filling with contents of
CHANGELOG.md
. - Update conda-forge package — the bot should notice the new version on Crates.io and automatically file a pull request quickly.
- Announce on forum.
- Update website.
- Do we need to take any further steps to release the AppImage?
- Uploading artifacts like static binaries to the GitHub release
cargo publish
from CI, not manually (need some way to test-publish first).