Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 23 additions & 36 deletions .github/workflows/ci-build-proto.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "build protobufs"
name: "Build Protobufs"

on:
push:
Expand All @@ -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.
Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I will add them back

Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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.

Copy link
Author

Choose a reason for hiding this comment

The 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
Expand All @@ -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 }}
Expand All @@ -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 }}