futuredapp / futuredapp/.github
Align iOS-KMP workflows with regular iOS workflow features
Nobody has claimed this yet.
- Dominant language
- No language data
- Stars
- 3
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the regular iOS workflows, especially ios-selfhosted-on-demand-build.yml and the deprecated ios-selfhosted-build.yml, with the three affected iOS-KMP workflows. Done means the new on-demand workflow, deprecation wrapper, runner labels, concurrency control, changelog generation, and optional JIRA support match the issue while preserving existing inputs and behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, ios, kotlin
- Domain
- ci-cd, mobile
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100