Skip to content

Tags: jefflester/minitrino

Tags

3.1.0

Toggle 3.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Release 3.1.0

# Minitrino Release Notes: 3.1.0

## Release Overview

Minitrino 3.1.0 is a feature release that adds local source-code builds, a safer and more interactive library upgrade experience, and a data-driven image build pipeline. It also bumps the default cluster version to 479 (Java 25) and overhauls the CI/test infrastructure.

**Key improvements:**

- New `provision --source-code` option to build images from a local Trino or Starburst source repository instead of a published tarball
- Automatic library version-sync prompts with non-destructive, backup-based installs (previous library is retained, not overwritten)
- New global `--yes` / `-y` flag (and `MINITRINO_ASSUME_YES`) to auto-accept prompts for CI and scripted workflows
- Default cluster version bumped from 476 to 479, with a data-driven Java version matrix (Java 25)
- Restructured, data-driven image build pipeline (declarative plugin removelist and Java matrix)
- Automatic resolution of the latest Starburst patch release
- Internal package layout flattened from `src/cli/minitrino` to `src/minitrino`

**Table of Contents:**

- [CLI Changes and Additions](#cli-changes-and-additions)
- [Library Changes and Additions](#library-changes-and-additions)
- [Other](#other)

## CLI Changes and Additions

### Build Images From Local Source Code

Added a `-s` / `--source-code` option to `minitrino provision`. Instead of downloading a published Trino/Starburst tarball, Minitrino can now build the cluster image directly from local Maven build output:

```sh
minitrino provision --source-code /path/to/trino
```

The path may be either a repository root (Minitrino locates the Maven build output under `core/trino-server/target/` or `core/starburst-enterprise/target/`) or a direct distribution directory. The distribution type and version are auto-detected from the build output; if you also pass `--image`, Minitrino validates that it matches the detected distribution and errors on a mismatch. This is intended for developers testing unreleased or locally patched builds of Trino/Starburst.

### Interactive Library Version Syncing

When the CLI and library versions don't match, Minitrino now prompts to sync automatically rather than only printing a warning:

```text
CLI version 3.1.0 does not match library version 3.0.0. Sync library to 3.1.0? [Y/N]
```

- If you accept, the library is replaced with the matching version.
- If you decline, the prompt is suppressed for 24 hours before asking again.
- If no library is installed at all, Minitrino prompts to install one; declining raises an error since most commands require a library.

### Safer, Non-Destructive Library Installs

`minitrino lib-install` (and the automatic sync above) no longer destructively overwrites the existing library. The current library is moved aside to `~/.minitrino/lib.bak.<UTC timestamp>` before the new one is installed:

- If the download or extraction fails, the previous library is automatically restored from the backup.
- After a successful install, old backups are pruned, retaining the two most recent.

This replaces the previous behavior, which deleted all modules and snapshots in place with no recovery path.

### `--yes` / `-y` Global Flag

Added a global `-y` / `--yes` flag that assumes "yes" for all interactive prompts, equivalent to setting `MINITRINO_ASSUME_YES=1`. This is useful for CI pipelines and scripted workflows where the new sync/install prompts would otherwise block.

## Library Changes and Additions

### Default Cluster Version Bumped to 479

The default `CLUSTER_VER` is now 479 (previously 476), which runs on Java 25.

### Data-Driven Image Build Pipeline

The image build pipeline under `src/lib/image/` was restructured and made data-driven:

- **Java version matrix** (`data/java-matrix.json`): the correct JDK is now selected from a declarative Trino-version-to-Java mapping (Java 23 for 464–467, Java 24 for 468–475, Java 25 for 476+).
- **Declarative plugin removelist** (`data/plugin-removelist.txt`): plugins to strip from the image are now listed in a data file rather than hardcoded in the pruning script. `KEEP_PLUGINS` continues to override removals (and `KEEP_PLUGINS=ALL` keeps everything).
- The `src/lib/image/src/` nesting was flattened to `src/lib/image/`, and the tarball downloader was renamed (`downloader.py` → `download_tarball.py`).

### Dockerfile Support for Local Source Builds

The Dockerfile now supports two build sources selected via the `DIST_SOURCE` build arg: `download` (fetch a published tarball, the default) or `local` (stage a locally built distribution). This is what powers `provision --source-code`.

### Automatic Starburst Version Resolution

Added a utility that resolves the latest Starburst patch release for a given LTS base version by querying the Starburst S3 bucket (e.g. `479` → `479-e.8`), with a safe fallback when the lookup fails. This is used by version validation and CI so tests track the latest available patch automatically.

### Module Fixes

- **cache-service**: heap size raised to 2G.
- **mysql-event-listener**: startup now gated on MySQL health to avoid race conditions.
- **worker provisioning**: fixed a `put_archive` race by staging `/etc` before the container starts.

## Other

### CI/CD

- Rewrote the main CI workflow and added a `collect-failure-diagnostics` composite action to capture logs and state on test failures.
- Added an `update-version-files` workflow that automatically bumps `src/lib/version`, `pyproject.toml`, and `readme.md` when a new `MAJOR.MINOR.PATCH` release branch is pushed, replacing the previous `sync_version_files.py` pre-commit script.
- Removed the now-unused `pull-test-image` and `wait-for-test-release` actions.

### Testing

- Migrated the library test suite to pytest and added shared fixtures.
- Added a test watchdog to detect and recover from hung test runs.
- Reorganized the unit test tree to mirror the flattened package layout.

### Internal Package Restructure

The CLI package was moved from `src/cli/minitrino` to `src/minitrino`, and the `minitrino.core.*` subpackage was flattened into `minitrino.*` (e.g. `minitrino.core.context` → `minitrino.context`). This affects only direct imports of Minitrino internals; the `minitrino` CLI entry point is unchanged.

### Dependencies

- `click` bumped from 8.3.1 to 8.3.3.

0.0.0

Toggle 0.0.0's commit message
PR feedback

3.0.3

Toggle 3.0.3's commit message
Switch smoke test from macos-15 (arm64) to macos-13 (x64)

macos-15 arm64 runners have flaky Colima VM startup. macos-13 x64
runners have more stable Docker support via Colima.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

3.0.2

Toggle 3.0.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
3.0.2 (#142)

* ci(deps): bump actions/checkout from 5 to 6 in the github-actions group

Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>

* deps(deps): bump click from 8.1.8 to 8.3.1

Bumps [click](https://github.com/pallets/click) from 8.1.8 to 8.3.1.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](pallets/click@8.1.8...8.3.1)

---
updated-dependencies:
- dependency-name: click
  dependency-version: 8.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update version files to 3.0.2

* Update release workflow and auto-stage switcher.json in pre-commit

* Fix version sync to not corrupt ruff config and blacklist 3.0.0 docs

* Fix version selector to show actual version instead of hardcoded 'master'

* Add 3.0.2 release notes

* Update release notes with dependency updates

* Fix Click 8.2+ compatibility: handle removal of mix_stderr parameter

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jefflester <jefflester@users.noreply.github.com>

3.0.1

Toggle 3.0.1's commit message
Change from direct GitHub Actions interpolation to shell variable for…

… SEP license writing

3.0.0

Toggle 3.0.0's commit message
Update shell reference to work on Ubuntu

2.2.4

Toggle 2.2.4's commit message
Bump SQL Server to 2022-latest

2.2.3

Toggle 2.2.3's commit message
Add --type option to modules command

2.2.2

Toggle 2.2.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Update release.yaml

2.2.1

Toggle 2.2.1's commit message
Update release notes