name: Objective-C Tests on: workflow_call: inputs: continuous-run: required: true description: "Boolean string denoting whether this run is continuous -- empty string for presubmit, non-empty string for continuous." type: string safe-checkout: required: true description: "The SHA key for the commit we want to run over" type: string continuous-prefix: required: true description: "The string continuous-only tests should be prefixed with when displaying test results." type: string permissions: contents: read jobs: xcode: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: platform: ["macOS", "iOS"] xc_config: ["Debug", "Release"] # The "destination" entries need to match what is available for the selected Xcode. # See `.github/BUILD.bazel` for the Xcode info. include: - platform: "macOS" destination: "platform=macOS" xc_project: "ProtocolBuffers_OSX.xcodeproj" - platform: "iOS" destination: "platform=iOS Simulator,name=iPhone 13,OS=latest" xc_project: "ProtocolBuffers_iOS.xcodeproj" # We run presubmits on all "Debug" entries, but not on "Release" entries - xc_config: "Debug" - xc_config: "Release" continuous-only: true name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} Xcode ${{ matrix.platform}} ${{ matrix.xc_config }} runs-on: macos-12 env: DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer steps: - name: Checkout pending changes if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/checkout@v3 with: ref: ${{ inputs.safe-checkout }} - name: Setup ccache if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/ccache@v3 with: cache-prefix: objectivec_${{ matrix.platform }}_${{ matrix.xc_config }} support-modules: true - name: Run tests if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/bash@v3 env: CC: ${{ github.workspace }}/ci/clang_wrapper CXX: ${{ github.workspace }}/ci/clang_wrapper++ with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} command: | xcodebuild \ -project "objectivec/${{ matrix.xc_project }}" \ -scheme ProtocolBuffers \ -configuration ${{ matrix.xc_config }} \ -destination "${{ matrix.destination }}" \ test - name: Report ccache stats if: ${{ !matrix.continuous-only || inputs.continuous-run }} shell: bash run: ccache -s -v pod-lib-lint: strategy: fail-fast: false # Don't cancel all jobs if one fails. matrix: PLATFORM: ["ios", "macos", "tvos", "watchos", "visionos"] CONFIGURATION: ["Debug", "Release"] include: - OS: macos-12 XCODE: "14.1" - OS: macos-14 PLATFORM: "visionos" XCODE: "15.2" # We run presubmits on all "Debug" entries, but not on "Release" entries - CONFIGURATION: "Debug" - CONFIGURATION: "Release" continuous-only: true name: ${{ matrix.continuous-only && inputs.continuous-prefix || '' }} CocoaPods ${{ matrix.PLATFORM }} ${{ matrix.CONFIGURATION }} runs-on: ${{ matrix.OS }} steps: - name: Checkout pending changes if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/checkout@v3 with: ref: ${{ inputs.safe-checkout }} - name: Xcode version if: ${{ !matrix.continuous-only || inputs.continuous-run }} run: sudo xcode-select -switch /Applications/Xcode_${{ matrix.XCODE }}.app - name: Pod lib lint if: ${{ !matrix.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/bazel@v3 with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} bazel-cache: cocoapods/${{ matrix.XCODE }} bash: | ./regenerate_stale_files.sh $BAZEL_FLAGS --xcode_version="${{ matrix.XCODE }}" 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: config: - name: Optimized flags: --config=opt bazel_action: test continuous-only: true - name: Debug flags: --config=dbg bazel_action: test # Current github runners are all Intel based, so just build/compile # for Apple Silicon to detect issues there. - name: Apple_Silicon_Optimized flags: --config=opt --cpu=darwin_arm64 bazel_action: build continuous-only: true - name: Apple_Silicon_Debug flags: --config=dbg --cpu=darwin_arm64 bazel_action: build # TODO: Could add iOS to atleast build the objc_library targets for that. platform: ["macOS"] include: - platform: "macOS" bazel_targets: //objectivec/... name: ${{ matrix.config.continuous-only && inputs.continuous-prefix || '' }} Bazel ${{ matrix.platform }} ${{ matrix.config.name }} runs-on: macos-12 steps: - name: Checkout pending changes if: ${{ !matrix.config.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/checkout@v3 with: ref: ${{ inputs.safe-checkout }} - name: bazel ${{ matrix.config.bazel_action }} if: ${{ !matrix.config.continuous-only || inputs.continuous-run }} uses: protocolbuffers/protobuf-ci/bazel@v3 with: credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }} bazel: ${{ matrix.config.bazel_action }} ${{ matrix.config.flags }} ${{ matrix.bazel_targets }} bazel-cache: objc_${{ matrix.platform }}_${{ matrix.config.name }}