-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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-changelogaction - 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_CONTEXTsecret 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.ymlworkflow - 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-onto use dynamic runner label pattern
4. Update ios-kmp-selfhosted-release.yml
Add missing features:
- runner_label input (default:
self-hosted) - Update
runs-onto 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.ymltoios-kmp-selfhosted-on-demand-build.yml - Remove PR title fallback for changelog (now auto-generates)
- Optionally add
JIRA_CONTEXTsecret for ticket transition - Optionally configure
runner_labelfor custom runners
Implementation Order
- Create
ios-kmp-selfhosted-on-demand-build.yml - Update
ios-kmp-selfhosted-build.ymlto deprecation wrapper - Update
ios-kmp-selfhosted-test.yml - Update
ios-kmp-selfhosted-release.yml