diff --git a/.bazelrc b/.bazelrc index 63bbc01292..753c0d0b82 100644 --- a/.bazelrc +++ b/.bazelrc @@ -30,35 +30,28 @@ build:build_cpp --test_tag_filters=+allwpilib-build-cpp --build_tag_filters=+all build:no_example --test_tag_filters=-wpi-example --build_tag_filters=-wpi-example test:no_example --test_tag_filters=-wpi-example --build_tag_filters=-wpi-example -# Artifactory Cache Setup -build:base_remote --remote_timeout=3600 - -# Additional suggestions from buildbuddy for speed -build:base_remote --experimental_remote_cache_compression -build:base_remote --experimental_remote_cache_compression_threshold=100 -build:base_remote --noslim_profile -build:base_remote --experimental_profile_include_target_label -build:base_remote --experimental_profile_include_primary_output -build:base_remote --nolegacy_important_outputs - -common:base_remote_readonly --noremote_upload_local_results -build:artifactory_readonly --config=base_remote_readonly -build:artifactory_readonly --remote_cache=https://frcmaven.wpi.edu/artifactory/wpilib-generic-cache-bazel-local -# workaround for https://github.com/bazelbuild/bazel/issues/17700 -build:artifactory_readonly --remote_cache_header=X-JFrog-Download-Redirect-To=None - # Build Buddy Cache Setup build:build_buddy --bes_results_url=https://app.buildbuddy.io/invocation/ build:build_buddy --bes_backend=grpcs://remote.buildbuddy.io build:build_buddy --remote_cache=grpcs://remote.buildbuddy.io -build:build_buddy --config=base_remote +build:build_buddy --remote_timeout=3600 + +# Additional suggestions from buildbuddy for speed +build:build_buddy --experimental_remote_cache_compression +build:build_buddy --experimental_remote_cache_compression_threshold=100 +build:build_buddy --noslim_profile +build:build_buddy --experimental_profile_include_target_label +build:build_buddy --experimental_profile_include_primary_output +build:build_buddy --nolegacy_important_outputs + +common:build_buddy_readonly --noremote_upload_local_results # This config should be used locally. It downloads more than the CI version -build:remote_user --config=base_remote -build:remote_user --config=artifactory_readonly +build:remote_user --config=build_buddy +build:remote_user --config=build_buddy_readonly build:remote_user --remote_download_toplevel -build:ci --config=base_remote +build:ci --config=build_buddy build:ci --remote_download_minimal build --build_metadata=REPO_URL=https://github.com/wpilibsuite/allwpilib.git diff --git a/.github/actions/setup-artifactory-bazel/action.yml b/.github/actions/setup-artifactory-bazel/action.yml deleted file mode 100644 index f2be1fb149..0000000000 --- a/.github/actions/setup-artifactory-bazel/action.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: "Setup Artifactory Bazel caching" -description: "Sets up the Artifactory Bazel cache to be readonly / writing based on the presence of environment variables" - -inputs: - username: - description: "Artifactory API username" - token: - description: "Artifactory API token" - -runs: - using: "composite" - steps: - - name: Setup without key - env: - API_KEY: ${{ inputs.token }} - if: ${{ env.API_KEY == '' }} - shell: bash - run: | - echo "No API key secret detected, will setup readonly cache" - echo "build:ci --config=artifactory_readonly" > bazel_auth.rc - - - name: Set with key - env: - API_KEY: ${{ inputs.token }} - if: ${{ env.API_KEY != '' }} - shell: bash - run: | - echo "API Key detected!" - # X-JFrog-Download-Redirect-To is a workaround for https://github.com/bazelbuild/bazel/issues/17700 - echo "build:base_remote --remote_cache=https://${{ inputs.username }}:${{ inputs.token }}@frcmaven.wpi.edu/artifactory/wpilib-generic-cache-bazel-local --remote_cache_header=X-JFrog-Download-Redirect-To=None" > bazel_auth.rc diff --git a/.github/actions/setup-build-buddy/action.yml b/.github/actions/setup-build-buddy/action.yml new file mode 100644 index 0000000000..423398a053 --- /dev/null +++ b/.github/actions/setup-build-buddy/action.yml @@ -0,0 +1,27 @@ +name: 'Setup BuildBuddy acache' +description: 'Sets up the build buddy cache to be readonly / writing based on the presence of environment variables' + +inputs: + token: + description: 'Build Buddy API token' + +runs: + using: "composite" + steps: + - name: Setup without key + env: + API_KEY: ${{ inputs.token }} + if: ${{ env.API_KEY == '' }} + shell: bash + run: | + echo "No API key secret detected, will setup readonly cache" + echo "build:ci --config=build_buddy_readonly" > bazel_auth.rc + + - name: Set with key + env: + API_KEY: ${{ inputs.token }} + if: ${{ env.API_KEY != '' }} + shell: bash + run: | + echo "API Key detected!" + echo "build:build_buddy --remote_header=x-buildbuddy-api-key=${{ env.API_KEY }}" > bazel_auth.rc diff --git a/.github/workflows/aql/wpilib-generic-gradle-cache_unused.aql b/.github/workflows/aql/wpilib-generic-gradle-cache_unused.aql index 21cc781aef..242fcaf693 100644 --- a/.github/workflows/aql/wpilib-generic-gradle-cache_unused.aql +++ b/.github/workflows/aql/wpilib-generic-gradle-cache_unused.aql @@ -5,8 +5,7 @@ "items.find": { "$or":[ { "repo": "wpilib-generic-gradlecache" }, - { "repo": "wpilib-generic-cache-cmake" }, - { "repo": "wpilib-generic-cache-bazel" } + { "repo": "wpilib-generic-cache-cmake" } ], "$or":[ { diff --git a/.github/workflows/bazel.yml b/.github/workflows/bazel.yml index 4982f8c8ef..3b93739f3a 100644 --- a/.github/workflows/bazel.yml +++ b/.github/workflows/bazel.yml @@ -26,11 +26,10 @@ jobs: java-version: 17 architecture: x64 - - name: Setup Artifactory - uses: ./.github/actions/setup-artifactory-bazel + - id: Setup_build_buddy + uses: ./.github/actions/setup-build-buddy with: - username: ${{ secrets.ARTIFACTORY_USERNAME }} - token: ${{ secrets.ARTIFACTORY_PASSWORD }} + token: ${{ secrets.BUILDBUDDY_API_KEY }} - name: bazel ${{ matrix.action }} run: bazel --output_user_root=C:\\bazelroot ${{ matrix.action }} -k ... --config=ci ${{ matrix.config }} --verbose_failures @@ -43,11 +42,10 @@ jobs: - uses: actions/checkout@v4 with: { fetch-depth: 0 } - - name: Setup Artifactory - uses: ./.github/actions/setup-artifactory-bazel + - id: Setup_build_buddy + uses: ./.github/actions/setup-build-buddy with: - username: ${{ secrets.ARTIFACTORY_USERNAME }} - token: ${{ secrets.ARTIFACTORY_PASSWORD }} + token: ${{ secrets.BUILDBUDDY_API_KEY }} - name: bazel test (release) run: bazel test -k ... --config=ci -c opt --config=macos --nojava_header_compilation --verbose_failures @@ -65,12 +63,12 @@ jobs: steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } + - uses: bazelbuild/setup-bazelisk@v3 - - name: Setup Artifactory - uses: ./.github/actions/setup-artifactory-bazel + - id: Setup_build_buddy + uses: ./.github/actions/setup-build-buddy with: - username: ${{ secrets.ARTIFACTORY_USERNAME }} - token: ${{ secrets.ARTIFACTORY_PASSWORD }} + token: ${{ secrets.BUILDBUDDY_API_KEY }} - name: bazel ${{ matrix.action }} (release) run: bazel ${{ matrix.action }} ... --config=ci -c opt ${{ matrix.config }} -k --verbose_failures