Repository navigation
CI: build on macos-15, publish a Homebrew formula, read ~/.yaci-cli/devkit.properties - #198
Merged
Merged
Conversation
…s from ~/.yaci-cli/devkit.properties - CLI release and dev workflows build on macos-15 (macos-14 runners are being retired) - dev-release-cli dry runs the npm publish and the Homebrew install (local tap from this run's zips, brew test, start check); dev-release uses Earthly v0.8.16 like release.yml - release-cli publishes the formula to bloxbean/homebrew-tap: yaci-devkit for a final release, yaci-devkit-beta for a beta, nothing for a preview (same split as the npm dist-tags); both install the yaci-devkit command - ~/.yaci-cli/devkit.properties overrides the bundled application, node and download properties for the zip, npm and Homebrew installs; -D options and environment variables still win over it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The npm and Homebrew launchers passed -Dyaci.cli.plutus-costmodels-path, which overrode devkit.properties and environment variables. They now pass only the bundled config location (yaci.cli.bundled-config-dir), and application.properties uses it as the default for yaci.cli.plutus-costmodels-path - The macOS binary is built on macos-15 and needs macOS 15 or later: the Homebrew formula depends on macOS Sequoia, start.mjs exits with a clear message on older macOS, and the docs say macOS 15 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
build.yml and dev-release-cli.yml only build (Docker images without --push, CLI zips as workflow artifacts). release-cli.yml keeps buildAndPush: that job attaches the zips to the GitHub release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
macos-15 runners:
release-cli.ymlanddev-release-cli.ymlnow build onmacos-15, sincemacos-14runners are being retired. It's still Apple Silicon, so theyaci-devkit-macos-arm64npm package and themacos-ARM64zip names are unchanged.Dev workflows match release more closely:
dev-release.ymluses Earthly v0.8.16, likerelease.yml. It still only builds the Docker images and doesn't push them.dev-release-cli.ymldry runs the npm publish (npm publish --dry-run, with noid-tokenpermission).dev-release-cli.ymlalso dry runs the Homebrew install: it installs the formula from that run's zips through a local tap, runsbrew testand checks that the installedyaci-devkitanswers on port 10000.Homebrew publishing: a new
update-homebrewjob inrelease-cli.ymlpublishes tobloxbean/homebrew-tap, using the orgHOMEBREW_TAP_TOKEN. Releases map to formulas the same way npm maps them to dist-tags:yaci-devkitbrew install bloxbean/tap/yaci-devkit*-beta*yaci-devkit-betabrew install bloxbean/tap/yaci-devkit-beta*-preview*Both formulas install the
yaci-devkitcommand (yaci-devkit up, as with npm). They don't useconflicts_with: Homebrew 7 refuses to load a tap formula the user hasn't installed by name, so the first install would fail. Homebrew's link step already prevents both from owning the command, and it tells the user to runbrew unlink. The formula template lives in.github/scripts/homebrew-formula.sh, shared by the release job and the dry run.User overrides in
~/.yaci-cli/devkit.properties:application.properties,node.propertiesordownload.properties.-Doptions and environment variables still override it.yaci.cli.homepoints elsewhere.docker/application.properties.macOS 15 minimum: the binary built on macos-15 requires macOS 15 or later (
otoolshowsminos 15.0). GraalVM uses the build machine's macOS version as the minimum, and we can't vouch for macOS 14 with an older minimum forced in, so macOS 15 is now the stated requirement:depends_on macos: :sequoia, sobrew installrefuses on older macOS with a clear messagestart.mjsexits with "Yaci DevKit requires macOS 15 or later" on older macOS (before Darwin 24)The cost-models path can be overridden (Codex review): the npm launcher (since Fix npm publishing CI and native wallet signing #173) and the Homebrew wrapper passed
-Dyaci.cli.plutus-costmodels-path. That outrankeddevkit.propertiesand environment variables. They now pass only the bundled config location,-Dyaci.cli.bundled-config-dir, andapplication.propertiesuses it as the default:yaci.cli.plutus-costmodels-path=${yaci.cli.bundled-config-dir:./config}. The default is the same as before; only its priority dropped. The zip still uses./config, and Docker isn't affected.Job names: the
buildAndPushjobs inbuild.ymlanddev-release-cli.ymlare renamed tobuild, since they push nothing (Docker images are built without--push; CLI zips become workflow artifacts).release-cli.ymlkeepsbuildAndPush, because that job attaches the zips to the GitHub release. No required status checks depend on the name.Linux arm64 is deferred until Yaci Store publishes a native arm64 build (#197).
Test plan
A locally built native image, using GraalVM 21.0.5 like CI, run through the zip, npm (
start.mjs) and Homebrew (local tap) installs. In each, the port the CLI listened on showed which settings file won:devkit.properties, the bundled value appliesdevkit.propertiesoverrides the bundled config-Dserver.portoverridesdevkit.propertiesSERVER_PORTenvironment variable overridesdevkit.propertiesFirst-time
brew installofyaci-devkit-betafrom a clean Homebrew trust state, thenbrew testand a start check. Installingyaci-devkiton top completes but doesn't link the command; Homebrew suggestsbrew unlink yaci-devkit-beta.Cost-models path, checked through zip, npm and Homebrew by serving the API under the resolved path (
-Dserver.servlet.context-path=${yaci.cli.plutus-costmodels-path}):devkit.propertiesoverrides itYACI_CLI_PLUTUSCOSTMODELSPATHenvironment variable overrides itThe previous
start.mjsfails thedevkit.propertiesand environment cases with a 404, which confirms the test catches the bug. Theserver.portoverride checks were re-run on all three installs and pass.dev-release-clirun on the first commit: everything passed, including the macos-15 build, the npm dry run and the Homebrew dry run (https://github.com/bloxbean/yaci-devkit/actions/runs/38514333485)dev-release-clirun on the latest commit: everything passed, the macOS binary showsminos 15.0, and the Homebrew dry run installed withdepends_on macos: :sequoiaand the new launcher argument (https://github.com/bloxbean/yaci-devkit/actions/runs/38521679875)update-homebrewagainst the real tap. It only runs on a release tag, so the first beta release will be its first real run.🤖 Generated with Claude Code