Fix rules_swift 2 compatibility issues #3194
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |