Skip to content

ci: release with changie and fastlane - #23

Merged
itsjoshpark merged 1 commit into
mainfrom
ci/changie-fastlane
Oct 31, 2026
Merged

itsjoshpark merged 1 commit into
mainfrom
ci/changie-fastlane

Conversation

@itsjoshpark

Copy link
Copy Markdown
Owner

Summary

This uses the same release setup as Front Row (itsjoshpark/FrontRow#154), recorded as decision N46:

  • Changie handles release notes and versioning. Each user-facing change adds a fragment (changie new, see .changes/README.md). The release batches the fragments into .changes/<version>.md, regenerates CHANGELOG.md, and stamps MARKETING_VERSION into Config/Shared.xcconfig. The release type defaults to auto. Auster hasn't shipped yet, so the first release ships as the xcconfig's 0.1.0; later releases bump from there.
  • fastlane has three lanes: import_signing_certificate, build (Developer ID export) and notarize_dmg.
  • Unchanged: render-notes, append-appcast-item, the dmg step, the guards, and the tag → release → appcast order.
  • Dry runs can run from any branch.
  • The gems install outside the repository ($RUNNER_TEMP/gems, cached), so swift-format lint -r ./ never finds the fastlane gem's Swift files.
  • Adds the standard Auster.xcodeproj/project.xcworkspace/contents.xcworkspacedata. fastlane builds through the embedded workspace, because its xcodeproj gem can't read project.xcproj, and without that file it found no schemes.
  • docs/release-process.md and CLAUDE.md are updated. The build number is no longer written back.

Test plan

  • Locally: bundle exec fastlane build version:0.1.0 build:9999 produces Auster.app signed by Developer ID (with a secure timestamp) at 0.1.0 (9999), and codesign --verify --deep --strict passes.
  • Locally: on a scratch copy, the first Changie batch gives 0.1.0, and later batches bump without a v prefix.
  • Release script tests pass. The template test now renders Changie's notes format instead.
  • CI is green.
  • After merge: a dry run from a throwaway branch with a test fragment.

Release notes come from Changie fragments, which also choose the version and stamp it into Shared.xcconfig. fastlane imports the Developer ID certificate, archives, exports and notarizes. Dry runs can run from any branch. Removes bump-version.sh, project-version.sh and .sparkle/notes/ (decision N46).
@itsjoshpark
itsjoshpark merged commit 7c9424e into main Oct 31, 2026
2 checks passed
@itsjoshpark
itsjoshpark deleted the ci/changie-fastlane branch October 31, 2026 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant