Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions