tauri/.github/RELEASING.md
Amr Bashir 5ff0bbc547
docs: add RELEASING.md handbook (#11026)
* docs: add RELEASING.md handbook

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>

* Update .github/RELEASING.md

---------

Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>
2024-09-17 07:38:15 -03:00

3.4 KiB

Tauri Releasing Handbook

This handbook contains information about our release pipeline and how to deal with common issues. This document is mainly intended for team members responsible for maintaining the project.

Covector

We use covector to manage our version bumps and release pipeline. It can be configured in .changes/config.json which includes how each package should be published step by step.

Some packages can't be published directly using covector as it requires to be built on a matrix of platforms such as tauri-cli prebuilt binaries which is published using publish-cli-rs.yml and @tauri-apps/cli native Node.js modules which is published using using publish-cli-js.yml both of which are triggered after covector has created a github release for both of them, see Trigger @tauri-apps/cli publishing workflow and Trigger tauri-cli publishing workflow steps in covector-version-or-publish.yml

Version Pull Request

On each pull request merged, covector-version-or-publish.yml workflow will run, and:

When there're change files inside .changes folder and they're not all included in pre.json (usually this is only when we are in -alpha to -rc phase), it will open/update an Apply Version Updates From Current Changes PR (https://github.com/tauri-apps/tauri/pull/11029 for example) that bumps all packages based on current existing change files and generate CHANGELOG.md entries. see Create Pull Request With Versions Bumped step in covector-version-or-publish.yml.

Otherwise, covector will start to publish packages configured in .changes/config.json.

Releasing and Publishing

Releasing can be as easy as merging the version pull request but here is a checklist to follow:

  • Double check that every package is bumped correctly and there are no accidental major or minor being released unless that is indeed the intention.
  • Make sure that there are no pending or unfinished covector-version-or-publish.yml workflow runs.
  • Sign the Version PR before merging as we require signed commits
    • git fetch --all
    • git checkout release/version-updates
    • git commit --amend -S
    • git push --force
  • Approve and merge the version pull request

Publishing failed, what to do?

It is possible and due to many factors that one or many packages release can fail to release, there is no reason to panic, we can fix this.

Did all of the packages fail to release?

  • yes?
    • git checkout -b revert-branch
    • git revert HEAD~1
  • no?
    • git checkout -b revert-branch
    • git revert HEAD~1 --no-commit
    • Edit the commit and revert only changes related to packages that failed to publish
    • git revert --continue

Then:

  • Make a pull request with reverted changes, get it approved and merged
  • Fix the issue that caused releases to fail in another PR, get it approved and merged
  • Repeat the release process again.