Tags: jefflester/minitrino
Tags
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.
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>
PreviousNext