Skip to content

Commit

Permalink
Split BazelCI tasks into smaller pieces.
Browse files Browse the repository at this point in the history
This splits the "tools" and "rules" tasks, because each needs different flags to be applied.

This also disables failing tests, fixing bazelbuild#171. (See https://buildkite.com/bazel/rules-android/builds/2036)

PiperOrigin-RevId: 577853284
Change-Id: I1b62d7b7ef641a1a4431f8f7136a66dc9d9c3c76
  • Loading branch information
katre authored and JiaYan Lin committed Jan 23, 2024
1 parent 25a9913 commit df1be9c
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 61 deletions.
156 changes: 105 additions & 51 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,75 +2,129 @@

bazel: last_green

x_defaults:
common: &common
build_targets:
- "//src/..."
- "//test/..."
tools_flags: &tools_flags
? "--enable_bzlmod=false"
? "--incompatible_enable_android_toolchain_resolution=false"
# Sandboxed SDK tools depend on libraries that require Java runtime 17 or higher.
? "--java_runtime_version=17"
rules_flags: &rules_flags
? "--enable_bzlmod=false"
? "--incompatible_enable_android_toolchain_resolution=false"

tools: &tools
name: "Tools"
build_targets:
- "//android/..."
- "//rules/..."
- "//src/..."
- "-//src/java/com/example/sampleapp/..."
# TODO(rules_android): Switch these to use Java runfiles lookup and re-enable.
# TODO(https://github.com/bazelbuild/rules_android/issues/170):
# Re-enable when tests use proper way to find data files.
- "-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/..."
- "//test/..."
- "-//test/rules/..." # Tested in `rules`
- "//toolchains/..."
- "//tools/..."
- "-//tools/android/..." # TODO(#122): Un-exclude this once #122 is fixed.
test_targets:
# TODO(#171): Fix use of lxml in enforce_min_sdk_floor
- "-//src/tools/ak/rjar:rjar_test"
- "-//src/tools/ak/rjar/testdata/..."
- "-//src/tools/ak/shellapk:shellapk_test"
- "-//src/tools/ak/shellapk/testdata/..."
test_targets:
- "//src/..."
- "//test/..."
- "-//src/tools/enforce_min_sdk_floor/..."
- "-//src/java/com/example/sampleapp/..."
- "//test/..."
- "-//test/rules/..."
# TODO(https://github.com/bazelbuild/rules_android/issues/170):
# Re-enable when tests use proper way to find data files.
- "-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/apidescriptors:ExtractApiDescriptorsCommandTest"
- "-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/runtimeenabledsdkconfig:GenerateRuntimeEnabledSdkConfigCommandTest"
- "-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest:GenerateSdkDependenciesManifestCommandTest"
# TODO(#171): Fix use of lxml in enforce_min_sdk_floor
- "-//src/tools/enforce_min_sdk_floor/..."
# TODO(#180): Fix sdksplitproperties
- "-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdksplitproperties/..."
build_flags:
<<: *tools_flags
test_flags:
<<: *tools_flags
tools_bzlmod: &tools_bzlmod
name: "Tools Bzlmod"
build_flags:
<<: *tools_flags
? "--enable_bzlmod"
test_flags:
<<: *tools_flags
? "--enable_bzlmod"
<<: *tools
rules: &rules
name: "Rules"
build_targets:
- "//rules/..."
test_targets:
- "//test/rules/..."
# TODO(https://github.com/bazelbuild/rules_android/issues/169):
# Re-enable when these are less fragile.
- "-//test/rules/android_local_test/..."
build_flags:
- "--enable_bzlmod=false"
- "--incompatible_enable_android_toolchain_resolution=false"
test_flags:
- "--enable_bzlmod=false"
- "--incompatible_enable_android_toolchain_resolution=false"
# Sandboxed SDK tools depend on libraries that require Java runtime 17 or higher.
- "--java_runtime_version=17"
# TODO(#171): Fix use of lxml in enforce_min_sdk_floor
- "-//test/rules/android_binary_internal/r8_integration/..."
build_flags:
<<: *rules_flags
test_flags:
<<: *rules_flags
rules_bzlmod: &rules_bzlmod
name: "Rules Bzlmod"
build_flags:
<<: *rules_flags
? "--enable_bzlmod"
test_flags:
<<: *rules_flags
? "--enable_bzlmod"
<<: *rules

