Repository navigation
Releases
3.0.1
Generated files are now stamped with the tool's version alone: SwiftWorkflowBuilder 3.0.1.
Changes
- Stamp: dropped the build number. Mint builds from a single-commit clone, so Mint-installed copies always stamped build
(1), which told readers nothing.
Full range: v3.0.0...v3.0.1
3.0
ActionBuilderCore is now SwiftWorkflowBuilder, and its command-line tool is now swift-ci. Once installed, you run it through the swift command:
mint install elegantchaos/SwiftWorkflowBuilder
swift ci generate [<package-path>]This is a breaking release.
Breaking changes
- Renamed: the package is now SwiftWorkflowBuilder (library module
SwiftWorkflowBuilder), and the executable is nowswift-ci(formerlyActionBuilderTool). The swift driver runs anyswift-<name>executable onPATHasswift <name>, so~/.mint/binmust be on yourPATH. generatesubcommand:generateis now required. A bareswift ci, or the oldActionBuilderTool <path>form, prints usage and exits with status 64.- Generated file names: the reusable workflows are now
SwiftWorkflowBuilderSwiftJob.ymlandSwiftWorkflowBuilderXcodeJob.yml. - Plugin dropped: the
--called-from-pluginoption is gone. ActionBuilderPlugin keeps working with 2.x releases.
Changes
- Triggers: generated workflows now run on pushes to
mainand on pull requests. Before, they ran on every push, so a branch with an open PR ran the whole matrix twice. - Settings file: settings now live in
.swift-ci.json. An existing.actionbuilder.jsonis still read when it's the only settings file. - README header: regenerating a package replaces a header written by ActionBuilderTool. Before this fix, it would have added a second one.
Migrating a package
- Run
swift ci generatein the package. - Delete
.github/workflows/ActionBuilderSwiftJob.ymland.github/workflows/ActionBuilderXcodeJob.yml. - Optionally, rename
.actionbuilder.jsonto.swift-ci.json.
Full range: v2.2.6...v3.0.0
2.2.6
Build-only Xcode jobs now compile without selecting or booting a simulator. This avoids unnecessary failures when a runner's simulator runtime cannot boot, including the watchOS failure addressed by this release.
- Use generic simulator destinations for build-only iOS, tvOS, watchOS, and visionOS jobs, skipping device discovery, runtime downloads, and booting.
- Preserve concrete simulator selection and booting for jobs that run tests.
- Add regression coverage for all four build-only platforms and update generated workflow fixtures.
Regenerate consuming repositories' workflows with this version to adopt the fix.
Validation: all PR CI checks passed, including watchOS with Swift 6.2 and 6.4. Full local macOS validation and a generic watchOS Simulator Release build passed.
2.2.5
Generated Apple simulator jobs now fail when required setup fails, instead of reporting success after skipping the build or tests.
- Propagate package-scheme discovery failures, including failed
xcodebuild -listcommands that emit a matching scheme. - Fail on CoreSimulator discovery, destination listing (including exit 65), platform download, missing destination, and simulator boot preparation failures.
- Preserve already-booted simulator handling.
- Enumerate Xcode application paths without parsing
ls, preserving spaces and clearing ShellCheck findings. - Add exact-output coverage and 18 mocked-tool regression cases; refresh EndToEnd workflows.
Full local macOS validation passed with 34 tests. The broader GitHub Actions platform matrix was still running when the release was prepared.
Regenerate consuming repositories' workflows with this version to adopt the fixes. Logger can then remove its local workflow patches and notices after its regression checks pass.
2.2.4
A maintenance release. There are no changes to the tool or its generated output; everything here concerns this repository's own end-to-end CI check and the release process.
What changed
- The EndToEnd workflows are now stamped with a fixed artificial version,
ActionBuilderTool 0.0.0., instead of the real tool version and build number. The real version comes from the latest git tag when the tool is built, so cutting a release used to make the committed workflows stale and fail the "Generated workflows are current" check onmain(as happened after 2.2.3). A release now needs no refresh. A missing or malformed stamp still fails the check, and version insertion itself remains covered byGeneratorTests. - The release guidance in
AGENTS.mdand the refresh script now describes this. - The workflows were refreshed for 2.2.3.
Commits
2.2.3
Adds Swift 6.4 support, and ships the reusable-workflow changes that landed on main after 2.2.2.
Swift 6.4
- New
swift64compiler, which is now the latest release. It runs on GitHub'sxcode-27runner image: Xcode 27 is not onmacos-26, which stops at Xcode 26.6 (announcement). The image is marked as a preview by GitHub. - A package whose
swift-tools-versionis 6.4 now pins to Swift 6.4. Before, the newest known compiler was 6.3, so a 6.4 manifest was clamped to 6.3. Packages at older tools versions that test "earliest and latest" now test 6.4 as the latest. - The tools-version to compilers rule is now
Compiler.ID.derived(fromToolsVersion:), tested with plain version strings.
Fix: job order no longer varies between runs
The enabled compilers were re-sorted with $0.id < $1.id. Compiler is a class, and Identifiable gives class types a default id: ObjectIdentifier, so that comparison resolved to object addresses, not Compiler.ID (which has no <). The result usually matched declaration order but not always, and the EndToEnd "Generated workflows are current" check flaked on identical commits. The compiler table is now used in its declared order, oldest to newest.
Also included, merged since 2.2.2
- Reusable workflow helpers: the generated caller workflow now calls repository-local
ActionBuilderSwiftJob.ymlandActionBuilderXcodeJob.ymlworkflows. Regenerating an existing package's workflow will change its layout. - Improved generated workflow run output, a fix to a reusable workflow input declaration, and an end-to-end freshness check.
Commits
- Document the compiler order on enabledCompilers (1187e6c)
- Keep compilers in declared order instead of re-sorting them (59ecf5d)
- Regenerate this repository's own workflow for the new latest compiler (64412b7)
- Use the xcode-27 runner image for Swift 6.4 (6814f4d)
- Add Swift 6.4 (6502f1b)
- Fix EndToEnd workflow freshness check (7208ecc)
- Check end-to-end tests for currency (08fc64a)
- Cleaned up operation name. (9b42f83)
- Fix reusable workflow input declaration (0af8262)
- Improve generated workflow run output (470e0e2)
- Generate reusable workflow helpers (9b3a023)
2.2.2
This release makes generated Apple-platform workflows more reliable and easier to diagnose by separating platform jobs and treating simulator setup problems as infrastructure failures.
Changes since v2.2.1
- Generate individual jobs and log artifacts for iOS, tvOS, and watchOS.
- Select Xcode versions that match the requested Swift compiler on macOS 26 runners.
- Detect, download, select, and boot simulator destinations before platform build and test steps.
- Report simulator infrastructure failures as warnings and skip affected build/test steps, while preserving genuine build and test failures.
- Add watchOS to the end-to-end package platforms and expand generated-workflow test coverage.
- Add a roadmap for future workflow-generation improvements.
Commits
07b0417added roadmap ideas4d777daanother suggestion143e222Individual jobs for each platformb9b0207try Xcode 26.3 for Swift 6.2a0c4410Use newer macos imageb28f48bwarm up simulator59d7c4bDistinguish between build/test failure and infrastructure failure8501f42test generated source4857780fixed caps
Range: v2.2.1..main • End: main
2.2.1
Fixed issue where we'd default to a beta version of Xcode when we didn't need to.
Fixed issue running the wrong destination in the simulator.
Fixed problem with empty logs.
Fixed spurious errors when we'd end up using eg Swift 6.2.4 instead of Swift 6.2.