Fix workspace resolution for development (#1231)

Align versions tween bzlmod and workspace
Switch to the fancy bazel ci rules for rbe.
Enable RBE for integration tests (huuuuge difference)
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 6a5430f..b45602f 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -10,9 +10,9 @@
     # - windows re-enable when rules_bazel_integration_test can support custom test runner on windows.
   test_flags:
     - ["--enable_bzlmod=true"]
-    - ["--enable_bzlmod=false"]
+    - ["--config=workspace"]
 validate_config: 1
-bazel: 7.1.1
+bazel: 7.3.0
 buildifier:
   version: 7.1.1
   # no lint warnings for the moment. They are basically a smoke alarm in hell.
@@ -25,22 +25,17 @@
     build_flags: ${{ test_flags }}
     test_flags: ${{ test_flags }}
     test_targets:
-      - "//:all_tests"
+      - "//src/..."
     build_targets:
-      - "//:rules_kotlin_release"
+      - "//src/..."
   integration_tests:
     name: "Integration Tests"
     platform: ${{ integration_platform }}
     test_flags:
-      - "--enable_bzlmod=true"
+      - "--config=rbe"
     test_targets:
       - //examples:all
   rbe_ubuntu1604:
-    build_flags:
-      - "--enable_bzlmod=false"
-      - "--config=rbe"
-      - "--host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java11"
-      - "--java_toolchain=@bazel_tools//tools/jdk:toolchain_java11"
     test_targets:
       - "--"
       - "//src/test/kotlin/io/bazel/kotlin/builder:builder_tests"
@@ -51,8 +46,8 @@
     test_flags:
       # Override the default worker strategy for remote builds (worker strategy
       # cannot be used with remote builds)
-      - "--strategy=KotlinCompile=remote"
       - "--config=rbe"
+      - "--strategy=KotlinCompile=remote"
   stardoc:
     name: Stardoc api documentation
     platform: ubuntu1804
diff --git a/.bazelrc b/.bazelrc
index b78cc00..0a74bad 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -3,6 +3,8 @@
 common:rbe --java_runtime_version=11
 common:rbe --tool_java_runtime_version=11
 
+common:workspace --enable_bzlmod=false --enable_workspace=true
+
 build --strategy=KotlinCompile=worker
 build --test_output=all
 build --verbose_failures
diff --git a/MODULE.bazel b/MODULE.bazel
index 8bd847c..3c7aa1c 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -7,7 +7,7 @@
 
 bazel_dep(name = "platforms", version = "0.0.10")
 bazel_dep(name = "bazel_skylib", version = "1.7.1")
-bazel_dep(name = "rules_java", version = "7.2.0")
+bazel_dep(name = "rules_java", version = "7.6.5")
 bazel_dep(name = "rules_python", version = "0.23.1")
 bazel_dep(name = "rules_cc", version = "0.0.9")
 bazel_dep(name = "rules_android", version = "0.1.1")
@@ -15,7 +15,6 @@
 rules_kotlin_extensions = use_extension("//src/main/starlark/core/repositories:bzlmod_setup.bzl", "rules_kotlin_extensions")
 use_repo(
     rules_kotlin_extensions,
-    "buildkite_config",
     "com_github_google_ksp",
     "com_github_jetbrains_kotlin",
     "com_github_jetbrains_kotlin_git",
@@ -51,6 +50,14 @@
 # we need to sort out a few cases around how these rules are consumed in various ways.
 
 bazel_dep(name = "rules_jvm_external", version = "5.3")
+bazel_dep(name = "bazel_ci_rules", version = "1.0.0")
+
+rbe_preconfig = use_repo_rule("@bazel_ci_rules//:rbe_repo.bzl", "rbe_preconfig")
+
+rbe_preconfig(
+    name = "buildkite_config",
+    toolchain = "ubuntu2004",
+)
 
 maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
 maven.install(
diff --git a/src/main/starlark/core/repositories/BUILD b/src/main/starlark/core/repositories/BUILD
index aae87d8..4e7723a 100644
--- a/src/main/starlark/core/repositories/BUILD
+++ b/src/main/starlark/core/repositories/BUILD
@@ -39,7 +39,4 @@
     name = "repositories",
     srcs = glob(["*.bzl"]),
     visibility = ["//:__subpackages__"],
-    deps = [
-        "@rules_proto//proto:defs",
-    ],
 )
diff --git a/src/main/starlark/core/repositories/bzlmod_setup.bzl b/src/main/starlark/core/repositories/bzlmod_setup.bzl
index d4f5616..fa5ab15 100644
--- a/src/main/starlark/core/repositories/bzlmod_setup.bzl
+++ b/src/main/starlark/core/repositories/bzlmod_setup.bzl
@@ -32,13 +32,6 @@
         ],
     )
 
