From e1df68e3826ae324291dc067c514e1dcafdb6911 Mon Sep 17 00:00:00 2001 From: Sam Gammon Date: Mon, 18 Mar 2024 15:29:24 -0700 Subject: [PATCH] chore: build fixes, buildbuddy, faster bazel builds Signed-off-by: Sam Gammon --- .bazelrc | 3 +++ .github/bazel.rc | 29 +++++++++++++++++++++++ .github/bazel.workspace | 5 ++++ .github/codecov.yml | 1 + .github/workflows/ci.build-test.yml | 9 +++++++ .github/workflows/ci.publish-package.yml | 1 - .github/workflows/ci.publish-packages.yml | 25 +++++++++---------- .gitignore | 1 + Makefile | 11 ++++++++- local.bazelrc.tpl | 4 ++++ tools/bazel.rc | 24 +++++++++++++++++++ tools/project.bazelrc | 2 ++ 12 files changed, 99 insertions(+), 16 deletions(-) create mode 100644 .bazelrc create mode 100644 .github/bazel.rc create mode 100644 .github/bazel.workspace create mode 100644 local.bazelrc.tpl create mode 100644 tools/bazel.rc create mode 100644 tools/project.bazelrc diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 00000000..2215a3c7 --- /dev/null +++ b/.bazelrc @@ -0,0 +1,3 @@ + +import tools/bazel.rc + diff --git a/.github/bazel.rc b/.github/bazel.rc new file mode 100644 index 00000000..8fa3faf9 --- /dev/null +++ b/.github/bazel.rc @@ -0,0 +1,29 @@ +common --announce_rc +common --enable_platform_specific_config +common --experimental_isolated_extension_usages + +build:buildbuddy-ci --bes_results_url=https://skunkworks.buildbuddy.io/invocation/ +build:buildbuddy-ci --bes_backend=grpcs://skunkworks.buildbuddy.io +build:buildbuddy-ci --remote_cache=grpcs://skunkworks.buildbuddy.io +build:buildbuddy-ci --remote_timeout=3600 +build:buildbuddy-ci --remote_download_minimal +build:buildbuddy-ci --noslim_profile +build:buildbuddy-ci --nolegacy_important_outputs + +build:buildbuddy-ci --experimental_remote_cache_compression +build:buildbuddy-ci --experimental_remote_build_event_upload=minimal +build:buildbuddy-ci --experimental_profile_include_target_label +build:buildbuddy-ci --experimental_profile_include_primary_output +build:buildbuddy-ci --experimental_inmemory_jdeps_files +build:buildbuddy-ci --experimental_inmemory_dotd_files + +build:remote-exec --remote_executor=grpcs://skunkworks.buildbuddy.io + +build --config=buildbuddy-ci + +build:ci-metadata --build_metadata=ROLE=CI +build:ci-metadata --build_metadata=HOST=gha +build:ci-metadata --build_metadata=VISIBILITY=PUBLIC +build:ci-metadata --build_metadata=REPO_URL=https://github.com/elide-dev/jpms.git + +build --config=ci-metadata diff --git a/.github/bazel.workspace b/.github/bazel.workspace new file mode 100644 index 00000000..8a625342 --- /dev/null +++ b/.github/bazel.workspace @@ -0,0 +1,5 @@ +http_archive( + name = "rbe_default", + sha256 = "cdffa3b0fbf72c361d10937c41f2ca2274efd234e3757b011b48ac0ced13be03", + url = "https://dl.less.build/toolchains/bazel/rbe/elidecloud-v4a-ubuntu23.10.tgz", +) diff --git a/.github/codecov.yml b/.github/codecov.yml index c9ea8e9f..aef8827c 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -33,6 +33,7 @@ github_checks: annotations: true ignore: + - "jdk" - "samples" - "tools/processor" - "tools/substrate/injekt" diff --git a/.github/workflows/ci.build-test.yml b/.github/workflows/ci.build-test.yml index dc4458c8..5eb524d4 100644 --- a/.github/workflows/ci.build-test.yml +++ b/.github/workflows/ci.build-test.yml @@ -11,6 +11,9 @@ name: "Build & Test" CODECOV_TOKEN: description: "Codecov Token" required: false + BUILDBUDDY_APIKEY: + description: "BuildBuddy API Key" + required: false workflow_dispatch: {} @@ -62,6 +65,12 @@ jobs: .m2 ~/.cache/bazel key: jpms-attic-v1-${{ runner.os }} + - name: "Setup: BuildBuddy" + run: echo "build --remote_header=x-buildbuddy-api-key=$BUILDBUDDY_KEY" >> ./.github/bazel.rc + env: + BUILDBUDDY_KEY: ${{ secrets.BUILDBUDDY_APIKEY }} + - name: "Setup: Bazel Configuration" + run: cp -fv ./.github/bazel.rc ./tools/bazel.rc - name: "Build & Test Repository" run: make TESTS=${{ inputs.tests && 'yes' || 'no' }} SIGNING=no JAVADOC=no SNAPSHOT=yes - name: "Reporting: Code Coverage" diff --git a/.github/workflows/ci.publish-package.yml b/.github/workflows/ci.publish-package.yml index 6a754432..59451f08 100644 --- a/.github/workflows/ci.publish-package.yml +++ b/.github/workflows/ci.publish-package.yml @@ -214,7 +214,6 @@ jobs: with: name: ${{ needs.provenance.outputs.provenance-name }} - name: "Publish to Registry" - if: !inputs.dry-run run: cd packages/${{ inputs.package }} && pnpm run ${{ inputs.dry-run && 'publish:dry' || 'publish:live' }} --registry=${{ inputs.registry }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} diff --git a/.github/workflows/ci.publish-packages.yml b/.github/workflows/ci.publish-packages.yml index a4dc40aa..f5df9d30 100644 --- a/.github/workflows/ci.publish-packages.yml +++ b/.github/workflows/ci.publish-packages.yml @@ -78,7 +78,7 @@ permissions: jobs: publish-npm: name: "Publish to NPM (${{ matrix.package }})" - runs-on: ubuntu-latest + uses: ./.github/workflows/ci.publish-package.yml permissions: actions: read id-token: write @@ -88,16 +88,13 @@ jobs: fail-fast: false matrix: package: ["java", "gradle", "maven"] - steps: - - name: "Publish Package" - uses: ./.github/workflows/ci.publish-package.yml - with: - package: ${{ matrix.package }} - dry-run: ${{ inputs.dry-run }} - registry: ${{ inputs.registry }} - release: ${{ inputs.release }} - tag: ${{ inputs.tag }} - draft: ${{ inputs.draft }} - prerelease: ${{ inputs.prerelease }} - release-name: ${{ inputs.release-name }} - release-latest: ${{ inputs.release-latest }} + with: + package: ${{ matrix.package }} + dry-run: ${{ inputs.dry-run }} + registry: ${{ inputs.registry }} + release: ${{ inputs.release }} + tag: ${{ inputs.tag }} + draft: ${{ inputs.draft }} + prerelease: ${{ inputs.prerelease }} + release-name: ${{ inputs.release-name }} + release-latest: ${{ inputs.release-latest }} diff --git a/.gitignore b/.gitignore index df662744..7333dd3c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ vendor node_modules/ web/ packages/*/*.tgz +local.bazelrc diff --git a/Makefile b/Makefile index c3afc5ca..4551492b 100644 --- a/Makefile +++ b/Makefile @@ -236,7 +236,6 @@ org.reactivestreams/api/build/libs: publishAllPublicationsToMavenLocalRepository \ && echo "Reactive Streams ready." - # # Library: Protocol Buffers ---------------------------------------------------------------- @@ -244,6 +243,11 @@ protobuf: com.google.protobuf ## Build Protocol Buffers. com.google.protobuf: com.google.protobuf/bazel-bin/java/core/amended_core_mvn-project.jar com.google.protobuf/bazel-bin/java/core/amended_core_mvn-project.jar: $(info Building Protocol Buffers...) + $(RULE)rm -f com.google.protobuf/.bazelrc + $(RULE)cd com.google.protobuf && $(GIT) checkout .bazelrc + $(RULE)$(CP) tools/project.bazelrc com.google.protobuf/project.bazelrc + $(RULE)$(CP) tools/bazel.rc com.google.protobuf/jpms.bazelrc + $(RULE)echo "import %workspace%/project.bazelrc" >> com.google.protobuf/.bazelrc $(RULE)cd com.google.protobuf \ && $(BAZEL) \ build \ @@ -484,6 +488,11 @@ dev: $(DEV_LOCAL) ## Setup local development tooling. $(DEV_LOCAL): @echo "Setting up local dev root..." $(RULE)$(MKDIR) -p $(DEV_ROOT) $(DEV_BIN) + $(RULE)rm -f com.google.protobuf/.bazelrc + $(RULE)cd com.google.protobuf && $(GIT) checkout .bazelrc + $(RULE)$(CP) tools/project.bazelrc com.google.protobuf/project.bazelrc + $(RULE)$(CP) tools/bazel.rc com.google.protobuf/jpms.bazelrc + $(RULE)echo "import %workspace%/project.bazelrc" >> com.google.protobuf/.bazelrc @echo "Building 'protoc'..." $(RULE)cd com.google.protobuf && $(BAZEL) build //:protoc @echo "Mounting 'protoc'..." diff --git a/local.bazelrc.tpl b/local.bazelrc.tpl new file mode 100644 index 00000000..6c25cbc1 --- /dev/null +++ b/local.bazelrc.tpl @@ -0,0 +1,4 @@ + +## Add API keys below. +build --remote_header= + diff --git a/tools/bazel.rc b/tools/bazel.rc new file mode 100644 index 00000000..a483b429 --- /dev/null +++ b/tools/bazel.rc @@ -0,0 +1,24 @@ +common --enable_platform_specific_config +common --experimental_isolated_extension_usages + +build:buildbuddy --bes_results_url=https://skunkworks.buildbuddy.io/invocation/ +build:buildbuddy --bes_backend=grpcs://skunkworks.buildbuddy.io +build:buildbuddy --remote_cache=grpcs://skunkworks.buildbuddy.io +build:buildbuddy --remote_timeout=3600 +build:buildbuddy --remote_download_minimal + +build:buildbuddy --experimental_remote_cache_compression +build:buildbuddy --experimental_remote_build_event_upload=minimal +build:buildbuddy --experimental_profile_include_target_label +build:buildbuddy --experimental_profile_include_primary_output +build:buildbuddy --experimental_inmemory_jdeps_files +build:buildbuddy --experimental_inmemory_dotd_files + +build:remote-exec --remote_executor=grpcs://skunkworks.buildbuddy.io + +build --config=buildbuddy +build --config=remote-exec + +build:local-metadata --build_metadata=REPO_URL=https://github.com/elide-dev/jpms.git + +build --config=local-metadata diff --git a/tools/project.bazelrc b/tools/project.bazelrc new file mode 100644 index 00000000..b369abd4 --- /dev/null +++ b/tools/project.bazelrc @@ -0,0 +1,2 @@ + +import %workspace%/jpms.bazelrc