Release Process#
This guide describes the Apache TVM TIRx release workflow for creating a release candidate, staging artifacts on ASF SVN, finalizing the release tag, and publishing release artifacts.
Prerequisite
The release manager sets the following variables before running these steps:
export TIRX_VERSION="v0.1.0-rc0"
export TIRX_RELEASE_VERSION="v0.1.0"
export ASF_USERNAME="your-apache-username"
Tools:
git,svn,gpg,tar, andshasum.An ASF account and a signing key published in the project’s
KEYSfile.
Pre-release checklist (Step 0)#
Before running the steps below, prepare the candidate tag and release thread.
Keep the package version consistent in pyproject.toml (project.version),
CMakeLists.txt (TVM_TIRX_VERSION), and python/tvm_tirx/libinfo.py
(__version__). Tags do not update these fields automatically.
Step 0.1. Tag the candidate $TIRX_VERSION on
GitHub at the reviewed commit.
Use the intended package version, such as 0.1.0, in all three files.
Step 0.2. Open a release tracking issue. Call the release vote once the artifacts below are staged and verified.
Step 1. Create Release Candidate#
This builds and signs the source release artifacts under
tvm-tirx-$TIRX_VERSION/. Use a fresh release workspace:
_make_tarball() {
local _ver="$1"
local _workdir="tvm-tirx-$_ver-release-files"
local _release_dir="tvm-tirx-$_ver"
local _source_dir="apache-tvm-tirx-$TIRX_RELEASE_VERSION"
local _tarball="apache-tvm-tirx-src-$TIRX_RELEASE_VERSION.tar.gz"
mkdir -p "$_workdir" "$_release_dir"
(
cd "$_workdir"
git clone --recursive --branch "$_ver" https://github.com/apache/tvm-tirx.git "$_source_dir"
tar --exclude=.git --exclude=.gitignore --exclude=.gitattributes \
--exclude=.gitmodules -czf "$_tarball" "$_source_dir"
gpg --armor --output "$_tarball.asc" --detach-sig "$_tarball"
shasum -a 512 "$_tarball" > "$_tarball.sha512"
gpg --verify "$_tarball.asc" "$_tarball"
shasum -a 512 -c "$_tarball.sha512"
)
mv "$_workdir/$_tarball" "$_workdir/$_tarball.asc" "$_workdir/$_tarball.sha512" "$_release_dir/"
}
_upload_to_apache_dev_svn() {
local _ver="$1"
local _release_dir="tvm-tirx-$_ver"
svn checkout --depth=files https://dist.apache.org/repos/dist/dev/tvm svn-tvm-dev
cp -R "$_release_dir" svn-tvm-dev/
(
cd svn-tvm-dev
svn add "$_release_dir"
svn commit --username "$ASF_USERNAME" -m "Add TIRx $_ver"
)
}
_make_tarball "$TIRX_VERSION"
_upload_to_apache_dev_svn "$TIRX_VERSION"
Download the staged archive, verify its signature and checksum, and build and test the extracted sources using Build from Source and Reproduce CI/CD. Check that licenses and recursive submodule sources are included. The artifact uses its final filename from the start so its checksum and signature survive promotion.
Call the vote on dev@tvm.apache.org with the candidate tag, commit, artifact
URL, signing-key information, and release notes. Follow the ASF voting rules and record
the result in the release thread.
Step 2. Conclude Release#
After the vote passes, conclude the vote, publish wheels, finalize the release tag, and bump the development version.
Step 2.1. Announce the voting results by opening a [RESULT][VOTE] issue on
the issue tracker.
Issue notifications are mirrored to discuss-archive@tvm.apache.org;
post the result to dev@tvm.apache.org as well.
Step 2.2. Publish PyPI wheels with the publication workflow. See Reproduce CI/CD for how wheels are built with cibuildwheel.
Step 2.3. Tag the approved candidate commit as the final version:
git clone -o upstream https://github.com/apache/tvm-tirx.git tvm-tirx-release
(
cd tvm-tirx-release
git fetch upstream --tags
git tag -a "$TIRX_RELEASE_VERSION" "${TIRX_VERSION}^{commit}" -m "Release $TIRX_RELEASE_VERSION"
git push upstream "$TIRX_RELEASE_VERSION"
)
Keep the candidate tag for traceability. Then create a version-bump branch and
set all three version fields from Step 0 to the next development version
(for example, 0.1.1.dev0 after 0.1.0):
cd tvm-tirx-release
git switch -c bump-version upstream/main
"${EDITOR:-vi}" pyproject.toml CMakeLists.txt python/tvm_tirx/libinfo.py
git add pyproject.toml CMakeLists.txt python/tvm_tirx/libinfo.py
git commit -m "Bump development version after $TIRX_RELEASE_VERSION"
git push -u upstream bump-version
Open a pull request for the version bump.
Step 3. Upload Release Artifacts#
After the release is final, copy the approved RC artifacts into dist/release
under the final version directory, preserving the files unchanged:
svn copy \
"https://dist.apache.org/repos/dist/dev/tvm/tvm-tirx-$TIRX_VERSION" \
"https://dist.apache.org/repos/dist/release/tvm/tvm-tirx-$TIRX_RELEASE_VERSION" \
--username "$ASF_USERNAME" -m "Release TIRx $TIRX_RELEASE_VERSION"
Verify the public downloads, update the download page and release notes, and announce the release to the community.