Run some Bazel tests on `rules_java` presubmits This should help catch (most) issues sooner and hopefully obviate the need to make Bazel PRs with unreleased `rules_java` archives. This will also come in handy when migrating the rules out of `@builtins`. For now, this is only for linux. I'll add testing on other platforms as a followup. PiperOrigin-RevId: 595654881 Change-Id: I71d98e94921996155a3d9c68d89df2c1ab938409
diff --git a/.bazel_checkout/__README b/.bazel_checkout/__README new file mode 100644 index 0000000..6de50f3 --- /dev/null +++ b/.bazel_checkout/__README
@@ -0,0 +1,4 @@ +This directory exists just so we can clone Bazel sources and run tests on presubmit + +At some point, we should migrate the tests we care about, out of Bazel and into +rules_java. \ No newline at end of file
diff --git a/.bazel_checkout/setup.sh b/.bazel_checkout/setup.sh new file mode 100644 index 0000000..f1981a6 --- /dev/null +++ b/.bazel_checkout/setup.sh
@@ -0,0 +1,51 @@ +#!/usr/bin/env bash +set -e +set -x + +FAKE_BCR_ROOT=$(mktemp -d --tmpdir fake-bcr.XXX) +FAKE_RULES_JAVA_ROOT=${FAKE_BCR_ROOT}/modules/rules_java +FAKE_MODULE_VERSION=9999 +FAKE_MODULE_ROOT=${FAKE_RULES_JAVA_ROOT}/${FAKE_MODULE_VERSION} +FAKE_ARCHIVE=${FAKE_MODULE_ROOT}/rules_java.tar.gz +mkdir -p ${FAKE_MODULE_ROOT} + +# relying on the line number is not great, but :shrugs: +sed -e "3 c version = \"${FAKE_MODULE_VERSION}\"," ../MODULE.bazel > ${FAKE_MODULE_ROOT}/MODULE.bazel + +tar zcf ${FAKE_ARCHIVE} ../ +RULES_JAVA_INTEGRITY_SHA256=`cat ${FAKE_ARCHIVE} | openssl dgst -sha256 -binary | base64` +cat << EOF > ${FAKE_MODULE_ROOT}/source.json +{ + "integrity": "sha256-${RULES_JAVA_INTEGRITY_SHA256}", + "strip_prefix": "", + "url": "file://${FAKE_ARCHIVE}" +} +EOF + +# fetch and setup bazel sources +git init +git remote add origin https://github.com/bazelbuild/bazel.git +git pull origin master +sed -i.bak -e 's/^# android_sdk_repository/android_sdk_repository/' \ + -e 's/^# android_ndk_repository/android_ndk_repository/' \ + WORKSPACE.bzlmod +rm -f WORKSPACE.bzlmod.bak +rm -rf $HOME/bazeltest +mkdir $HOME/bazeltest + +echo "common --registry=https://bcr.bazel.build" >> .bazelrc +echo "common --registry=file://${FAKE_BCR_ROOT}" >> .bazelrc +echo "add_to_bazelrc \"common --registry=https://bcr.bazel.build\"" >> src/test/shell/testenv.sh.tmpl +echo "add_to_bazelrc \"common --registry=file://${FAKE_BCR_ROOT}\"" >> src/test/shell/testenv.sh.tmpl + +SED_CMD="s/bazel_dep(name = \"rules_java\".*/bazel_dep(name = \"rules_java\", version = \"${FAKE_MODULE_VERSION}\")/" +sed -i "${SED_CMD}" MODULE.bazel +sed -i "${SED_CMD}" src/MODULE.tools + +BAZEL_QUIET_MODE_ARGS="--ui_event_filters=error,fail" + +bazel run ${BAZEL_QUIET_MODE_ARGS} //src/test/tools/bzlmod:update_default_lock_file -- \ + --registry="https://bcr.bazel.build" --registry="file://${FAKE_BCR_ROOT}" ${BAZEL_QUIET_MODE_ARGS} +bazel mod deps --lockfile_mode=update +# populate repo cache so tests don't need to access network +bazel fetch --config=ci-linux --all ${BAZEL_QUIET_MODE_ARGS}
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index e11ebe7..f7efa15 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml
@@ -49,3 +49,30 @@ build_flags: - "--config=bzlmod" build_targets: *build_targets_bzlmod + ubuntu2004_bazel_tests: + environment: + USE_BAZEL_DIFF: "" + platform: ubuntu2004 + working_directory: .bazel_checkout + shell_commands: + - sh setup.sh + build_flags: + - "--config=ci-linux" + test_flags: + - "--config=ci-linux" + 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_targets: + - "//src/java_tools/..." + - "//src/test/java/com/google/devtools/build/lib/rules/java/..." + - "//src/test/java/com/google/devtools/build/lib/view/java/..." + - "//src/test/shell/bazel:bazel_java_test" + - "//src/test/shell/bazel:bazel_coverage_java_test" + # Re-enable once fixed: https://github.com/bazelbuild/bazel/issues/8162 + - "-//src/java_tools/import_deps_checker/..."