futuredapp / futuredapp/.github

Align iOS-KMP workflows with regular iOS workflow features

Open
#77 0 comments 0 reactions 0 assignees View on GitHub

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-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:

  1. Update workflow reference from ios-kmp-selfhosted-build.yml to ios-kmp-selfhosted-on-demand-build.yml
  2. Remove PR title fallback for changelog (now auto-generates)
  3. Optionally add JIRA_CONTEXT secret for ticket transition
  4. Optionally configure runner_label for custom runners

Implementation Order

  1. Create ios-kmp-selfhosted-on-demand-build.yml
  2. Update ios-kmp-selfhosted-build.yml to deprecation wrapper
  3. Update ios-kmp-selfhosted-test.yml
  4. Update ios-kmp-selfhosted-release.yml

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.