Merge #266
266: Make size-diff pass if building master fails. r=hudson-ayers a=jrvanwhy
size-diff has been painful in 2 cases:
1. If master is broken, it fails on PRs that fix master's build.
2. If the commands required to build the examples change, it breaks. This happened when we changed rust-toolchain to the TOML format, and removed the `rustup target add` commands from the size-diff workflow. This change was fine once it hit master but broke in the PR.
size-diff still fails if the PR's build fails, so we can still detect PRs that break size-diff's functionality.
Co-authored-by: Johnathan Van Why <jrvanwhy@google.com>
diff --git a/.github/workflows/size-diff.yml b/.github/workflows/size-diff.yml
index 7a8e010..cbf2939 100644
--- a/.github/workflows/size-diff.yml
+++ b/.github/workflows/size-diff.yml
@@ -32,6 +32,11 @@
# The main diff script. Stores the sizes of the example binaries for both
# the merge commit and the target branch. We display the diff in a
# separate step to make it easy to navigate to in the GitHub Actions UI.
+ #
+ # If the build on master doesn't work (`make -j2 examples` fails), we
+ # output a warning message and ignore the error. Ignoring the error
+ # prevents this workflow from blocking PRs that fix a broken build in
+ # master.
- name: Compute sizes
run: |
UPSTREAM_REMOTE_NAME="${UPSTREAM_REMOTE_NAME:-origin}"
@@ -42,12 +47,14 @@
git remote set-branches "${UPSTREAM_REMOTE_NAME}" "${GITHUB_BASE_REF}"
git fetch --depth=1 "${UPSTREAM_REMOTE_NAME}" "${GITHUB_BASE_REF}"
git checkout "${UPSTREAM_REMOTE_NAME}/${GITHUB_BASE_REF}"
- make -j2 examples
- cargo run --release -p print_sizes >'${{runner.temp}}/base-sizes'
+ make -j2 examples && \
+ cargo run --release -p print_sizes >'${{runner.temp}}/base-sizes' || \
+ echo 'Broken build on the master branch.'
# Computes and displays the size diff. diff returns a nonzero status code
# if the files differ, and GitHub interprets a nonzero status code as an
# error. To avoid GitHub interpreting a difference as an error, we add
- # || exit 0 to the command.
+ # || exit 0 to the command. This also prevents the workflow from failing
+ # if the master build is broken and we didn't generate base-sizes.
- name: Size diff
run: diff '${{runner.temp}}/base-sizes' '${{runner.temp}}/merge-sizes' || exit 0