Skip to content

Releases

3.0.1

Choose a tag to compare

@samdeane samdeane released this 06 Nov 14:17
d821c28

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

3.0

Choose a tag to compare

@samdeane samdeane released this 06 Nov 14:05
41907b9

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 now swift-ci (formerly ActionBuilderTool). The swift driver runs any swift-<name> executable on PATH as swift <name>, so ~/.mint/bin must be on your PATH.
  • generate subcommand: generate is now required. A bare swift ci, or the old ActionBuilderTool <path> form, prints usage and exits with status 64.
  • Generated file names: the reusable workflows are now SwiftWorkflowBuilderSwiftJob.yml and SwiftWorkflowBuilderXcodeJob.yml.
  • Plugin dropped: the --called-from-plugin option is gone. ActionBuilderPlugin keeps working with 2.x releases.

Changes

  • Triggers: generated workflows now run on pushes to main and 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.json is 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

  1. Run swift ci generate in the package.
  2. Delete .github/workflows/ActionBuilderSwiftJob.yml and .github/workflows/ActionBuilderXcodeJob.yml.
  3. Optionally, rename .actionbuilder.json to .swift-ci.json.

Full range: v2.2.6...v3.0.0

2.2.6

Choose a tag to compare

@samdeane samdeane released this 17 Oct 10:35
9bc6786

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

Choose a tag to compare

@samdeane samdeane released this 16 Oct 15:06
6d94308

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 -list commands 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

Choose a tag to compare

@samdeane samdeane released this 01 Oct 15:49
aae2acc

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 on main (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 by GeneratorTests.
  • The release guidance in AGENTS.md and the refresh script now describes this.
  • The workflows were refreshed for 2.2.3.

Commits

  • Stamp the EndToEnd workflows with a fixed artificial version (d87e0ba)
  • Say that only the refresh after tagging matters for a release (6c8e86c)
  • Document that a release needs a second EndToEnd refresh, after tagging (fc2559a)
  • Refreshed the end to end workflows (6ce36ee)

2.2.3

Choose a tag to compare

@samdeane samdeane released this 01 Oct 14:54
026f75c

Adds Swift 6.4 support, and ships the reusable-workflow changes that landed on main after 2.2.2.

Swift 6.4

  • New swift64 compiler, which is now the latest release. It runs on GitHub's xcode-27 runner image: Xcode 27 is not on macos-26, which stops at Xcode 26.6 (announcement). The image is marked as a preview by GitHub.
  • A package whose swift-tools-version is 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.yml and ActionBuilderXcodeJob.yml workflows. 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

Choose a tag to compare

@samdeane samdeane released this 23 Jul 11:42
0cd30e3

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

Range: v2.2.1..main • End: main

2.2.1

Choose a tag to compare

@samdeane samdeane released this 14 May 16:04

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.

2.2

2.2

Choose a tag to compare

@samdeane samdeane released this 30 Apr 14:08

Added support for using XCode beta versions, when they are the only XCode that has a given swift version.

2.1.9

Choose a tag to compare

@samdeane samdeane released this 16 Apr 15:40

Added Swift 6.3 support.