diff --git a/.github/workflows/spm.yml b/.github/workflows/spm.yml index 5fee3c3..cc9b9d8 100644 --- a/.github/workflows/spm.yml +++ b/.github/workflows/spm.yml @@ -23,33 +23,52 @@ jobs: if: ${{ github.event_name == 'schedule' }} run: echo '::set-output name=WAS_CHANGED::'$(test -n "$(git log --format=%H --since='24 hours ago')" && echo 'true' || echo 'false') + spm-package-resolved: + runs-on: macos-14 + outputs: + cache_key: ${{ steps.generate_cache_key.outputs.cache_key }} + env: + FIREBASE_MAIN: 1 + DISABLE_INTEGRATION_TESTS: 1 + steps: + - uses: actions/checkout@v4 + - name: Generate Swift Package.resolved + id: swift_package_resolve + run: | + swift package resolve + - name: Generate cache key + id: generate_cache_key + run: | + cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}" + echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT" + - uses: actions/cache/save@v4 + id: cache + with: + path: .build + key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} + spm: - needs: changed_today + needs: [changed_today, spm-package-resolved] if: ${{ github.event_name == 'pull_request' || needs.changed_today.outputs.WAS_CHANGED == 'true' }} strategy: matrix: os: [macos-14] - # Target and Xcode matrix commented to workaround GHA download overload crashes - # target: [iOS, tvOS, macOS, catalyst, visionOS] - # xcode: [Xcode_15.2, Xcode_16_Release_Candidate] + target: [iOS, tvOS, macOS, catalyst, visionOS] + xcode: [Xcode_15.2, Xcode_15.4, Xcode_16] runs-on: ${{ matrix.os }} env: FIREBASE_MAIN: 1 DISABLE_INTEGRATION_TESTS: 1 steps: - uses: actions/checkout@v4 + - uses: actions/cache/restore@v4 + with: + path: .build + key: ${{needs.spm-package-resolved.outputs.cache_key}} + - name: Xcode + run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer - name: Setup Scripts Directory run: ./setup-scripts.sh - - name: Xcode 15 - run: sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer - - name: Initialize xcodebuild - run: xcodebuild -list - - name: iOS Unit Tests - run: scripts/third_party/travis/retry.sh scripts/build.sh FirebaseDataConnect iOS spm - - name: tvOS Unit Tests - run: scripts/third_party/travis/retry.sh scripts/build.sh FirebaseDataConnect tvOS spm - - name: macOS Unit Tests - run: scripts/third_party/travis/retry.sh scripts/build.sh FirebaseDataConnect macOS spm - - name: visionOS Unit Tests - run: scripts/third_party/travis/retry.sh scripts/build.sh FirebaseDataConnect visionOS spm + - name: Unit Tests + run: scripts/third_party/travis/retry.sh scripts/build.sh FirebaseDataConnect ${{ matrix.target }} spm