-    # This tarball intentionally does not have a SHA256 because the upstream URL can change without notice
-    # For more context: https://github.com/bazelbuild/bazel-toolchains/blob/0c1f7c3c5f9e63f1e0ee91738b964937eea2d3e0/WORKSPACE#L28-L32
-    http_archive(
-        name = "buildkite_config",
-        urls = _versions.RBE.URLS,
-    )
-
     return modules.use_all_repos(mctx, reproducible = True)
 
 rules_kotlin_extensions = module_extension(
diff --git a/src/main/starlark/core/repositories/download.bzl b/src/main/starlark/core/repositories/download.bzl
index 0a5b3f3..29122e6 100644
--- a/src/main/starlark/core/repositories/download.bzl
+++ b/src/main/starlark/core/repositories/download.bzl
@@ -20,10 +20,25 @@
     """
     Downloads all necessary http_* artifacts for rules_kotlin dev configuration.
 
-    Must be called before setup_dependencies in the versions.WORKSPACE.
+    Must be called before setup_dependencies in the WORKSPACE.
     """
+    versions.use_repository(
+        name = "rules_proto",
+        version = versions.RULES_PROTO,
+        rule = rules_stardoc_repository,
+        starlark_packages = [
+            "proto",
+            "proto/private",
+        ],
+    )
 
-    # bazel_skylib is initialized twice during developement. This is intentional, as development
+    versions.use_repository(
+        rule = http_archive,
+        name = "rules_cc",
+        version = versions.RULES_CC,
+    )
+
+    # bazel_skylib is initialized twice during development. This is intentional, as development
     # needs to be able to run the starlark unittests, while production does not.
     maybe(
         http_archive,
@@ -43,12 +58,16 @@
         ],
     )
 
