Skip to content

Split CI into format and build_test, drop the ios_ prefix - #123

Merged
andiwand merged 1 commit into
mainfrom
ci-split-workflows
Jul 26, 2026
Merged

Split CI into format and build_test, drop the ios_ prefix#123
andiwand merged 1 commit into
mainfrom
ci-split-workflows

Conversation

@andiwand

@andiwand andiwand commented Jul 26, 2026

Copy link
Copy Markdown
Member

🤖 Generated with Claude Code

ios_main.yml said nothing about what it runs, and every job in it repeated the same ten steps to get odrcore resolved. Both problems are fixed the way OpenDocument.core and OpenDocument.droid already do it.

What changed

  • one workflow per concernformat.yml, build_test.yml, release.yml. A failing check now names itself in the PR view instead of all three hiding under OpenDocumentReader-iOS.
  • .github/actions/setup-odrcore — the conan bootstrap (submodule, python, Xcode, conan install, cache) was copy-pasted into test, build and the release job. It now lives in one composite action that takes a profile, a configuration and a cache flavor.
  • build_test skips docspaths-ignore for **/*.md and fastlane/metadata/**, like droid. format deliberately has no paths-ignore, so nothing it checks goes unchecked.
  • release no longer writes the conan cache. It only ever consumed what build_test built, and an untested release should not be able to poison the entry the other workflows restore. Its action versions were a release behind ios_main.yml and are bumped to match.

Cache keys keep their exact previous shape (conan2-<os>-xcode<v>-<flavor>-index<sha>-<hash>), so existing cache entries stay usable.

Notes

  • ios_release.ymlrelease.yml is a rename; the workflow itself only lost the duplicated setup steps.
  • The README badge pointed at ios_main.yml and would have 404'd; it now shows build_test and format, and a short CI section describes the layout.
  • Verified with actionlint.

`ios_main.yml` said nothing about what it runs, and every job in it
repeated the same ten steps to get odrcore resolved. Both problems are
fixed the way OpenDocument.core and OpenDocument.droid already do it:

  * one workflow per concern - `format`, `build_test`, `release` - so a
    failing check names itself in the PR view
  * the shared conan bootstrap moves into a composite action,
    `.github/actions/setup-odrcore`, which the three jobs that compile
    the app now call with a profile and a configuration

`build_test` also gains `paths-ignore` for markdown and store metadata,
so a doc change no longer triggers a full native build. `format` keeps
running unconditionally, because it checks files `build_test` ignores.

`release` stops writing the conan cache: it only ever consumed what
`build_test` had already built, and an untested release should not be
able to poison the entry the other workflows restore. Its pinned action
versions were a release behind and are bumped to match.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011MhKU2kWm1cPW4GBq9gon5
@andiwand
andiwand merged commit e6da827 into main Jul 26, 2026
4 checks passed
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