-
Notifications
You must be signed in to change notification settings - Fork 100
improved caching #551
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
improved caching #551
Changes from all commits
68ddabe
7bf94f4
98ee8bd
491dc41
db8a8f0
fe669c1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| name: "build protobufs" | ||
| name: "Build Protobufs" | ||
|
|
||
| on: | ||
| push: | ||
|
|
@@ -14,24 +14,20 @@ on: | |
|
|
||
| jobs: | ||
| build: | ||
|
|
||
| strategy: | ||
| matrix: | ||
| # We only test on the oldest version we want to support and latest. | ||
| # We trust that things also work for versions in the middle. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removing these comments seems like the wrong thing to do, unless you know that they are obsolete or wrong. If they are correct, they were written by someone who wanted to remember the reason that the lines of code were added, and why they were written in this way. That is valuable information, and should not be discarded.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok I will add them back
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There are many more such comments removed elsewhere in your PR. My comment applies to all of those changes, not only the ones that I directly commented on.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please, please look at the diffs of your PR on the Github web site to see if it is what you think it should be. Without doing that, you might be proposing changes in the PR that you forgot you made, or never even intended to make.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok I will add back all those changes in comments |
||
| os: [ubuntu-22.04, ubuntu-latest] | ||
| # See Bazelisk README for legal values. | ||
| bazel_version: [7.x, latest] | ||
| # Don't abort other runs when one of them fails, to ease debugging. | ||
| fail-fast: false | ||
|
|
||
| runs-on: ${{ matrix.os }} | ||
|
|
||
| env: | ||
| # This tells Bazelisk (installed as `bazel`) to use specified version. | ||
| # https://github.com/bazelbuild/bazelisk?tab=readme-ov-file#how-does-bazelisk-know-which-bazel-version-to-run | ||
| USE_BAZEL_VERSION: ${{ matrix.bazel_version }} | ||
| CACHE_KEY: ${{ matrix.os }}_bazel-${{ matrix.bazel_version }} | ||
| BAZEL_DISK_CACHE: ~/.cache/bazel-disk | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
@@ -41,10 +37,9 @@ jobs: | |
| - name: Mount bazel cache | ||
| uses: actions/cache/restore@v4 | ||
| with: | ||
| # See https://docs.bazel.build/versions/master/output_directories.html | ||
| path: "~/.cache/bazel" | ||
| # Create a new cache entry whenever Bazel files change. | ||
| # See https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows | ||
| path: | | ||
| ~/.cache/bazel | ||
| ~/.cache/bazel-disk | ||
| key: ${{ env.CACHE_KEY }}-${{ hashFiles('**/*.bazel*', '**/*.bzl') }} | ||
| restore-keys: | | ||
| ${{ env.CACHE_KEY }} | ||
|
|
@@ -53,53 +48,45 @@ jobs: | |
| uses: josStorer/get-current-time@v2 | ||
| id: start-time | ||
| with: | ||
| # Unix timestamp -- seconds since 1970. | ||
| format: X | ||
|
|
||
| - name: Build proto/ | ||
| run: cd proto && bazel build //... && bazel test //... | ||
| - name: Build Protos | ||
| run: | | ||
| cd proto | ||
| bazel build //... --disk_cache=${{ env.BAZEL_DISK_CACHE }} --jobs=$(nproc) | ||
| bazel test //... --test_output=errors --jobs=$(nproc) | ||
|
|
||
| - name: Build bazel/example/using-bzlmod/ | ||
| run: cd bazel/example/using-bzlmod && bazel build //... | ||
| - name: Build Bzlmod Example | ||
| run: | | ||
| cd bazel/example/using-bzlmod | ||
| bazel build //... --disk_cache=${{ env.BAZEL_DISK_CACHE }} --jobs=$(nproc) | ||
|
|
||
| - name: Build bazel/example/using-workspace/ | ||
| run: cd bazel/example/using-workspace && bazel build //... | ||
| # This is a legacy example that doesn't work beyond Bazel 7.x. | ||
| - name: Build Workspace Example (Only for Bazel 7.x) | ||
| if: ${{ env.USE_BAZEL_VERSION == '7.x' }} | ||
| run: | | ||
| cd bazel/example/using-workspace | ||
| bazel build //... --disk_cache=${{ env.BAZEL_DISK_CACHE }} --jobs=$(nproc) | ||
|
|
||
| - name: Save end time | ||
| # Always save the end time so we can calculate the build duration. | ||
| if: always() | ||
| uses: josStorer/get-current-time@v2 | ||
| id: end-time | ||
| with: | ||
| # Unix timestamp -- seconds since 1970. | ||
| format: X | ||
|
|
||
| - name: Calculate build duration | ||
| # Always calculate the build duration so we can update the cache if needed. | ||
| - name: Calculate Build Duration | ||
| if: always() | ||
| run: | | ||
| START=${{ steps.start-time.outputs.formattedTime }} | ||
| END=${{ steps.end-time.outputs.formattedTime }} | ||
| DURATION=$(( $END - $START )) | ||
| DURATION=$(( END - START )) | ||
| echo "duration=$DURATION" | tee "$GITHUB_ENV" | ||
|
|
||
| - name: Compress cache | ||
| # Always compress the cache so we can update the cache if needed. | ||
| if: always() | ||
| run: rm -rf $(bazel info repository_cache) | ||
|
|
||
| - name: Save bazel cache | ||
| uses: actions/cache/save@v4 | ||
| # Only create a new cache entry if we're on the main branch or the build takes >3mins. | ||
| # | ||
| # NOTE: Even though `always()` evaluates to true, and `true && x == x`, | ||
| # the `always() &&` prefix is not redundant! The call to `always()` has a | ||
| # side effect, which is to override the default behavior of automagically | ||
| # canceling this step if a previous step failed. | ||
| # (Don't blame me, blame GitHub Actions!) | ||
| if: always() && (github.ref_name == 'main' || env.duration > 180) | ||
| with: | ||
| path: "~/.cache/bazel" | ||
| path: | | ||
| ~/.cache/bazel | ||
| ~/.cache/bazel-disk | ||
| key: ${{ env.CACHE_KEY }}-${{ hashFiles('**/*.bazel*', '**/*.bzl') }}-${{ github.run_id }} | ||
Uh oh!
There was an error while loading. Please reload this page.