Skip to content

ci: release with changie and fastlane - #154

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 brings the release process tested in AudioBalance to Front Row's Developer ID and Sparkle flow:

  • 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 project.xcproj. Kinds are New/Changed/Fixed/Updated, and the release type defaults to auto. The archived notes moved from .sparkle/notes/ to .changes/.
  • fastlane (fastlane/Fastfile) has three lanes:
    • import_signing_certificate: an ephemeral keychain, built with create_keychain and import_certificate.
    • build: gym archive and Developer ID export.
    • notarize_dmg: notarize, then staple.
  • Unchanged: render-notes.sh (the appcast HTML), append-appcast-item.sh, the dmg step, the build-number check against the appcast, and the commit → tag → release → push-to-main order.
  • Dry runs can run from any branch.
  • The fastlane gems install to $RUNNER_TEMP/gems, cached, rather than vendor/bundle. The app target's swift-format lint phase lints everything under ./, and it failed on the fastlane gem's Swift files.
  • The build number is no longer written back to the project.

Test plan

  • Locally: bundle exec fastlane build version:3.1.1 build:9999 produces Front Row.app signed by Developer ID (with a secure timestamp) at 3.1.1 (9999), and codesign --verify --deep --strict passes.
  • Locally: the render-notes/append-appcast-item tests pass, and the migrated 3.0.0 notes render.
  • CI is green.
  • After merge: a dry run from a throwaway branch with a test fragment (build, dmg, notarization; nothing published).

Release notes come from Changie fragments, which also choose the version and stamp it into project.xcproj. 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/.
@itsjoshpark
itsjoshpark merged commit 7569f48 into main Oct 31, 2026
2 checks passed
@itsjoshpark
itsjoshpark deleted the ci/changie-fastlane branch October 31, 2026 19:40
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