Summary
The iOS-KMP workflows (ios-kmp-selfhosted-*) are missing several features that have been introduced in the regular iOS workflows (ios-selfhosted-*). This creates inconsistency and means KMP projects don't benefit from optimizations like changelog generation and JIRA integration.
Current State
| Feature |
Regular iOS |
iOS-KMP |
| Change detection/changelog generation |
✅ |
❌ |
| JIRA integration |
✅ |
❌ |
| Nightly vs On-demand naming |
✅ |
❌ |
| Runner label configurable |
✅ |
❌ |
| Concurrency control (test) |
✅ |
❌ |
Affected Workflows
.github/workflows/ios-kmp-selfhosted-test.yml
.github/workflows/ios-kmp-selfhosted-build.yml
.github/workflows/ios-kmp-selfhosted-release.yml
Proposed Changes
1. Create ios-kmp-selfhosted-on-demand-build.yml (NEW)
Create a new workflow based on ios-selfhosted-on-demand-build.yml pattern with KMP-specific additions:
- Changelog generation via
universal-detect-changes-and-generate-changelog action
- No skip_build logic - on-demand builds should always run
- Manual changelog input override (when provided, skip auto-generation)
- JIRA ticket transition support (optional, activates when
JIRA_CONTEXT secret is provided)
- runner_label configuration
- All existing KMP-specific inputs (java_version, kmp_swift_package_*, etc.)
Note: A dedicated nightly build workflow is not needed since kmp-combined-nightly-build.yml already handles nightly builds for both iOS and Android in KMP projects.
2. Deprecate ios-kmp-selfhosted-build.yml
Transform into a deprecation wrapper that:
- Shows deprecation warning in workflow logs
- Calls the new
ios-kmp-selfhosted-on-demand-build.yml workflow
- Maintains all existing inputs for backward compatibility
Similar to how ios-selfhosted-build.yml was deprecated.
3. Update ios-kmp-selfhosted-test.yml
Add missing features:
- runner_label input (default:
self-hosted)
- Concurrency control to cancel outdated PR runs
- Update
runs-on to use dynamic runner label pattern
4. Update ios-kmp-selfhosted-release.yml
Add missing features:
- runner_label input (default:
self-hosted)
- Update
runs-on to use dynamic runner label pattern
Breaking Changes
None - All changes are backward compatible:
- New inputs have defaults matching current behavior
- Deprecated workflow continues to function via wrapper pattern
Migration Path
Immediate: No action required - existing workflows continue to work.
Recommended migration:
- Update workflow reference from
ios-kmp-selfhosted-build.yml to ios-kmp-selfhosted-on-demand-build.yml
- Remove PR title fallback for changelog (now auto-generates)
- Optionally add
JIRA_CONTEXT secret for ticket transition
- Optionally configure
runner_label for custom runners
Implementation Order
- Create
ios-kmp-selfhosted-on-demand-build.yml
- Update
ios-kmp-selfhosted-build.yml to deprecation wrapper
- Update
ios-kmp-selfhosted-test.yml
- Update
ios-kmp-selfhosted-release.yml
Summary
The iOS-KMP workflows (
ios-kmp-selfhosted-*) are missing several features that have been introduced in the regular iOS workflows (ios-selfhosted-*). This creates inconsistency and means KMP projects don't benefit from optimizations like changelog generation and JIRA integration.Current State
Affected Workflows
.github/workflows/ios-kmp-selfhosted-test.yml.github/workflows/ios-kmp-selfhosted-build.yml.github/workflows/ios-kmp-selfhosted-release.ymlProposed Changes
1. Create
ios-kmp-selfhosted-on-demand-build.yml(NEW)Create a new workflow based on
ios-selfhosted-on-demand-build.ymlpattern with KMP-specific additions:universal-detect-changes-and-generate-changelogactionJIRA_CONTEXTsecret is provided)Note: A dedicated nightly build workflow is not needed since
kmp-combined-nightly-build.ymlalready handles nightly builds for both iOS and Android in KMP projects.2. Deprecate
ios-kmp-selfhosted-build.ymlTransform into a deprecation wrapper that:
ios-kmp-selfhosted-on-demand-build.ymlworkflowSimilar to how
ios-selfhosted-build.ymlwas deprecated.3. Update
ios-kmp-selfhosted-test.ymlAdd missing features:
self-hosted)runs-onto use dynamic runner label pattern4. Update
ios-kmp-selfhosted-release.ymlAdd missing features:
self-hosted)runs-onto use dynamic runner label patternBreaking Changes
None - All changes are backward compatible:
Migration Path
Immediate: No action required - existing workflows continue to work.
Recommended migration:
ios-kmp-selfhosted-build.ymltoios-kmp-selfhosted-on-demand-build.ymlJIRA_CONTEXTsecret for ticket transitionrunner_labelfor custom runnersImplementation Order
ios-kmp-selfhosted-on-demand-build.ymlios-kmp-selfhosted-build.ymlto deprecation wrapperios-kmp-selfhosted-test.ymlios-kmp-selfhosted-release.yml