name: Objective-C Tests on: workflow_call: inputs: safe-checkout: required: true description: "The SHA key for the commit we want to run over" type: string jobs: xcode: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: include: - name: macOS config: osx flags: --skip-xcode-ios --skip-xcode-tvos --skip-objc-conformance # The iOS simulator takes a while to start up, so Debug & Release are run in # parallel to get the testing done faster. - name: iOS Debug config: ios_debug flags: --skip-xcode-osx --skip-xcode-tvos --skip-objc-conformance --skip-xcode-release - name: iOS Release config: ios_release flags: --skip-xcode-osx --skip-xcode-tvos --skip-objc-conformance --skip-xcode-debug name: Xcode ${{ matrix.name}} runs-on: macos-12 env: DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer steps: - name: Checkout pending changes uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ inputs.safe-checkout }} - name: Setup ccache uses: ./.github/actions/ccache with: cache-prefix: objectivec_macos_${{ matrix.config }} support-modules: true - name: Run tests uses: ./.github/actions/bazel env: CC: ${{ github.workspace }}/ci/clang_wrapper CXX: ${{ github.workspace }}/ci/clang_wrapper++ with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} bazel-cache: objectivec_macos/${{ matrix.config }} bash: objectivec/DevTools/full_mac_build.sh ${{ matrix.flags }} - name: Report ccache stats shell: bash run: ccache -s -v pod-lib-lint: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: # Add back 'watchos'. See CocoaPods/CocoaPods#11558 PLATFORM: ["ios", "macos", "tvos"] CONFIGURATION: ["Debug", "Release"] name: CocoaPods ${{ matrix.PLATFORM}} ${{ matrix.CONFIGURATION}} runs-on: macos-12 env: DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer steps: - name: Checkout pending changes uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ inputs.safe-checkout }} - name: Pod lib lint run: | pod lib lint --verbose \ --configuration=${{ matrix.CONFIGURATION }} \ --platforms=${{ matrix.PLATFORM }} \ Protobuf.podspec bazel: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: include: # TODO: Could add iOS to atleast build the objc_library targets for that. - name: macOS bazel: //objectivec/... name: Bazel ${{ matrix.name }} runs-on: macos-12 steps: - name: Checkout pending changes uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ inputs.safe-checkout }} - name: Run tests uses: ./.github/actions/bazel with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} bazel: test ${{ matrix.bazel }} bazel-cache: objc_${{ matrix.name }}