diff --git a/.github/workflows/bank-api-library.build.docs.yml b/.github/workflows/bank-api-library.build.docs.yml index e4325b6a2..cefff7782 100644 --- a/.github/workflows/bank-api-library.build.docs.yml +++ b/.github/workflows/bank-api-library.build.docs.yml @@ -13,12 +13,16 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -26,7 +30,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build GiniBankAPILibrary documentation diff --git a/.github/workflows/bank-api-library.check.yml b/.github/workflows/bank-api-library.check.yml index 47687071f..f57779afe 100644 --- a/.github/workflows/bank-api-library.check.yml +++ b/.github/workflows/bank-api-library.check.yml @@ -20,16 +20,20 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniBankAPILibrary] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -44,7 +48,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/bank-api-library.release.yml b/.github/workflows/bank-api-library.release.yml index e3adee7c0..76e2b8740 100644 --- a/.github/workflows/bank-api-library.release.yml +++ b/.github/workflows/bank-api-library.release.yml @@ -9,14 +9,18 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/bank-api-library.check.yml@main secrets: GINI_MOBILE_TEST_CLIENT_SECRET: ${{ secrets.GINI_MOBILE_CI_PASSWORD }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -26,6 +30,8 @@ jobs: version_file_path: 'BankAPILibrary/GiniBankAPILibrary/Sources/GiniBankAPILibrary/GiniBankAPILibraryVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/bank-api-library-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} diff --git a/.github/workflows/bank-sdk.build.docs.yml b/.github/workflows/bank-sdk.build.docs.yml index 63dc9062e..c0a68df54 100644 --- a/.github/workflows/bank-sdk.build.docs.yml +++ b/.github/workflows/bank-sdk.build.docs.yml @@ -12,12 +12,16 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -25,7 +29,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build GiniBankSDK documentation diff --git a/.github/workflows/bank-sdk.build.xcframeworks.yml b/.github/workflows/bank-sdk.build.xcframeworks.yml index 9fb8675b6..1b50c66b5 100644 --- a/.github/workflows/bank-sdk.build.xcframeworks.yml +++ b/.github/workflows/bank-sdk.build.xcframeworks.yml @@ -9,13 +9,17 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + prepare-frameworks: + needs: get-config name: Create Release - runs-on: macos-15 + runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout repository uses: actions/checkout@v4 @@ -23,7 +27,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Archiving project and creating XCFrameworks diff --git a/.github/workflows/bank-sdk.check.yml b/.github/workflows/bank-sdk.check.yml index 7f45eb49f..3baa2ec08 100644 --- a/.github/workflows/bank-sdk.check.yml +++ b/.github/workflows/bank-sdk.check.yml @@ -23,16 +23,19 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniBankSDK] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -47,7 +50,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" @@ -60,7 +63,7 @@ jobs: options: > { "target": "${{ matrix.target }}", - "destination": "${{ matrix.destination }}", + "destination": "${{ needs.get-config.outputs.ios-simulator-destination }}", "clientId": "$TEST_CLIENT_ID", "clientSecret": "$TEST_CLIENT_SECRET", "result_bundle_path": "sonar-coverage.xcresult" @@ -90,7 +93,7 @@ jobs: xcodebuild clean test -project BankSDK/GiniBankSDKExample/GiniBankSDKExample.xcodeproj -scheme "GiniBankSDKExampleTests" - -destination "${{ matrix.destination }}" + -destination "${{ needs.get-config.outputs.ios-simulator-destination }}" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ONLY_ACTIVE_ARCH=NO diff --git a/.github/workflows/bank-sdk.publish.example.app.firebase.yml b/.github/workflows/bank-sdk.publish.example.app.firebase.yml index 8c8ee6132..99176b305 100644 --- a/.github/workflows/bank-sdk.publish.example.app.firebase.yml +++ b/.github/workflows/bank-sdk.publish.example.app.firebase.yml @@ -15,7 +15,11 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + upload-version: + needs: get-config environment: firebase-manual-deploy runs-on: macos-latest steps: @@ -26,12 +30,12 @@ jobs: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Setup Manual Signing for Xcode project uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - uses: maierj/fastlane-action@5a3b971aaa26776459bb26894d6c1a1a84a311a7 # v3.1.0 with: diff --git a/.github/workflows/bank-sdk.publish.example.app.testflight.yml b/.github/workflows/bank-sdk.publish.example.app.testflight.yml index 1a4b5a0c5..ea8b089fc 100644 --- a/.github/workflows/bank-sdk.publish.example.app.testflight.yml +++ b/.github/workflows/bank-sdk.publish.example.app.testflight.yml @@ -13,10 +13,14 @@ concurrency: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + upload-testflight: + needs: get-config uses: ./.github/workflows/publish.example.app.testflight.yml with: - xcode_version: '16.3' + xcode_version: ${{ needs.get-config.outputs.xcode-version }} project_path: 'BankSDK/GiniBankSDKExample/GiniBankSDKExample.xcodeproj' scheme: 'GiniBankSDKExample' bundle_identifier: 'net.gini.banksdk.example' diff --git a/.github/workflows/bank-sdk.release.yml b/.github/workflows/bank-sdk.release.yml index ff6f3e43e..9b6c683e9 100644 --- a/.github/workflows/bank-sdk.release.yml +++ b/.github/workflows/bank-sdk.release.yml @@ -9,7 +9,11 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/bank-sdk.check.yml@main secrets: GINI_MOBILE_CI_PASSWORD: ${{ secrets.GINI_MOBILE_CI_PASSWORD }} @@ -17,7 +21,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -27,6 +31,8 @@ jobs: version_file_path: 'BankSDK/GiniBankSDK/Sources/GiniBankSDK/GiniBankSDKVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/bank-sdk-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} diff --git a/.github/workflows/capture-sdk.build.docs.yml b/.github/workflows/capture-sdk.build.docs.yml index a6641d569..720f3b719 100644 --- a/.github/workflows/capture-sdk.build.docs.yml +++ b/.github/workflows/capture-sdk.build.docs.yml @@ -12,12 +12,16 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -25,7 +29,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build GiniCaptureSDK documentation diff --git a/.github/workflows/capture-sdk.check.yml b/.github/workflows/capture-sdk.check.yml index ee269f06d..6a6d347c9 100644 --- a/.github/workflows/capture-sdk.check.yml +++ b/.github/workflows/capture-sdk.check.yml @@ -20,16 +20,20 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniCaptureSDK] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -45,7 +49,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/capture-sdk.release.yml b/.github/workflows/capture-sdk.release.yml index 39e928843..f88a8e32d 100644 --- a/.github/workflows/capture-sdk.release.yml +++ b/.github/workflows/capture-sdk.release.yml @@ -9,14 +9,18 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/capture-sdk.check.yml@main secrets: GINI_MOBILE_TEST_CLIENT_SECRET: ${{ secrets.GINI_MOBILE_CI_PASSWORD }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -26,6 +30,8 @@ jobs: version_file_path: 'CaptureSDK/GiniCaptureSDK/Sources/GiniCaptureSDK/GiniCaptureSDKVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/capture-sdk-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 10bda7f1f..c5ae44968 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,5 +1,8 @@ name: "CodeQL Advanced" +permissions: + contents: read + on: push: branches: [main] @@ -7,6 +10,9 @@ on: branches: [main] jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + detect-changes: name: Detect changed paths runs-on: ubuntu-latest @@ -76,7 +82,7 @@ jobs: analyze-swift: name: Analyze Swift (${{ matrix.scheme }}) - needs: detect-changes + needs: [detect-changes, get-config] runs-on: macos-latest if: >- needs.detect-changes.outputs['bank-sdk'] == 'true' || @@ -110,7 +116,7 @@ jobs: if: steps.should-run.outputs.run == 'true' uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout repository if: steps.should-run.outputs.run == 'true' @@ -129,7 +135,7 @@ jobs: xcodebuild build \ -project ${{ matrix.project }} \ -scheme ${{ matrix.scheme }} \ - -destination 'platform=iOS Simulator,OS=18.5,name=iPhone 16' \ + -destination '${{ needs.get-config.outputs.ios-simulator-destination }}' \ CODE_SIGN_IDENTITY="" \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO \ diff --git a/.github/workflows/generate-sboms.yml b/.github/workflows/generate-sboms.yml index 995b5587b..84bf71998 100644 --- a/.github/workflows/generate-sboms.yml +++ b/.github/workflows/generate-sboms.yml @@ -8,7 +8,11 @@ on: permissions: contents: read jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + generate-sbom: + needs: get-config runs-on: ubuntu-latest steps: - name: checkout @@ -22,7 +26,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Generate a token diff --git a/.github/workflows/health-api-library.build.docs.yml b/.github/workflows/health-api-library.build.docs.yml index fa92506fa..59e9bb00f 100644 --- a/.github/workflows/health-api-library.build.docs.yml +++ b/.github/workflows/health-api-library.build.docs.yml @@ -13,12 +13,16 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -26,7 +30,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build GiniHealthAPILibrary documentation diff --git a/.github/workflows/health-api-library.check.yml b/.github/workflows/health-api-library.check.yml index 3d7c801db..772cf8a3d 100644 --- a/.github/workflows/health-api-library.check.yml +++ b/.github/workflows/health-api-library.check.yml @@ -19,16 +19,20 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniHealthAPILibrary, GiniHealthAPILibraryExampleTests] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -43,7 +47,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/health-api-library.release.yml b/.github/workflows/health-api-library.release.yml index 167316a45..b4b01efad 100644 --- a/.github/workflows/health-api-library.release.yml +++ b/.github/workflows/health-api-library.release.yml @@ -8,14 +8,18 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/health-api-library.check.yml@main secrets: GINI_MOBILE_TEST_CLIENT_SECRET: ${{ secrets.GINI_MOBILE_CI_PASSWORD }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -25,6 +29,8 @@ jobs: version_file_path: 'HealthAPILibrary/GiniHealthAPILibrary/Sources/GiniHealthAPILibrary/GiniHealthAPILibraryVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/health-api-library-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} diff --git a/.github/workflows/health-sdk.build.docs.yml b/.github/workflows/health-sdk.build.docs.yml index f9e90ce07..836bbd514 100644 --- a/.github/workflows/health-sdk.build.docs.yml +++ b/.github/workflows/health-sdk.build.docs.yml @@ -13,12 +13,16 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -26,7 +30,7 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build GiniHealthSDK documentation diff --git a/.github/workflows/health-sdk.build.xcframeworks.yml b/.github/workflows/health-sdk.build.xcframeworks.yml index 1556922b2..3df509c27 100644 --- a/.github/workflows/health-sdk.build.xcframeworks.yml +++ b/.github/workflows/health-sdk.build.xcframeworks.yml @@ -18,13 +18,17 @@ on: KEYCHAIN_PASSWORD: required: true jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + prepare-frameworks: + needs: get-config name: Create Release - runs-on: macos-26 + runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '26' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout repository uses: actions/checkout@v4 @@ -32,7 +36,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Archiving project and creating XCFrameworks diff --git a/.github/workflows/health-sdk.check.yml b/.github/workflows/health-sdk.check.yml index d8c6d3057..3b2fb8783 100644 --- a/.github/workflows/health-sdk.check.yml +++ b/.github/workflows/health-sdk.check.yml @@ -20,17 +20,21 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniHealthSDK, GiniHealthSDKExampleTests] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -45,7 +49,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/health-sdk.publish.example.apps.firebase.yml b/.github/workflows/health-sdk.publish.example.apps.firebase.yml index 8994c32fd..023d64ac9 100644 --- a/.github/workflows/health-sdk.publish.example.apps.firebase.yml +++ b/.github/workflows/health-sdk.publish.example.apps.firebase.yml @@ -14,7 +14,11 @@ concurrency: cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}} jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + upload-version: + needs: get-config environment: firebase-manual-deploy runs-on: macos-latest steps: @@ -25,12 +29,12 @@ jobs: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Setup Manual Signing for Xcode project uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - uses: maierj/fastlane-action@5a3b971aaa26776459bb26894d6c1a1a84a311a7 # v3.1.0 with: diff --git a/.github/workflows/health-sdk.release.yml b/.github/workflows/health-sdk.release.yml index 1961e50fe..a2ddd4a35 100644 --- a/.github/workflows/health-sdk.release.yml +++ b/.github/workflows/health-sdk.release.yml @@ -8,12 +8,16 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/health-sdk.check.yml@main secrets: inherit release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -23,6 +27,8 @@ jobs: version_file_path: 'HealthSDK/GiniHealthSDK/Sources/GiniHealthSDK/GiniHealthSDKVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/health-sdk-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} diff --git a/.github/workflows/internal-payment-sdk.check.yml b/.github/workflows/internal-payment-sdk.check.yml index ad61208ac..71fcb522b 100644 --- a/.github/workflows/internal-payment-sdk.check.yml +++ b/.github/workflows/internal-payment-sdk.check.yml @@ -13,16 +13,20 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniInternalPaymentSDK] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -36,7 +40,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/internal-payment-sdk.release.yml b/.github/workflows/internal-payment-sdk.release.yml index 598556e64..eb85c9b62 100644 --- a/.github/workflows/internal-payment-sdk.release.yml +++ b/.github/workflows/internal-payment-sdk.release.yml @@ -8,13 +8,16 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: uses: ./.github/workflows/internal-payment-sdk.check.yml secrets: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -24,6 +27,8 @@ jobs: version_file_path: 'GiniComponents/InternalPaymentSDK/GiniInternalPaymentSDK/Sources/GiniInternalPaymentSDK/GiniInternalPaymentSDKVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/internal-payment-sdk-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} \ No newline at end of file diff --git a/.github/workflows/publish.example.app.testflight.yml b/.github/workflows/publish.example.app.testflight.yml index a0a765034..f7a3a3148 100644 --- a/.github/workflows/publish.example.app.testflight.yml +++ b/.github/workflows/publish.example.app.testflight.yml @@ -8,7 +8,7 @@ permissions: # upload: # uses: ./.github/workflows/publish.example.app.testflight.yml # with: -# xcode_version: '16.3' +# xcode_version: '26.2' # project_path: 'BankSDK/GiniBankSDKExample/GiniBankSDKExample.xcodeproj' # scheme: 'GiniBankSDKExample' # bundle_identifier: 'net.gini.banksdk.example' @@ -22,7 +22,7 @@ on: xcode_version: description: 'Xcode version to use' required: false - default: '16.3' + default: '26.2' type: string project_path: description: 'Relative path to the .xcodeproj file' diff --git a/.github/workflows/sdk.publish.docs.yml b/.github/workflows/sdk.publish.docs.yml index 5af7b85d6..c41189aea 100644 --- a/.github/workflows/sdk.publish.docs.yml +++ b/.github/workflows/sdk.publish.docs.yml @@ -32,13 +32,17 @@ on: MOBILE_CI_APP_PRIVATE_KEY: required: true jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + release-documentation: + needs: get-config runs-on: macos-latest steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -62,7 +66,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Generate a token diff --git a/.github/workflows/sdk.release.yml b/.github/workflows/sdk.release.yml index 13f80a75d..3de865f93 100644 --- a/.github/workflows/sdk.release.yml +++ b/.github/workflows/sdk.release.yml @@ -26,6 +26,14 @@ on: description: 'The URL of the release repository' required: true type: string + xcode-version: + description: 'Xcode version to use' + required: true + type: string + ruby-version: + description: 'Ruby version to use' + required: true + type: string secrets: MOBILE_CI_APP_ID: required: true @@ -39,7 +47,7 @@ jobs: steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ inputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -47,7 +55,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ inputs.ruby-version }} bundler-cache: true - name: Generate a token diff --git a/.github/workflows/shared-config.yml b/.github/workflows/shared-config.yml new file mode 100644 index 000000000..68ac5686e --- /dev/null +++ b/.github/workflows/shared-config.yml @@ -0,0 +1,46 @@ +name: Centralized Configuration + +# This workflow provides centralized configuration values for all other workflows. +# To update build tool versions, edit the outputs in the 'config' job below. +# +# Usage in other workflows: +# jobs: +# get-config: +# uses: ./.github/workflows/shared-config.yml +# +# your-job: +# needs: get-config +# steps: +# - uses: maxim-lobanov/setup-xcode@v1 +# with: +# xcode-version: ${{ needs.get-config.outputs.xcode-version }} + +permissions: {} + +on: + workflow_call: + outputs: + xcode-version: + description: "Xcode version to use for builds and tests" + value: ${{ jobs.config.outputs.xcode-version }} + ruby-version: + description: "Ruby version to use for Fastlane and other Ruby tools" + value: ${{ jobs.config.outputs.ruby-version }} + ios-simulator-destination: + description: "iOS Simulator destination for running tests" + value: ${{ jobs.config.outputs.ios-simulator-destination }} + +jobs: + config: + runs-on: ubuntu-latest + outputs: + xcode-version: ${{ steps.set-config.outputs.xcode-version }} + ruby-version: ${{ steps.set-config.outputs.ruby-version }} + ios-simulator-destination: ${{ steps.set-config.outputs.ios-simulator-destination }} + steps: + - name: Set configuration values + id: set-config + run: | + echo "xcode-version=26.2" >> $GITHUB_OUTPUT + echo "ruby-version=3.2.0" >> $GITHUB_OUTPUT + echo "ios-simulator-destination=platform=iOS Simulator,name=iPhone 16,OS=26.2" >> $GITHUB_OUTPUT diff --git a/.github/workflows/utilites.check.yml b/.github/workflows/utilites.check.yml index 196161cb1..0fcffde9b 100644 --- a/.github/workflows/utilites.check.yml +++ b/.github/workflows/utilites.check.yml @@ -13,16 +13,20 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config runs-on: macos-latest strategy: matrix: target: [GiniUtilites] - destination: ['platform=iOS Simulator,OS=18.5,name=iPhone 16'] + destination: ['${{ needs.get-config.outputs.ios-simulator-destination }}'] steps: - uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - xcode-version: '16.4' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} - name: Checkout uses: actions/checkout@v4 @@ -36,7 +40,7 @@ jobs: - name: Setup ruby uses: ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.245.0 with: - ruby-version: '3.2.0' + ruby-version: ${{ needs.get-config.outputs.ruby-version }} bundler-cache: true - name: Build and run tests for "${{ matrix.target }}" diff --git a/.github/workflows/utilites.release.yml b/.github/workflows/utilites.release.yml index f38e96bbc..7c78139b0 100644 --- a/.github/workflows/utilites.release.yml +++ b/.github/workflows/utilites.release.yml @@ -8,13 +8,17 @@ on: workflow_dispatch: jobs: + get-config: + uses: ./.github/workflows/shared-config.yml + check: + needs: get-config uses: gini/gini-mobile-ios/.github/workflows/utilites.check.yml@main secrets: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release: - needs: check + needs: [get-config, check] permissions: contents: write uses: ./.github/workflows/sdk.release.yml @@ -24,6 +28,8 @@ jobs: version_file_path: 'GiniComponents/Utilities/GiniUtilites/Sources/GiniUtilites/GiniUtilitesVersion.swift' git_tag: ${{ github.ref }} repo_url: 'https://github.com/gini/utilites-ios.git' + xcode-version: ${{ needs.get-config.outputs.xcode-version }} + ruby-version: ${{ needs.get-config.outputs.ruby-version }} secrets: MOBILE_CI_APP_ID: ${{ secrets.MOBILE_CI_APP_ID }} MOBILE_CI_APP_PRIVATE_KEY: ${{ secrets.MOBILE_CI_APP_PRIVATE_KEY }} \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 8c093db0f..16817d402 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,7 +20,7 @@ open GiniMobile.xcworkspace xcodebuild clean test \ -project BankSDK/GiniBankSDKExample/GiniBankSDKExample.xcodeproj \ -scheme "GiniBankSDKExampleTests" \ - -destination "platform=iOS Simulator,name=iPhone 16,OS=18.5" \ + -destination "platform=iOS Simulator,name=iPhone 16,OS=26.2" \ CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ``` @@ -111,8 +111,8 @@ PP-4102 ## CI Environment -- **Xcode:** 16.4 -- **Simulator:** iPhone 16, iOS 18.5 +- **Xcode:** 26.2 +- **Simulator:** iPhone 16, iOS 26.2 - **Runner:** macOS latest - **Minimum deployment target:** iOS 13+ (HealthAPILibrary: iOS 12+)