diff --git a/.github/workflows/health-sdk.build.xcframeworks.xcode16.yml b/.github/workflows/health-sdk.build.xcframeworks.xcode16.yml new file mode 100644 index 000000000..024ce6186 --- /dev/null +++ b/.github/workflows/health-sdk.build.xcframeworks.xcode16.yml @@ -0,0 +1,79 @@ +name: Build HealthSDK XCFrameworks XCode 16 +on: + push: + tags: + - 'GiniHealthSDK;[0-9]+.[0-9]+.[0-9]+;xcframeworks**' + - 'GiniHealthSDK;[0-9]+.[0-9]+.[0-9]+-beta[0-9][0-9]+;xcframeworks**' + workflow_dispatch: + workflow_call: + secrets: + BUILD_CERTIFICATE_BASE64: + required: true + P12_PASSWORD: + required: true + BUILD_PROVISION_PROFILE_BASE64: + required: true + KEYCHAIN_PASSWORD: + required: true +jobs: + prepare-frameworks: + name: Create Release + runs-on: macos-14 + steps: + - uses: maxim-lobanov/setup-xcode@v1.6.0 + with: + xcode-version: '16.2' + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Archiving project and creating XCFrameworks + run: | + ./build-healthsdk.sh + + - name: Sign the XCFrameworks + env: + BUILD_CERTIFICATE_BASE64: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE }} + P12_PASSWORD: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE_SECRET }} + BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.GINI_HEALTH_SDK_EXAMPLE_APP_ADHOC_DISTRIBUTION_PROVISION_PROFILE }} + KEYCHAIN_PASSWORD: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE_SECRET }} + run: | + # Setup distribution certificate + CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 + PP_PATH1=$RUNNER_TEMP/build_pp1.mobileprovision + + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + + # import certificate and provisioning profile from secrets + echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH + echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH1 + + # create temporary keychain + security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security set-keychain-settings -lut 21600 $KEYCHAIN_PATH + security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + + # import certificate to keychain + security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH + security list-keychain -d user -s $KEYCHAIN_PATH + + # apply provisioning profile + mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH1 ~/Library/MobileDevice/Provisioning\ Profiles + + # sign xcframeworks + codesign --timestamp -v --sign "Apple Distribution: Gini GmbH (JA825X8F7Z)" GiniHealthAPILibrary.xcframework && \ + codesign --timestamp -v --sign "Apple Distribution: Gini GmbH (JA825X8F7Z)" GiniHealthSDK.xcframework && \ + codesign --timestamp -v --sign "Apple Distribution: Gini GmbH (JA825X8F7Z)" GiniInternalPaymentSDK.xcframework && \ + codesign --timestamp -v --sign "Apple Distribution: Gini GmbH (JA825X8F7Z)" GiniUtilites.xcframework + + - name: archive frameworks GiniHealthAPILibrary + uses: actions/upload-artifact@v4 + with: + name: GiniHealthSDKFramework + path: | + GiniHealthAPILibrary.xcframework + GiniHealthSDK.xcframework + GiniInternalPaymentSDK.xcframework + GiniUtilites.xcframework +