-    # This tarball intentionally does not have a SHA256 because the upstream URL can change without notice
-    # For more context: https://github.com/bazelbuild/bazel-toolchains/blob/0c1f7c3c5f9e63f1e0ee91738b964937eea2d3e0/WORKSPACE#L28-L32
-    maybe(
-        http_archive,
-        name = "buildkite_config",
-        urls = versions.RBE.URLS,
+    versions.use_repository(
+        name = "rules_python",
+        rule = http_archive,
+        version = versions.RULES_PYTHON,
+    )
+
+    versions.use_repository(
+        name = "rules_java",
+        rule = http_archive,
+        version = versions.RULES_JAVA,
     )
 
     maybe(
@@ -88,13 +107,22 @@
     )
 
     versions.use_repository(
-        name = "rules_proto",
-        version = versions.RULES_PROTO,
-        rule = rules_stardoc_repository,
-        starlark_packages = [
-            "proto",
-            "proto/private",
-        ],
+        name = "rules_testing",
+        rule = http_archive,
+        version = versions.RULES_TESTING,
+        strip_prefix = "rules_testing-%s" % versions.RULES_TESTING.version,
+    )
+
+    versions.use_repository(
+        name = "rules_bazel_integration_test",
+        rule = http_archive,
+        version = versions.RULES_BAZEL_INTEGRATION_TEST,
+    )
+
+    versions.use_repository(
+        name = "cgrindel_bazel_starlib",
+        rule = http_archive,
+        version = versions.CGRINDEL_BAZEL_STARLIB,
     )
 
     versions.use_repository(
diff --git a/src/main/starlark/core/repositories/initialize.release.bzl b/src/main/starlark/core/repositories/initialize.release.bzl
index 1ca9dfd..e97a393 100644
--- a/src/main/starlark/core/repositories/initialize.release.bzl
+++ b/src/main/starlark/core/repositories/initialize.release.bzl
@@ -105,12 +105,6 @@
     )
 
     versions.use_repository(
-        name = "rules_python",
-        rule = http_archive,
-        version = versions.RULES_PYTHON,
-    )
-
-    versions.use_repository(
         name = "rules_java",
         rule = http_archive,
         version = versions.RULES_JAVA,
diff --git a/src/main/starlark/core/repositories/setup.bzl b/src/main/starlark/core/repositories/setup.bzl
index 7af71e0..f984de6 100644
--- a/src/main/starlark/core/repositories/setup.bzl
+++ b/src/main/starlark/core/repositories/setup.bzl
@@ -13,8 +13,12 @@
 # limitations under the License.
 
 load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+load("@cgrindel_bazel_starlib//:deps.bzl", "bazel_starlib_dependencies")
 load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories")
 load("@released_rules_kotlin//src/main/starlark/core/repositories:initialize.bzl", release_kotlin_repositories = "kotlin_repositories")
+load("@rules_bazel_integration_test//bazel_integration_test:deps.bzl", "bazel_integration_test_rules_dependencies")
+load("@rules_cc//cc:repositories.bzl", "rules_cc_dependencies", "rules_cc_toolchains")
+load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")
 load("@rules_jvm_external//:defs.bzl", "maven_install")
 load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
 load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
@@ -29,6 +33,15 @@
 
     native.register_toolchains("@released_rules_kotlin//kotlin/internal:default_toolchain")
 
+    rules_cc_dependencies()
+    rules_cc_toolchains()
+
+    rules_proto_dependencies()
+    rules_proto_toolchains()
+
+    rules_java_dependencies()
+    rules_java_toolchains()
+
     maven_install(
         name = "kotlin_rules_maven",
         fetch_sources = True,
@@ -39,10 +52,12 @@
             "com.google.protobuf:protobuf-java-util:3.6.0",
             "com.google.guava:guava:27.1-jre",
             "com.google.truth:truth:0.45",
-            "com.google.auto.service:auto-service:1.0.1",
-            "com.google.auto.service:auto-service-annotations:1.0.1",
+            "com.google.auto.service:auto-service:1.1.1",
+            "com.google.auto.service:auto-service-annotations:1.1.1",
+            "com.google.auto.service:auto-service-annotations:jar:1.1.1",
             "com.google.auto.value:auto-value:1.10.1",
             "com.google.auto.value:auto-value-annotations:1.10.1",
+            "org.apache.commons:commons-compress:1.26.2",
             "com.google.dagger:dagger:2.51",
             "com.google.dagger:dagger-compiler:2.51",
             "com.google.dagger:dagger-producers:2.51",
@@ -55,7 +70,6 @@
             "com.squareup.moshi:moshi:1.15.0",
             "com.squareup.moshi:moshi-kotlin:1.15.0",
             "com.squareup.moshi:moshi-kotlin-codegen:1.15.0",
-            "com.google.auto.service:auto-service-annotations:jar:1.1.1",
         ],
         repositories = [
             "https://maven-central.storage.googleapis.com/repos/central/data/",
@@ -64,11 +78,15 @@
         ],
     )
 
-    rules_proto_dependencies()
-    rules_proto_toolchains()
+    rules_cc_dependencies()
+    rules_cc_toolchains()
 
     rules_pkg_dependencies()
 
     stardoc_repositories()
 
     bazel_skylib_workspace()
+
+    bazel_integration_test_rules_dependencies()
+    bazel_starlib_dependencies()
+    bazel_skylib_workspace()
diff --git a/src/main/starlark/core/repositories/versions.bzl b/src/main/starlark/core/repositories/versions.bzl
index 3b3e708..5b7b49a 100644
--- a/src/main/starlark/core/repositories/versions.bzl
+++ b/src/main/starlark/core/repositories/versions.bzl
@@ -20,8 +20,6 @@
     maybe(rule, name = name, **http_archive_arguments)
 
 versions = struct(
-    RULES_NODEJS_VERSION = "5.5.3",
-    RULES_NODEJS_SHA = "f10a3a12894fc3c9bf578ee5a5691769f6805c4be84359681a785a0c12e8d2b6",
     BAZEL_TOOLCHAINS_VERSION = "4.1.0",
     BAZEL_TOOLCHAINS_SHA = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024",
     # IMPORTANT! rules_kotlin does not use the bazel_skylib unittest in production
@@ -33,8 +31,6 @@
     # --> 3. Configure dependencies <--
     SKYLIB_VERSION = "1.4.2",
     SKYLIB_SHA = "66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa",
-    PROTOBUF_VERSION = "3.11.3",
-    PROTOBUF_SHA = "cf754718b0aa945b00550ed7962ddc167167bd922b842199eeb6505e6f344852",
     RULES_JVM_EXTERNAL_TAG = "5.3",
     RULES_JVM_EXTERNAL_SHA = "d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac",
     RULES_PROTO = version(
@@ -80,17 +76,19 @@
         URLS = ["https://github.com/bazelbuild/rules_android/archive/v%s.zip" % "0.1.1"],
     ),
     # To update: https://github.com/bazelbuild/bazel-toolchains#latest-bazel-and-latest-ubuntu-1604-container
-    RBE = struct(
+    BAZELCI_RULES = struct(
+        version = "1.0.0",
+        sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
         # This tarball intentionally does not have a SHA256 because the upstream URL can change without notice
         # For more context: https://github.com/bazelbuild/bazel-toolchains/blob/0c1f7c3c5f9e63f1e0ee91738b964937eea2d3e0/WORKSPACE#L28-L32
-        URLS = ["https://storage.googleapis.com/rbe-toolchain/bazel-configs/rbe-ubuntu1604/latest/rbe_default.tar"],
+        URLS = ["https://github.com/bazelbuild/continuous-integration/releases/download/rules-{version}/bazelci_rules-{version}.tar.gz"],
     ),
     PKG = version(
-        version = "0.7.0",
+        version = "1.0.1",
         url_templates = [
             "https://github.com/bazelbuild/rules_pkg/releases/download/{version}/rules_pkg-{version}.tar.gz",
         ],
-        sha256 = "8a298e832762eda1830597d64fe7db58178aa84cd5926d76d5b744d6558941c2",
+        sha256 = "d20c951960ed77cb7b341c2a59488534e494d5ad1d30c4818c736d57772a9fef",
     ),
     # needed for rules_pkg and java
     RULES_KOTLIN = version(
@@ -126,11 +124,11 @@
         sha256 = None,
     ),
     RULES_TESTING = version(
-        version = "0.5.0",
+        version = "0.6.0",
         url_templates = [
             "https://github.com/bazelbuild/rules_testing/releases/download/v{version}/rules_testing-v{version}.tar.gz",
         ],
-        sha256 = "b84ed8546f1969d700ead4546de9f7637e0f058d835e47e865dcbb13c4210aed",
+        sha256 = "02c62574631876a4e3b02a1820cb51167bb9cdcdea2381b2fa9d9b8b11c407c4",
     ),
     KOTLINX_SERIALIZATION_CORE_JVM = version(
         version = "1.6.3",
@@ -153,5 +151,25 @@
         ],
         sha256 = "d3234179bcff1886d53d67c11eca47f7f3cf7b63c349d16965f6db51b7f3dd9a",
     ),
+    RULES_BAZEL_INTEGRATION_TEST = version(
+        version = "0.26.0",
+        url_templates = [
+            "https://github.com/bazel-contrib/rules_bazel_integration_test/releases/download/v{version}/rules_bazel_integration_test.v{version}.tar.gz",
+        ],
+        sha256 = "ab56cdd55a28781287242c7124ce9ff791ae8318ed641057f10edd98c55d7ed5",
+    ),
+    CGRINDEL_BAZEL_STARLIB = version(
+        version = "0.21.0",
+        sha256 = "43e375213dabe0c3928e65412ea7ec16850db93285c8c6f8b0eaa41cacd0f882",
+        url_templates = [
+            "https://github.com/cgrindel/bazel-starlib/releases/download/v{version}/bazel-starlib.v{version}.tar.gz",
+        ],
+    ),
+    RULES_CC = version(
+        version = "0.0.9",
+        url_templates = ["https://github.com/bazelbuild/rules_cc/releases/download/{version}/rules_cc-{version}.tar.gz"],
+        sha256 = "2037875b9a4456dce4a79d112a8ae885bbc4aad968e6587dca6e64f3a0900cdf",
+        strip_prefix_template = "rules_cc-{version}",
+    ),
     use_repository = _use_repository,
 )