---
matrix:
  bzlmod_platforms: ["centos7_java11_devtoolset10", "ubuntu2004", "macos", "windows"]

tasks:
  bzlmod_builds:
    name: "Bazel Bzlmod build"
    platform: ${{ bzlmod_platforms }}
    build_flags:
      - "--config=bzlmod"
    build_targets:
      - "//src:bazel"
    test_targets:
      - "//src/test/cpp/..."
  centos7_java11_devtoolset10:
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--noremote_accept_cached"
    build_targets:
      - "//:bazel-distfile.zip"
      - "//scripts/packages/debian:bazel-debian.deb"
      - "//scripts/packages:with-jdk/install.sh"
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
    test_targets:
      - "//scripts/..."
      - "//src/java_tools/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162
      - "-//src/java_tools/buildjar/..."
      - "-//src/java_tools/import_deps_checker/..."
      # These tests are not compatible with the gcov version of CentOS 7.
      - "-//src/test/shell/bazel:bazel_cc_code_coverage_test"
      - "-//src/test/shell/bazel:bazel_coverage_cc_released_test_gcc"
      - "-//src/test/shell/bazel:bazel_coverage_cc_head_test_gcc"
      - "-//src/test/shell/bazel:bazel_coverage_sh_test"
      # https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms"
      - "-//src/test/shell/bazel/android:aapt_integration_test"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms"
    include_json_profile:
      - build
      - test
  ubuntu1804:
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_tag_filters=-no_1804"
      # Configure and enable tests that require access to the network.
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
    test_targets:
      - "//scripts/..."
      - "//src/java_tools/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162
      - "-//src/java_tools/import_deps_checker/..."
      # https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms"
      - "-//src/test/shell/bazel/android:aapt_integration_test"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms"
    include_json_profile:
      - build
      - test
  ubuntu1804_clang:
    platform: ubuntu1804
    environment:
      CC: clang
      CC_CONFIGURE_DEBUG: 1
    name: "Clang"
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_tag_filters=-no_1804"
    test_targets:
      - "//src/test/shell/bazel:cc_integration_test"
    include_json_profile:
      - build
      - test
  ubuntu2004:
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      # Configure and enable tests that require access to the network.
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
    test_targets:
      - "//scripts/..."
      - "//src/java_tools/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162
      - "-//src/java_tools/import_deps_checker/..."
      # https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms"
      - "-//src/test/shell/bazel/android:aapt_integration_test"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms"
    include_json_profile:
      - build
      - test
  macos:
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
      - ln -sf $OUTPUT_BASE/external $HOME/bazeltest/external
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_env=TEST_REPOSITORY_HOME=$HOME/bazeltest/external"
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$HOME/bazeltest/external"
      # Configure and enable tests that require access to the network.
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
      # Fine tune the number of test jobs running in parallel to avoid timeout
      - "--local_test_jobs=8"
    test_targets:
      - "//scripts/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      # C++ coverage is not supported on macOS yet.
      - "-//src/test/shell/bazel:bazel_cc_code_coverage_test"
      # MacOS does not have cgroups so it can't support hardened sandbox
      - "-//src/test/shell/integration:bazel_hardened_sandboxed_worker_test"
      # https://github.com/bazelbuild/bazel/issues/16526
      - "-//src/test/shell/bazel:starlark_repository_test"
      # https://github.com/bazelbuild/bazel/issues/17407
      - "-//src/test/shell/bazel/apple:bazel_apple_test"
      # https://github.com/bazelbuild/bazel/issues/17408
      - "-//src/test/shell/bazel/apple:bazel_objc_test"
      # https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms"
      - "-//src/test/shell/bazel/android:aapt_integration_test"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms"
      # https://github.com/bazelbuild/bazel/issues/17410
      - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest"
      # https://github.com/bazelbuild/bazel/issues/17411
      - "-//src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace:PatchApiBlackBoxTest"
      # https://github.com/bazelbuild/bazel/issues/17447
      - "-//src/test/java/com/google/devtools/build/lib/blackbox/tests/workspace:GitRepositoryBlackBoxTest"
      # https://github.com/bazelbuild/bazel/issues/17456
      - "-//src/test/shell/bazel:bazel_determinism_test"
      # https://github.com/bazelbuild/bazel/issues/17457
      - "-//src/test/shell/bazel:jdeps_test"
    include_json_profile:
      - build
      - test
  macos_arm64:
    shell_commands:
      - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' -e 's/^#
        android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
      - rm -rf $HOME/bazeltest
      - mkdir $HOME/bazeltest
      - ln -sf $OUTPUT_BASE/external $HOME/bazeltest/external
    build_flags:
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$OUTPUT_BASE/external"
      - "--test_env=TEST_REPOSITORY_HOME=$HOME/bazeltest/external"
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--sandbox_default_allow_network=false"
      - "--sandbox_writable_path=$HOME/bazeltest"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest/install_base"
      - "--test_env=TEST_REPOSITORY_HOME=$HOME/bazeltest/external"
      # Configure and enable tests that require access to the network.
      - "--test_env=REMOTE_NETWORK_ADDRESS=bazel.build:80"
    test_targets:
      - "//scripts/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      # C++ coverage is not supported on macOS yet.
      - "-//src/test/shell/bazel:bazel_cc_code_coverage_test"
      # MacOS does not have cgroups so it can't support hardened sandbox
      - "-//src/test/shell/integration:bazel_hardened_sandboxed_worker_test"
      # https://github.com/bazelbuild/bazel/issues/16521 & https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android/..."
      - "-//src/tools/android/java/com/google/devtools/build/android/..."
      - "-//src/test/java/com/google/devtools/build/android/dexer:AllTests"
      # https://github.com/bazelbuild/bazel/issues/16525
      - "-//src/test/java/com/google/devtools/build/lib/buildtool:KeepGoingTest"
      - "-//src/test/java/com/google/devtools/build/lib/buildtool:DanglingSymlinkTest"
      - "-//src/test/java/com/google/devtools/build/lib/buildtool:CompileOneDependencyIntegrationTest"
      - "-//src/test/java/com/google/devtools/build/lib/buildtool:SkymeldBuildIntegrationTest"
      - "-//src/test/java/com/google/devtools/build/lib/rules/objc:BazelJ2ObjcLibraryTest"
      - "-//src/test/java/com/google/devtools/build/lib/skyframe/rewinding:RewindingTest"
      - "-//src/test/java/com/google/devtools/build/lib/buildtool:MiscAnalysisTest"
      - "-//src/test/java/com/google/devtools/build/lib/rules/objc:ObjcRulesTests"
      # https://github.com/bazelbuild/bazel/issues/17007
      - "-//src/test/java/com/google/devtools/build/lib/platform:SystemMemoryPressureEventTest"
    include_json_profile:
      - build
      - test
  windows:
    batch_commands:
      - powershell -Command "(Get-Content WORKSPACE) -Replace '# android_', 'android_' | Set-Content WORKSPACE"
      - mkdir C:\b
      - mklink /J C:\b\bazeltest_external %OUTPUT_BASE:/=\%\external
    build_flags:
      - "--copt=-w"
      - "--host_copt=-w"
      - "--test_env=JAVA_HOME"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest_install_base"
      - "--test_env=TEST_REPOSITORY_HOME=C:/b/bazeltest_external"
      - "--noremote_accept_cached"
    build_targets:
      - "//src:bazel.exe"
      - "//src:bazel_jdk_minimal"
      - "//src:test_repos"
      - "//src/main/java/..."
    test_flags:
      - "--copt=-w"
      - "--host_copt=-w"
      - "--test_tag_filters=-no_windows,-slow"
      - "--test_env=JAVA_HOME"
      - "--test_env=BAZEL_VC"
      - "--test_env=TEST_INSTALL_BASE=$HOME/bazeltest_install_base"
      - "--test_env=TEST_REPOSITORY_HOME=C:/b/bazeltest_external"
    test_targets:
      - "//src:embedded_tools_size_test"
      - "//src/test/cpp/..."
      - "//src/test/java/com/google/devtools/build/android/..."
      - "//src/test/java/com/google/devtools/build/lib/..."
      - "//src/test/java/com/google/devtools/build/skyframe/..."
      - "//src/test/java/com/google/devtools/common/options/..."
      - "//src/test/native/windows/..."
      - "//src/test/py/bazel/..."
      - "//src/test/res/..."
      - "//src/test/shell/..."
      - "//src/tools/launcher/..."
      - "//src/tools/singlejar/..."
      - "//third_party/def_parser/..."
      - "//tools/android/..."
      - "//tools/aquery_differ/..."
      - "//tools/bash/..."
      - "//tools/build_defs/..."
      - "//tools/cpp/runfiles/..."
      - "//tools/java/..."
      - "//tools/jdk/..."
      - "//tools/python/..."
      - "//tools/test/..."
      # Re-enable the following tests on Windows:
      # https://github.com/bazelbuild/bazel/issues/4292
      - "-//src/test/java/com/google/devtools/build/android/r8/..."
      - "-//src/test/java/com/google/devtools/build/lib/query2/cquery/..."
      - "-//src/test/java/com/google/devtools/build/lib/query2/engine/..."
      - "-//src/test/java/com/google/devtools/build/lib/versioning/..."
      - "-//src/test/java/com/google/devtools/build/lib/worker/..."
      - "-//src/test/java/com/google/devtools/build/lib/remote:remote"
      - "-//src/test/shell/bazel/remote/..."
      - "-//tools/python:pywrapper_test"
    include_json_profile:
      - build
      - test
  rbe_ubuntu1804:
    platform: ubuntu1804
    shell_commands:
      - sed -i.bak
        -e 's/^# android_sdk_repository/android_sdk_repository/'
        -e 's/^# android_ndk_repository/android_ndk_repository/' WORKSPACE
      - rm -f WORKSPACE.bak
    build_flags:
      - "--config=ubuntu1804_java11"
      - "--remote_executor=grpcs://remotebuildexecution.googleapis.com"
      - "--jobs=200"
      - "--experimental_remote_download_outputs=minimal"
      - "--experimental_inmemory_jdeps_files"
      - "--experimental_inmemory_dotd_files"
    build_targets:
      - "//src:bazel"
      - "//src:bazel_jdk_minimal"
      - "//src/main/java/..."
    test_flags:
      - "--config=ubuntu1804_java11"
      - "--remote_executor=grpcs://remotebuildexecution.googleapis.com"
      - "--jobs=200"
      - "--experimental_remote_download_outputs=minimal"
      - "--experimental_inmemory_jdeps_files"
      - "--experimental_inmemory_dotd_files"
      - "--test_tag_filters=-no_1804"
    test_targets:
      - "//scripts/..."
      - "//src/java_tools/..."
      - "//src/test/..."
      - "//src/tools/execlog/..."
      - "//src/tools/singlejar/..."
      - "//src/tools/workspacelog/..."
      - "//third_party/ijar/..."
      - "//tools/aquery_differ/..."
      - "//tools/python/..."
      - "//tools/android/..."
      # See https://github.com/bazelbuild/bazel/issues/8033
      - "-//src/tools/singlejar:output_jar_simple_test"
      - "-//src/test/shell/bazel:external_integration_test"
      - "-//src/test/shell/bazel:bazel_repository_cache_test"
      - "-//src/test/shell/integration:java_integration_test"
      - "-//src/test/java/com/google/devtools/build/lib/sandbox/..."
      # See https://github.com/bazelbuild/bazel/issues/8162 (also disabled for local exec)
      - "-//src/java_tools/buildjar/..."
      - "-//src/java_tools/import_deps_checker/..."
      # We hit connection timeout error when downloading multiple URLs on RBE, see b/217865760
      - "-//src/test/py/bazel:bazel_module_test"
      - "-//src/test/py/bazel:bazel_lockfile_test"
      - "-//src/test/py/bazel:bazel_overrides_test"
      - "-//src/test/py/bazel:bazel_repo_mapping_test"
      - "-//src/test/py/bazel:bazel_yanked_versions_test"
      - "-//src/test/shell/bazel:verify_workspace"
      # https://github.com/bazelbuild/bazel/issues/18776
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:android_instrumentation_test_integration_test_with_platforms"
      - "-//src/test/shell/bazel/android:aapt_integration_test"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_head_android_tools"
      - "-//src/test/shell/bazel/android:aapt_integration_test_with_platforms"
    include_json_profile:
      - build
      - test
  kythe_ubuntu2004:
    shell_commands:
    - sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/'
      -e 's/^# android_ndk_repository/android_ndk_repository/' WORKSPACE
    - rm -f WORKSPACE.bak
    index_flags:
    - "--define=kythe_corpus=github.com/bazelbuild/bazel"
    index_targets_query: "kind(\"cc_(binary|library|test|proto_library) rule\", ...) union kind(\"java_(binary|import|library|plugin|test|proto_library) rule\", ...) union kind(\"proto_library rule\", ...)"
    index_upload_policy: Always
    index_upload_gcs: True
