We're excited to announce a major improvement to our release process: continuous releases for the Tuist CLI, Server, and macOS app. This change represents a key step in reducing the dependency of our contributors and users on the project maintainers.

What's Changed

Previously, releasing new versions of Tuist required manual intervention from maintainers. This created bottlenecks and delays in getting new features and fixes to users. Now, we've implemented an automated release pipeline that:

  • Automatically detects releasable changes using git cliff, a changelog generator that understands conventional commits
  • Triggers releases on every push to main when there are meaningful changes to release
  • Generates changelogs automatically based on commit messages, properly categorized and formatted
  • Handles the entire release process including building, packaging, creating GitHub releases, and updating Homebrew formulas

How It Works

Each component (CLI, Server, and macOS app) now has its own release pipeline that:

  1. Uses git cliff to analyze commits since the last release
  2. Filters commits by scope (e.g., feat(cli): for CLI changes, feat(app): for app changes)
  3. Determines if there are releasable changes by comparing with the current changelog
  4. Automatically calculates the next version number
  5. Builds and releases the component if changes are detected

Benefits for Contributors

  • Faster feedback loop: Your contributions reach users as soon as they're merged
  • No waiting for maintainers: Releases happen automatically when criteria are met
  • Transparent process: The changelog clearly shows what changed in each release
  • Better commit discipline: Encourages meaningful commit messages that translate to clear release notes

Benefits for Users

  • More frequent updates: Get access to new features and fixes faster
  • Predictable releases: Every meaningful change triggers a release
  • Clear communication: Automatically generated changelogs show exactly what changed
  • Stable releases: Only changes that pass all tests and checks are released

Technical Details

We're using git cliff with custom configurations for each component:

  • CLI: Filters commits with (cli) scope or no scope
  • Server: Filters commits with (server) scope
  • App: Filters commits with (app) scope

The pipelines run on GitHub Actions and handle everything from version bumping to updating package managers like Homebrew.

This automation represents our commitment to making Tuist more accessible and reducing barriers for both contributors and users. We believe that great developer tools should be easy to contribute to and quick to deliver value.

A diagram showing the continuous release flow from commit to release

Supercharge your Swift app development

Get started