瀏覽代碼

Add a 'preflight check' stage to CI (#923)

Motivation:

Often contributors miss out license checks, have formatting issues or
haven't generated linux tests. Let's bring these checks up front and
make sure they're done before we run any tests.

Modifications:

- Add a "Preflight Checks" stage to CI
- Add a sanity script which currently just checks license headers; we
  can add other checks later. Note that in CI this is called via
  .travis-script.sh as it sets up the environment (setting up PATH etc.t)
- Add building and caching SwiftFormat to the install step, it's not
  used yet but will be later.
- Fix a bunch of shellcheck issues
- Replaces some travis environment variables with flags

Result:

- We have a way to check non-code related things before checking
  functional changes
George Barnett 5 年之前
父節點
當前提交
c26be6470d
共有 2 個文件被更改,包括 51 次插入7 次删除
  1. 0 7
      scripts/license-check.sh
  2. 51 0
      scripts/sanity.sh

+ 0 - 7
scripts/license-check.sh

@@ -140,11 +140,4 @@ check_copyright_headers() {
 
 errors=0
 check_copyright_headers
-
-if [[ "$errors" == 0 ]]; then
-  echo "License headers: OK"
-else
-  echo "License headers: found $errors issue(s)."
-fi
-
 exit $errors

+ 51 - 0
scripts/sanity.sh

@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# Copyright 2020, gRPC Authors All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eu
+
+HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+function run_logged() {
+  local message=$1
+  local command=$2
+
+  log=$(mktemp)
+
+  printf '==> %s ... ' "$message"
+
+  if $command > "$log" 2>&1; then
+    printf "\033[0;32mOK\033[0m\n"
+  else
+    printf "\033[0;31mFAILED\033[0m\n"
+    echo "=== Captured output:"
+    cat "$log"
+    echo "==="
+  fi
+}
+
+function check_license_headers() {
+  run_logged "Checking license headers" "$HERE/license-check.sh"
+}
+
+function check_formatting() {
+  hash swiftformat 2> /dev/null || { printf "\033[0;31mERROR\033[0m swiftformat must be installed (see: https://github.com/nicklockwood/SwiftFormat)\n"; exit 1; }
+  run_logged "Checking formatting" "swiftformat --lint $HERE/.."
+}
+
+check_license_headers
+
+# We won't run this just yet.
+# check_formatting