|
90 | 90 | default: '17' |
91 | 91 | type: string |
92 | 92 |
|
| 93 | + xcode-version: |
| 94 | + description: 'Xcode version to use (e.g., 16.4).' |
| 95 | + required: false |
| 96 | + default: '16.4' |
| 97 | + type: string |
| 98 | + |
93 | 99 | release_type: |
94 | 100 | type: string |
95 | 101 | default: 'internal' |
|
138 | 144 | default: false |
139 | 145 | description: Distribute iOS App to Appstore |
140 | 146 |
|
| 147 | + distribute_macos_testflight: |
| 148 | + type: boolean |
| 149 | + default: false |
| 150 | + description: Distribute macOS App via TestFlight (App Store Connect) |
| 151 | + |
| 152 | + distribute_macos_appstore: |
| 153 | + type: boolean |
| 154 | + default: false |
| 155 | + description: Distribute macOS App to Appstore |
| 156 | + |
141 | 157 | tester_groups: |
142 | 158 | type: string |
143 | 159 | description: 'Firebase Tester Group' |
|
205 | 221 | type: string |
206 | 222 | default: 'cmp-shared/build/compose/cocoapods/compose-resources' |
207 | 223 |
|
| 224 | + macos_app_identifier: |
| 225 | + description: 'Bundle identifier for the macOS app' |
| 226 | + type: string |
| 227 | + required: true |
| 228 | + |
| 229 | + cmp_desktop_dir: |
| 230 | + description: 'Path to the Compose/KMP desktop project used for macOS build' |
| 231 | + type: string |
| 232 | + default: 'cmp-desktop' |
| 233 | + |
| 234 | + keychain_name: |
| 235 | + description: 'Temporary keychain name for codesigning (optional)' |
| 236 | + type: string |
| 237 | + default: 'signing.keychain-db' |
| 238 | + |
| 239 | + |
208 | 240 | secrets: |
209 | 241 | # Android-related secrets |
210 | 242 | original_keystore_file: |
|
273 | 305 | description: 'SSH private key for accessing the certificates repository' |
274 | 306 | required: true |
275 | 307 |
|
| 308 | + # macOS related secrets |
| 309 | + keychain_password: |
| 310 | + description: 'Password for the temporary signing keychain' |
| 311 | + required: true |
| 312 | + |
| 313 | + certificates_password: |
| 314 | + description: 'Password used to import signing certificates to the keychain' |
| 315 | + required: true |
| 316 | + |
| 317 | + mac_app_distribution_certificate_b64: |
| 318 | + description: 'Base64 App Distribution certificate (.p12) for macOS' |
| 319 | + required: true |
| 320 | + |
| 321 | + mac_installer_distribution_certificate_b64: |
| 322 | + description: 'Base64 Installer Distribution certificate (.p12) for macOS' |
| 323 | + required: true |
| 324 | + |
| 325 | + mac_embedded_provision_b64: |
| 326 | + description: 'Base64 embedded provisioning profile (.provisionprofile) for macOS' |
| 327 | + required: true |
| 328 | + |
| 329 | + mac_runtime_provision_b64: |
| 330 | + description: 'Base64 runtime provisioning profile (.provisionprofile) for macOS' |
| 331 | + required: true |
| 332 | + |
276 | 333 | # Desktop signing secrets |
277 | 334 | windows_signing_key: |
278 | 335 | description: 'Windows app signing key' |
@@ -377,7 +434,7 @@ jobs: |
377 | 434 | - name: Set latest Xcode version |
378 | 435 | uses: maxim-lobanov/setup-xcode@v1 |
379 | 436 | with: |
380 | | - xcode-version: latest-stable |
| 437 | + xcode-version: ${{ inputs.xcode-version }} |
381 | 438 |
|
382 | 439 | - name: Install CocoaPods |
383 | 440 | if: ${{ inputs.use_cocoapods }} |
@@ -424,7 +481,7 @@ jobs: |
424 | 481 | - name: Set latest Xcode version |
425 | 482 | uses: maxim-lobanov/setup-xcode@v1 |
426 | 483 | with: |
427 | | - xcode-version: latest-stable |
| 484 | + xcode-version: ${{ inputs.xcode-version }} |
428 | 485 |
|
429 | 486 | - name: Install CocoaPods |
430 | 487 | if: ${{ inputs.use_cocoapods }} |
@@ -466,7 +523,7 @@ jobs: |
466 | 523 | - name: Set latest Xcode version |
467 | 524 | uses: maxim-lobanov/setup-xcode@v1 |
468 | 525 | with: |
469 | | - xcode-version: latest-stable |
| 526 | + xcode-version: ${{ inputs.xcode-version }} |
470 | 527 |
|
471 | 528 | - name: Install CocoaPods |
472 | 529 | if: ${{ inputs.use_cocoapods }} |
@@ -494,8 +551,58 @@ jobs: |
494 | 551 | match_password: ${{ secrets.match_password }} |
495 | 552 | match_ssh_private_key: ${{ secrets.match_ssh_private_key }} |
496 | 553 |
|
497 | | - # Desktop Publishing Job |
498 | | - publish_desktop: |
| 554 | + publish_macos_app_to_testflight: |
| 555 | + name: Publish macOS App On TestFlight |
| 556 | + if: inputs.distribute_macos_testflight |
| 557 | + runs-on: macos-latest |
| 558 | + steps: |
| 559 | + - name: Checkout Repository |
| 560 | + uses: actions/checkout@v4 |
| 561 | + |
| 562 | + - name: Upload macOS to TestFlight |
| 563 | + uses: openMF/mifos-x-actionhub-publish-macos-on-appstore-testflight-kmp@v1.0.0 |
| 564 | + with: |
| 565 | + app_identifier: ${{ inputs.macos_app_identifier }} |
| 566 | + cmp_desktop_dir: ${{ inputs.cmp_desktop_dir }} |
| 567 | + keychain_name: ${{ inputs.keychain_name }} |
| 568 | + java_version: ${{ inputs.java-version }} |
| 569 | + keychain_password: ${{ secrets.keychain_password }} |
| 570 | + certificates_password: ${{ secrets.certificates_password }} |
| 571 | + mac_app_distribution_certificate_b64: ${{ secrets.mac_app_distribution_certificate_b64 }} |
| 572 | + mac_installer_distribution_certificate_b64: ${{ secrets.mac_installer_distribution_certificate_b64 }} |
| 573 | + mac_embedded_provision_b64: ${{ secrets.mac_embedded_provision_b64 }} |
| 574 | + mac_runtime_provision_b64: ${{ secrets.mac_runtime_provision_b64 }} |
| 575 | + appstore_key_id: ${{ secrets.appstore_key_id }} |
| 576 | + appstore_issuer_id: ${{ secrets.appstore_issuer_id }} |
| 577 | + appstore_auth_key_b64: ${{ secrets.appstore_auth_key }} |
| 578 | + |
| 579 | + publish_macos_app_to_appstore: |
| 580 | + name: Publish macOS App On App Store |
| 581 | + if: inputs.distribute_macos_appstore |
| 582 | + runs-on: macos-latest |
| 583 | + steps: |
| 584 | + - name: Checkout Repository |
| 585 | + uses: actions/checkout@v4 |
| 586 | + |
| 587 | + - name: Submit macOS App to App Store |
| 588 | + |
| 589 | + with: |
| 590 | + app_identifier: ${{ inputs.macos_app_identifier }} |
| 591 | + cmp_desktop_dir: ${{ inputs.cmp_desktop_dir }} |
| 592 | + keychain_name: ${{ inputs.keychain_name }} |
| 593 | + java_version: ${{ inputs.java-version }} |
| 594 | + keychain_password: ${{ secrets.keychain_password }} |
| 595 | + certificates_password: ${{ secrets.certificates_password }} |
| 596 | + mac_app_distribution_certificate_b64: ${{ secrets.mac_app_distribution_certificate_b64 }} |
| 597 | + mac_installer_distribution_certificate_b64: ${{ secrets.mac_installer_distribution_certificate_b64 }} |
| 598 | + mac_embedded_provision_b64: ${{ secrets.mac_embedded_provision_b64 }} |
| 599 | + mac_runtime_provision_b64: ${{ secrets.mac_runtime_provision_b64 }} |
| 600 | + appstore_key_id: ${{ secrets.appstore_key_id }} |
| 601 | + appstore_issuer_id: ${{ secrets.appstore_issuer_id }} |
| 602 | + appstore_auth_key_b64: ${{ secrets.appstore_auth_key }} |
| 603 | + |
| 604 | + # Desktop Publishing Job (Distribute desktop app builds outside official stores) |
| 605 | + publish_desktop_external: |
499 | 606 | name: Publish Desktop App |
500 | 607 | strategy: |
501 | 608 | matrix: |
@@ -545,7 +652,7 @@ jobs: |
545 | 652 | # Creates GitHub release with all built artifacts |
546 | 653 | github_release: |
547 | 654 | name: Create Github Release |
548 | | - needs: [ publish_android_on_firebase, publish_ios_app_to_firebase, publish_desktop, publish_web ] |
| 655 | + needs: [ publish_android_on_firebase, publish_ios_app_to_firebase, publish_desktop_external, publish_web ] |
549 | 656 | runs-on: macos-latest |
550 | 657 | steps: |
551 | 658 | - uses: actions/checkout@v4 |
|
0 commit comments