Skip to content

Align iOS-KMP workflows with regular iOS workflow features #77

@ssestak

Description

@ssestak

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions