Português (Portuguese)
Appearance
Português (Portuguese)
Appearance
Tuist uses a continuous release system that automatically publishes new versions whenever meaningful changes are merged to the main branch. This approach ensures that improvements reach users quickly without manual intervention from maintainers.
We continuously release three main components:
Each component has its own release pipeline that runs automatically on every push to the main branch.
We use Conventional Commits to structure our commit messages. This allows our tooling to understand the nature of changes, determine version bumps, and generate appropriate changelogs.
Format: type(scope): description
| Type | Descrição | Version Impact | Exemplos |
|---|---|---|---|
feat | New feature or capability | Minor version bump (x.Y.z) | feat(cli): add support for Swift 6 |
fix | Bug fix | Patch version bump (x.y.Z) | fix(app): resolve crash when opening projects |
docs | Documentation changes | No release | docs: update installation guide |
style | Code style changes | No release | style: format code with swiftformat |
refactor | Code refactoring | No release | refactor(server): simplify auth logic |
perf | Performance improvements | Patch version bump | perf(cli): optimize dependency resolution |
test | Test additions/changes | No release | test: add unit tests for cache |
chore | Maintenance tasks | No release | chore: update dependencies |
ci | CI/CD changes | No release | ci: add workflow for releases |
Breaking changes trigger a major version bump (X.0.0) and should be indicated in the commit body:
feat(cli): change default cache location
BREAKING CHANGE: The cache is now stored in ~/.tuist/cache instead of .tuist-cache.
Users will need to clear their old cache directory.Each component uses git cliff to:
When releasable changes are detected:
Each component only releases when it has relevant changes:
(cli) scope or no scope(app) scope(server) scopeSince commit messages directly influence release notes, it's important to write clear, descriptive messages:
fix(cli): resolve build cache issue (#1234)For breaking changes, include BREAKING CHANGE: in the commit body:
feat(cli): change cache directory structure
BREAKING CHANGE: Cache files are now stored in a new directory structure.
Users need to clear their cache after updating.The release workflows are defined in:
.github/workflows/cli-release.yml - CLI releases.github/workflows/app-release.yml - App releases.github/workflows/server-release.yml - Server releasesEach workflow:
You can monitor releases through:
This continuous release approach provides:
If a release fails:
For urgent fixes that need immediate release:
While the CLI and Server follow the continuous release process described above, the iOS app is an exception due to Apple's App Store review process:
The iOS app still follows the same commit conventions and uses git cliff for changelog generation, but the actual release to users happens on a less frequent, manual schedule.