12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/usr/bin/env bash
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- #
- # check-protobuf.sh — detect breaking changes in proto files.
- set -euo pipefail
- cd "$(dirname "$0")/../../../.."
- . misc/shlib/shlib.bash
- . misc/buildkite/git.bash
- if ! buf --version >/dev/null 2>/dev/null; then
- echo "lint: buf is not installed"
- echo "hint: refer to https://buf.build/docs/installation for install instructions"
- exit 1
- fi
- CURRENT_GIT_BRANCH=$(try git branch --show-current)
- IN_BUILDKITE=in_ci
- IN_BUILDKITE_PR=0
- ON_MAIN_BRANCH=0
- IN_LOCAL_NON_MAIN_BRANCH=0
- if [[ ${BUILDKITE_PULL_REQUEST:-false} != "false" ]]; then
- IN_BUILDKITE_PR=1
- fi
- if [[ "$CURRENT_GIT_BRANCH" == "main" ]]; then
- ON_MAIN_BRANCH=1
- fi
- if [[ "$IN_BUILDKITE" != 1 && "$ON_MAIN_BRANCH" != 1 ]]; then
- IN_LOCAL_NON_MAIN_BRANCH=1
- fi
- echo $IN_BUILDKITE_PR
- echo $IN_LOCAL_NON_MAIN_BRANCH
- if [[ "${1:-}" = --offline ]]; then
- fetch_from_git=false
- else
- fetch_from_git=true
- fi
- if [[ $IN_BUILDKITE_PR || $IN_LOCAL_NON_MAIN_BRANCH ]]; then
- # see ./ci/test/lint-buf/README.md
- if $fetch_from_git; then
- fetch_pr_target_branch
- fi
- ci_collapsed_heading "Verify that protobuf config is up-to-date"
- try bin/pyactivate ./ci/test/lint-buf/generate-buf-config.py
- try yamllint src/buf.yaml
- try git diff --name-only --exit-code src/buf.yaml
- ci_collapsed_heading "Lint protobuf"
- COMMON_ANCESTOR="$(get_common_ancestor_commit_of_pr_and_target)"
- # Default is depth 50, which can be insufficient to grab the relevant ancestor commit
- try buf breaking src --against ".git#ref=$COMMON_ANCESTOR,subdir=src,depth=10000" --verbose
- ci_collapsed_heading "Lint protobuf formatting"
- # Proto formatting
- try buf format src --diff --exit-code
- fi
- try_status_report
|