Skip to content

Make BazelRunfileBridge work with rules_xcodeproj #3231

Make BazelRunfileBridge work with rules_xcodeproj

Make BazelRunfileBridge work with rules_xcodeproj #3231

Workflow file for this run

name: Tests
on:
pull_request:
push:
branches:
- master
# One active job per PR, cancel older ones on push
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
# NOTE: because matrix cannot easily be shared across jobs, it should be copied to each job
# when adding a new job / changing the matrix, make sure to update all jobs
jobs:
integration_tests:
name: Build and test (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }} / VFS ${{ matrix.virtual_frameworks }} / Sandbox ${{ matrix.sandbox }} / Latest rules ${{ matrix.latest_rules }})
runs-on: macos-14
strategy:
fail-fast: false
matrix:
bazel_version: [6.5.0, 7.1.0]
xcode_version: [15.2]
virtual_frameworks: [true, false]
sandbox: [true, false]
latest_rules: [true, false]
env:
XCODE_VERSION: ${{ matrix.xcode_version }}
USE_BAZEL_VERSION: ${{ matrix.bazel_version }}
LATEST_RULES_SWIFT_VERSION: 2.1.1
LATEST_RULES_APPLE_VERSION: 3.8.0
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Preflight Env
run: .github/workflows/preflight_env.sh
- if: matrix.virtual_frameworks
name: Add vfs config
run: |
echo "build --config=vfs" >> user.bazelrc
- if: matrix.sandbox
name: Enable sandbox mode
run: |
echo "build --config=sandboxed" >> user.bazelrcc
- if: matrix.latest_rules
name: Use latest rules
run: |
gh repo clone bazelbuild/rules_swift /tmp/rules_swift -- --branch "${{ env.LATEST_RULES_SWIFT_VERSION }}" --depth=1
echo "common --override_module=rules_swift=/tmp/rules_swift" >> user.bazelrc
gh repo clone bazelbuild/rules_apple /tmp/rules_apple -- --branch "${{ env.LATEST_RULES_APPLE_VERSION }}" --depth=1
echo "common --override_module=rules_apple=/tmp/rules_apple" >> user.bazelrc
- name: Build and Test
run: |
echo "Running with config:"
cat user.bazelrc
# non-iOS tests
bazelisk test \
-- \
//... \
-//tests/ios/...
# Clean up after simctl (https://github.com/bazelbuild/rules_apple/issues/185)
pgrep Simulator | xargs kill || true
# Create single ephemeral iOS sim
SIMULATOR_UDID=$(python3 tools/tests/prepare_sim.py)
# iOS tests
bazelisk test \
--config=ios \
--test_arg=--destination=platform=ios_simulator,id=$SIMULATOR_UDID \
-- \
//tests/ios/...
- uses: actions/upload-artifact@v4
if: failure()
with:
name: bazel-testlogs
path: bazel-testlogs
build_arm64_simulator:
name: arm64 Simulator (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }})
runs-on: macos-14
strategy:
fail-fast: false
matrix:
bazel_version: [6.5.0, 7.1.0]
xcode_version: [15.2]
env:
XCODE_VERSION: ${{ matrix.xcode_version }}
USE_BAZEL_VERSION: ${{ matrix.bazel_version }}
steps:
- uses: actions/checkout@v4
- name: Preflight Env
run: .github/workflows/preflight_env.sh
- name: Build and Test
run: |
bazelisk build \
--config=vfs \
--features apple.arm64_simulator_use_device_deps \
--ios_multi_cpus=sim_arm64 \
-- \
//... \
-//tests/ios/...
# Misc issues:
# - Fails on a non fat framework for //tests/ios/unit-test/test-imports-app/
bazelisk build \
--config=ios \
--config=vfs \
--features apple.arm64_simulator_use_device_deps \
--ios_multi_cpus=sim_arm64 \
-- \
//tests/ios/... \
-//tests/ios/unit-test/test-imports-app/...
- uses: actions/upload-artifact@v4
if: failure()
with:
name: bazel-testlogs
path: bazel-testlogs
buildifier-and-docs:
name: Buildifier and Documentation (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }})
runs-on: macos-14
strategy:
fail-fast: false
matrix:
bazel_version: [7.1.0] # Only run on latest Bazel version as stardoc changes between versions and produces different results
xcode_version: [15.2]
env:
XCODE_VERSION: ${{ matrix.xcode_version }}
USE_BAZEL_VERSION: ${{ matrix.bazel_version }}
steps:
- uses: actions/checkout@v4
- name: Preflight Env
run: .github/workflows/preflight_env.sh
# Note: we need to pass the absolute to the Bazel run
- name: buildifier
run: |
find $PWD -type f \( -name 'WORKSPACE' -o -name '*.bzl' -o -name '*.bazel' \) | xargs bazel run //:buildifier -- -lint=fix
git diff --exit-code
- name: Check docs
run: |
bazelisk run \
//docs
git diff --exit-code docs
- uses: actions/upload-artifact@v4
if: failure()
with:
name: bazel-testlogs
path: bazel-testlogs
multi_arch_support:
# i386 was removed on rules_apple 3.x.x - this test case needs reworking
# to exemplify fat binaries on the latest version
name: iOS App Multiple Architectures (Bazel ${{ matrix.bazel_version }} / Xcode ${{ matrix.xcode_version }})
runs-on: macos-14
strategy:
fail-fast: false
matrix:
bazel_version: [6.5.0, 7.1.0]
xcode_version: [15.2]
env:
XCODE_VERSION: ${{ matrix.xcode_version }}
USE_BAZEL_VERSION: ${{ matrix.bazel_version }}
steps:
- uses: actions/checkout@v4
- name: Preflight Env
run: .github/workflows/preflight_env.sh
- name: Build App
run: |
bazelisk build \
--config=ios_multi_arch_test \
-- \
tests/ios/app/App