tasks:
ubuntu2004:
<<: *common
macos:
<<: *common
macos_arm64:
<<: *common
ubuntu2004_bzlmod:
name: Bzlmod ubuntu2004
ubuntu2004_tools:
platform: ubuntu2004
<<: *tools
ubuntu2004_rules:
platform: ubuntu2004
build_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
test_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
<<: *common
macos_bzlmods:
name: Bzlmod macos
<<: *rules
macos_tools:
platform: macos
build_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
test_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
<<: *common
macos_arm64_bzlmod:
name: Bzlmod macos_arm64
<<: *tools
macos_rules:
platform: macos
<<: *rules
macos_arm64_tools:
platform: macos_arm64
<<: *tools
macos_arm64_rules:
platform: macos_arm64
<<: *rules
ubuntu2004_tools_bzlmod:
platform: ubuntu2004
<<: *tools_bzlmod
ubuntu2004_rules_bzlmod:
platform: ubuntu2004
<<: *rules_bzlmod
macos_bzlmods_tools:
platform: macos
<<: *tools_bzlmod
macos_bzlmods_rules:
platform: macos
<<: *rules_bzlmod
macos_arm64_tools_bzlmod:
platform: macos_arm64
<<: *tools_bzlmod
macos_arm64_rules_bzlmod:
platform: macos_arm64
build_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
test_flags:
- "--enable_bzlmod"
- "--incompatible_enable_android_toolchain_resolution=false"
<<: *common
<<: *rules_bzlmod
# TODO(#171): Fix use of lxml in enforce_min_sdk_floor
#basicapp:
# platform: ubuntu2004
# name: basicapp
# working_directory: examples/basicapp
# build_flags:
# <<: *rules_flags
# build_targets:
# - "//java/com/basicapp:basic_app"
44 changes: 34 additions & 10 deletions kokoro/presubmit/presubmit_main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,18 @@ function main() {
"--experimental_google_legacy_api"
"--experimental_enable_android_migration_apis"
"--build_tests_only"
"--test_output=errors"
)

TOOL_ARGS=(
# Java tests use language version at least 11, but they might depend on
# libraries that were built for Java 17.
"--java_language_version=11"
"--java_runtime_version=17"
"--test_output=errors"
"--noenable_bzlmod"
"--noincompatible_enable_android_toolchain_resolution"
)
RULE_ARGS=(
"--noenable_bzlmod"
"--noincompatible_enable_android_toolchain_resolution"
)
Expand All @@ -100,37 +107,54 @@ function main() {
cd "${KOKORO_ARTIFACTS_DIR}/git/rules_android"

# Fetch all external deps; should reveal any bugs related to external dep
# references. First run this query with bzlmod enabled to catch missing
# bzlmod deps.
"$bazel" aquery 'deps(...)' "${COMMON_ARGS[@]}" --enable_bzlmod > /dev/null
# Perform the same aquery with bzlmod disabled to sniff out WORKSPACE issues
"$bazel" aquery 'deps(...)' "${COMMON_ARGS[@]}" --noenable_bzlmod > /dev/null
# references. First run with bzlmod enabled to catch missing bzlmod deps.
"$bazel" sync --enable_bzlmod > /dev/null
# Perform the same sync with bzlmod disabled to sniff out WORKSPACE issues
"$bazel" sync --noenable_bzlmod > /dev/null

TEST_TARGETS=(
TOOL_TEST_TARGETS=(
"//src/common/golang/..."
"//src/tools/ak/..."
"//src/tools/javatests/..."
"//src/tools/jdeps/..."
"//src/tools/java/..."
"//src/tools/mi/..."
"//test/..."
"-//test/rules/..." # Tested below.
# TODO(https://github.com/bazelbuild/rules_android/issues/170):
# Re-enable when tests use proper way to find data files.
"-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/apidescriptors:ExtractApiDescriptorsCommandTest"
"-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/runtimeenabledsdkconfig:GenerateRuntimeEnabledSdkConfigCommandTest"
"-//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest:GenerateSdkDependenciesManifestCommandTest"
)

"$bazel" test \
"${COMMON_ARGS[@]}" \
"${TOOL_ARGS[@]}" \
-- \
"${TOOL_TEST_TARGETS[@]}"

RULE_TEST_TARGETS=(
"//rules/..."
"//test/rules/..."
# TODO(https://github.com/bazelbuild/rules_android/issues/169):
# Re-enable when these are less fragile.
"-//test/rules/android_local_test/..."
)

"$bazel" test "${COMMON_ARGS[@]}" \
"$bazel" test \
"${COMMON_ARGS[@]}" \
"${RULE_ARGS[@]}" \
-- \
"${TEST_TARGETS[@]}"
"${RULE_TEST_TARGETS[@]}"

# Go to basic app workspace in the source tree
cd "${KOKORO_ARTIFACTS_DIR}/git/rules_android/examples/basicapp"
"$bazel" build "${COMMON_ARGS[@]}" //java/com/basicapp:basic_app
"$bazel" build \
"${COMMON_ARGS[@]}" \
"${RULE_ARGS[@]}" \
-- \
//java/com/basicapp:basic_app
}

main

0 comments on commit df1be9c

Please sign in to comment.