From 9f203f2d4d43aa8909dcecd76415a12413bbf233 Mon Sep 17 00:00:00 2001 From: chaodaiG <45011425+chaodaiG@users.noreply.github.com> Date: Wed, 31 Jul 2019 03:20:43 -0700 Subject: [PATCH] Use knative.dev/test-infra (#319) --- go.mod | 3 +- go.sum | 33 ++++----- hack/release.sh | 2 +- hack/verify-codegen.sh | 2 +- pkg/dummy_test.go | 2 +- test/e2e-smoke-tests.sh | 2 +- test/e2e-tests.sh | 2 +- test/presubmit-tests.sh | 2 +- .../test-infra/LICENSE | 0 .../test-infra/scripts/README.md | 6 +- .../test-infra/scripts/dummy.go | 0 .../test-infra/scripts/e2e-tests.sh | 11 +-- .../test-infra/scripts/library.sh | 66 +++++++++++++++--- .../scripts/markdown-link-check-config.rc | 0 .../scripts/markdown-lint-config.rc | 0 .../test-infra/scripts/presubmit-tests.sh | 67 +++++++++---------- .../test-infra/scripts/release.sh | 36 ++++++---- vendor/modules.txt | 4 +- 18 files changed, 147 insertions(+), 91 deletions(-) rename vendor/{github.com/knative => knative.dev}/test-infra/LICENSE (100%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/README.md (98%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/dummy.go (100%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/e2e-tests.sh (97%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/library.sh (88%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/markdown-link-check-config.rc (100%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/markdown-lint-config.rc (100%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/presubmit-tests.sh (89%) rename vendor/{github.com/knative => knative.dev}/test-infra/scripts/release.sh (95%) diff --git a/go.mod b/go.mod index 46743be934..f3e4e36950 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/knative/build v0.7.0 // indirect github.com/knative/pkg v0.0.0-20190617142447-13b093adc272 github.com/knative/serving v0.6.0 - github.com/knative/test-infra v0.0.0-20190702025031-91d37e4abc30 + github.com/knative/test-infra v0.0.0-20190702025031-91d37e4abc30 // indirect github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/modern-go/reflect2 v1.0.1 // indirect @@ -39,5 +39,6 @@ require ( k8s.io/cli-runtime v0.0.0-20190325194458-f2b4781c3ae1 k8s.io/client-go v0.0.0-20190226174127-78295b709ec6 k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 // indirect + knative.dev/test-infra v0.0.0-20190730202142-17f2331e80ad sigs.k8s.io/yaml v1.1.0 ) diff --git a/go.sum b/go.sum index 29a03df64c..1031a2e8bb 100644 --- a/go.sum +++ b/go.sum @@ -157,21 +157,6 @@ github.com/knative/serving v0.5.2 h1:jsmeIN7B6oDHrK0jmtFRf7hWWr+KrjXVHuArK8jo5Nw github.com/knative/serving v0.5.2/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= github.com/knative/serving v0.6.0 h1:2SOr1jAvrUPO1y0mJvpiTe3bJTSMd2tKXflmHCM0MAA= github.com/knative/serving v0.6.0/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= -github.com/knative/test-infra v0.0.0-20190404172656-4ce16d390c55 h1:2tpTEN6OydMWVmkKJC3iVNrYbA+iHNL9qjLXe7hocfE= -github.com/knative/test-infra v0.0.0-20190404172656-4ce16d390c55/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190509163238-a721698dbe49 h1:TEv7xkUjVofC2lqiSNeYjOYhC3XosGAfr0HG8x/lpC0= -github.com/knative/test-infra v0.0.0-20190509163238-a721698dbe49/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190516041915-e83cf0ab6b1d h1:o0QEmZJb46wFefSHgM8k3JtINpAH/KN5oe2bsFkDVOI= -github.com/knative/test-infra v0.0.0-20190516041915-e83cf0ab6b1d/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190517181617-d1bb39bbca6e h1:Is4Ki1oQhYD3Twfdzpk2U/vI/5hSPh9277bI1AK+28o= -github.com/knative/test-infra v0.0.0-20190517181617-d1bb39bbca6e/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190529123930-7d0c44fb03a9 h1:2kupVzyk+zet/S5bHMAQLxt1rQzqTsJd+vUXp7tIYcI= -github.com/knative/test-infra v0.0.0-20190529123930-7d0c44fb03a9/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190531180034-a3c073a2fea1 h1:Y2QunZIzGuyvBNfWNpwK9/AAgu2P+Aa+k/3ykATGw30= -github.com/knative/test-infra v0.0.0-20190531180034-a3c073a2fea1/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190624052103-517330119155 h1:ceTQvUNU19Vc13TlSNo6u0F0pHak9wcGJQ+gv0X4KlE= -github.com/knative/test-infra v0.0.0-20190624052103-517330119155/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= -github.com/knative/test-infra v0.0.0-20190702025031-91d37e4abc30 h1:giPqryO6DJHa/b4eHxhOOcr2KiEs3g6k6IVsPTMdKZM= github.com/knative/test-infra v0.0.0-20190702025031-91d37e4abc30/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -404,6 +389,24 @@ k8s.io/kube-openapi v0.0.0-20190510232812-a01b7d5d6c22 h1:f0BTap/vrgs21vVbJ1ySds k8s.io/kube-openapi v0.0.0-20190510232812-a01b7d5d6c22/go.mod h1:iU+ZGYsNlvU9XKUSso6SQfKTCCw7lFduMZy26Mgr2Fw= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 h1:5sW+fEHvlJI3Ngolx30CmubFulwH28DhKjGf70Xmtco= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= +knative.dev/test-infra v0.0.0-20190404172656-4ce16d390c55 h1:2tpTEN6OydMWVmkKJC3iVNrYbA+iHNL9qjLXe7hocfE= +knative.dev/test-infra v0.0.0-20190404172656-4ce16d390c55/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190509163238-a721698dbe49 h1:TEv7xkUjVofC2lqiSNeYjOYhC3XosGAfr0HG8x/lpC0= +knative.dev/test-infra v0.0.0-20190509163238-a721698dbe49/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190516041915-e83cf0ab6b1d h1:o0QEmZJb46wFefSHgM8k3JtINpAH/KN5oe2bsFkDVOI= +knative.dev/test-infra v0.0.0-20190516041915-e83cf0ab6b1d/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190517181617-d1bb39bbca6e h1:Is4Ki1oQhYD3Twfdzpk2U/vI/5hSPh9277bI1AK+28o= +knative.dev/test-infra v0.0.0-20190517181617-d1bb39bbca6e/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190529123930-7d0c44fb03a9 h1:2kupVzyk+zet/S5bHMAQLxt1rQzqTsJd+vUXp7tIYcI= +knative.dev/test-infra v0.0.0-20190529123930-7d0c44fb03a9/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190531180034-a3c073a2fea1 h1:Y2QunZIzGuyvBNfWNpwK9/AAgu2P+Aa+k/3ykATGw30= +knative.dev/test-infra v0.0.0-20190531180034-a3c073a2fea1/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190624052103-517330119155 h1:ceTQvUNU19Vc13TlSNo6u0F0pHak9wcGJQ+gv0X4KlE= +knative.dev/test-infra v0.0.0-20190624052103-517330119155/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190702025031-91d37e4abc30 h1:giPqryO6DJHa/b4eHxhOOcr2KiEs3g6k6IVsPTMdKZM= +knative.dev/test-infra v0.0.0-20190702025031-91d37e4abc30/go.mod h1:l77IWBscEV5T4sYb64/9iwRCVY4UXEIqMcAppsblHW4= +knative.dev/test-infra v0.0.0-20190730202142-17f2331e80ad h1:pXN0DA06tXwn4vgzIqJ13rf4U412rS+fRRww1JWJ+o4= +knative.dev/test-infra v0.0.0-20190730202142-17f2331e80ad/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ= sigs.k8s.io/structured-merge-diff v0.0.0-20181214233322-d43a45b8663b/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190426204423-ea680f03cc65/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= diff --git a/hack/release.sh b/hack/release.sh index e10654744e..2c775b5fce 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -17,7 +17,7 @@ # Documentation about this script and how to use it can be found # at https://github.com/knative/test-infra/tree/master/ci -source $(dirname $0)/../vendor/github.com/knative/test-infra/scripts/release.sh +source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/release.sh source $(dirname $0)/build-flags.sh function build_release() { diff --git a/hack/verify-codegen.sh b/hack/verify-codegen.sh index 4e2c938052..47d72a4e8f 100755 --- a/hack/verify-codegen.sh +++ b/hack/verify-codegen.sh @@ -18,7 +18,7 @@ set -o errexit set -o nounset set -o pipefail -source $(dirname $0)/../vendor/github.com/knative/test-infra/scripts/library.sh +source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh # Needed later go install golang.org/x/tools/cmd/goimports diff --git a/pkg/dummy_test.go b/pkg/dummy_test.go index 754b25b172..9502c79b5d 100644 --- a/pkg/dummy_test.go +++ b/pkg/dummy_test.go @@ -17,7 +17,7 @@ package pkg import ( "testing" - _ "github.com/knative/test-infra/scripts" + _ "knative.dev/test-infra/scripts" ) func TestDummy(t *testing.T) { diff --git a/test/e2e-smoke-tests.sh b/test/e2e-smoke-tests.sh index a1b7ba88e5..457643dacf 100755 --- a/test/e2e-smoke-tests.sh +++ b/test/e2e-smoke-tests.sh @@ -24,7 +24,7 @@ # project $PROJECT_ID, start Knative serving, run the tests and delete # the cluster. -source $(dirname $0)/../vendor/github.com/knative/test-infra/scripts/e2e-tests.sh +source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/e2e-tests.sh # Helper functions. diff --git a/test/e2e-tests.sh b/test/e2e-tests.sh index a4c41ec286..6ba5c8f83d 100755 --- a/test/e2e-tests.sh +++ b/test/e2e-tests.sh @@ -28,7 +28,7 @@ # $KNATIVE_VERSION with a valid release, e.g. 0.6.0, Knative serving # of this specified version will be installed in the Kubernetes cluster, and # all the tests will run against Knative serving of this specific version. -source $(dirname $0)/../vendor/github.com/knative/test-infra/scripts/e2e-tests.sh +source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/e2e-tests.sh # Helper functions. diff --git a/test/presubmit-tests.sh b/test/presubmit-tests.sh index 8898074c37..19b63ec021 100755 --- a/test/presubmit-tests.sh +++ b/test/presubmit-tests.sh @@ -33,7 +33,7 @@ export DISABLE_MD_LINTING=1 export GO111MODULE=on export KNATIVE_VERSION=${KNATIVE_VERSION:-latest} -source $(dirname $0)/../vendor/github.com/knative/test-infra/scripts/presubmit-tests.sh +source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/presubmit-tests.sh # We use the default build, unit and integration test runners. diff --git a/vendor/github.com/knative/test-infra/LICENSE b/vendor/knative.dev/test-infra/LICENSE similarity index 100% rename from vendor/github.com/knative/test-infra/LICENSE rename to vendor/knative.dev/test-infra/LICENSE diff --git a/vendor/github.com/knative/test-infra/scripts/README.md b/vendor/knative.dev/test-infra/scripts/README.md similarity index 98% rename from vendor/github.com/knative/test-infra/scripts/README.md rename to vendor/knative.dev/test-infra/scripts/README.md index 6a8d6f48be..549a540ca1 100644 --- a/vendor/github.com/knative/test-infra/scripts/README.md +++ b/vendor/knative.dev/test-infra/scripts/README.md @@ -81,7 +81,7 @@ skipped. ### Sample presubmit test script ```bash -source vendor/github.com/knative/test-infra/scripts/presubmit-tests.sh +source vendor/knative.dev/test-infra/scripts/presubmit-tests.sh function post_build_tests() { echo "Cleaning up after build tests" @@ -197,7 +197,7 @@ test cluster is created in a specific region, `us-west2`. # This test requires a cluster in LA E2E_CLUSTER_REGION=us-west2 -source vendor/github.com/knative/test-infra/scripts/e2e-tests.sh +source vendor/knative.dev/test-infra/scripts/e2e-tests.sh function knative_setup() { start_latest_knative_serving @@ -281,7 +281,7 @@ This is a helper script for Knative release scripts. To use it: ### Sample release script ```bash -source vendor/github.com/knative/test-infra/scripts/release.sh +source vendor/knative.dev/test-infra/scripts/release.sh function build_release() { # config/ contains the manifests diff --git a/vendor/github.com/knative/test-infra/scripts/dummy.go b/vendor/knative.dev/test-infra/scripts/dummy.go similarity index 100% rename from vendor/github.com/knative/test-infra/scripts/dummy.go rename to vendor/knative.dev/test-infra/scripts/dummy.go diff --git a/vendor/github.com/knative/test-infra/scripts/e2e-tests.sh b/vendor/knative.dev/test-infra/scripts/e2e-tests.sh similarity index 97% rename from vendor/github.com/knative/test-infra/scripts/e2e-tests.sh rename to vendor/knative.dev/test-infra/scripts/e2e-tests.sh index ea01eeae69..5483547c45 100644 --- a/vendor/github.com/knative/test-infra/scripts/e2e-tests.sh +++ b/vendor/knative.dev/test-infra/scripts/e2e-tests.sh @@ -83,7 +83,7 @@ function go_test_e2e() { local go_options="" (( EMIT_METRICS )) && test_options="-emitmetrics" [[ ! " $@" == *" -tags="* ]] && go_options="-tags=e2e" - report_go_test -v -count=1 ${go_options} $@ ${test_options} + report_go_test -v -race -count=1 ${go_options} $@ ${test_options} } # Dump info about the test cluster. If dump_extra_cluster_info() is defined, calls it too. @@ -214,12 +214,15 @@ function create_test_cluster() { [[ -n "${GCP_PROJECT}" ]] && test_cmd_args+=" --gcp-project ${GCP_PROJECT}" [[ -n "${E2E_SCRIPT_CUSTOM_FLAGS[@]}" ]] && test_cmd_args+=" ${E2E_SCRIPT_CUSTOM_FLAGS[@]}" local extra_flags=() - # If using boskos, save time and let it tear down the cluster - (( ! IS_BOSKOS )) && extra_flags+=(--down) + if (( IS_BOSKOS )); then # Add arbitrary duration, wait for Boskos projects acquisition before error out + extra_flags+=(--boskos-wait-duration=20m) + else # Only let kubetest tear down the cluster if not using Boskos, it's done by Janitor if using Boskos + extra_flags+=(--down) + fi # Set a minimal kubernetes environment that satisfies kubetest # TODO(adrcunha): Remove once https://github.com/kubernetes/test-infra/issues/13029 is fixed. - local kubedir="$(mktemp -d --tmpdir kubernetes.XXXXXXXXXX)" + local kubedir="$(mktemp -d -t kubernetes.XXXXXXXXXX)" local test_wrapper="${kubedir}/e2e-test.sh" mkdir ${kubedir}/cluster ln -s "$(which kubectl)" ${kubedir}/cluster/kubectl.sh diff --git a/vendor/github.com/knative/test-infra/scripts/library.sh b/vendor/knative.dev/test-infra/scripts/library.sh similarity index 88% rename from vendor/github.com/knative/test-infra/scripts/library.sh rename to vendor/knative.dev/test-infra/scripts/library.sh index 68d688d968..9570831e62 100644 --- a/vendor/github.com/knative/test-infra/scripts/library.sh +++ b/vendor/knative.dev/test-infra/scripts/library.sh @@ -257,7 +257,7 @@ function dump_app_logs() { for pod in $(get_app_pods "$1" "$2") do echo ">>> Pod: $pod" - kubectl -n "$2" logs "$pod" -c "$1" + kubectl -n "$2" logs "$pod" --all-containers done } @@ -299,28 +299,72 @@ function acquire_cluster_admin_role() { $2 ${geoflag} --project $(gcloud config get-value project) } +# Run a command through tee and capture its output. +# Parameters: $1 - file where the output will be stored. +# $2... - command to run. +function capture_output() { + local report="$1" + shift + "$@" 2>&1 | tee "${report}" + local failed=( ${PIPESTATUS[@]} ) + [[ ${failed[0]} -eq 0 ]] && failed=${failed[1]} || failed=${failed[0]} + return ${failed} +} + +# Create a JUnit XML for a test. +# Parameters: $1 - check class name as an identifier (e.g. BuildTests) +# $2 - check name as an identifier (e.g., GoBuild) +# $3 - failure message (can contain newlines), optional (means success) +function create_junit_xml() { + local xml="$(mktemp ${ARTIFACTS}/junit_XXXXXXXX.xml)" + local failure="" + if [[ "$3" != "" ]]; then + # Transform newlines into HTML code. + # Also escape `<` and `>` as here: https://github.com/golang/go/blob/50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26/src/encoding/json/encode.go#L48, + # this is temporary solution for fixing https://github.com/knative/test-infra/issues/1204, + # which should be obsolete once Test-infra 2.0 is in place + local msg="$(echo -n "$3" | sed 's/$/\ /g' | sed 's//\\u003e/' | tr -d '\n')" + failure="${msg}" + fi + cat << EOF > "${xml}" + + + + ${failure} + + + +EOF +} + # Runs a go test and generate a junit summary. # Parameters: $1... - parameters to go test function report_go_test() { # Run tests in verbose mode to capture details. # go doesn't like repeating -v, so remove if passed. local args=" $@ " - local go_test="go test -race -v ${args/ -v / }" + local go_test="go test -v ${args/ -v / }" # Just run regular go tests if not on Prow. echo "Running tests with '${go_test}'" - local report=$(mktemp) - ${go_test} | tee ${report} - local failed=( ${PIPESTATUS[@]} ) - [[ ${failed[0]} -eq 0 ]] && failed=${failed[1]} || failed=${failed[0]} + local report="$(mktemp)" + capture_output "${report}" ${go_test} + local failed=$? echo "Finished run, return code is ${failed}" # Install go-junit-report if necessary. run_go_tool github.com/jstemmer/go-junit-report go-junit-report --help > /dev/null 2>&1 local xml=$(mktemp ${ARTIFACTS}/junit_XXXXXXXX.xml) cat ${report} \ | go-junit-report \ - | sed -e "s#\"github.com/knative/${REPO_NAME}/#\"#g" \ + | sed -e "s#\"\(github\.com/knative\|knative\.dev\)/${REPO_NAME}/#\"#g" \ > ${xml} echo "XML report written to ${xml}" + if [[ -n "$(grep '' ${xml})" ]]; then + # XML report is empty, something's wrong; use the output as failure reason + create_junit_xml _go_tests "GoTests" "$(cat ${report})" + fi + # Capture and report any race condition errors + local race_errors="$(sed -n '/^WARNING: DATA RACE$/,/^==================$/p' ${report})" + create_junit_xml _go_tests "DataRaceAnalysis" "${race_errors}" if (( ! IS_PROW )); then # Keep the suffix, so files are related. local logfile=${xml/junit_/go_test_} @@ -376,7 +420,7 @@ function update_licenses() { cd ${REPO_ROOT_DIR} || return 1 local dst=$1 shift - run_go_tool github.com/knative/test-infra/tools/dep-collector dep-collector $@ > ./${dst} + run_go_tool knative.dev/test-infra/tools/dep-collector dep-collector $@ > ./${dst} } # Run dep-collector to check for forbidden liceses. @@ -386,7 +430,7 @@ function check_licenses() { rm -fr ${GOPATH}/src/github.com/google/licenseclassifier go get -u github.com/google/licenseclassifier # Check that we don't have any forbidden licenses in our images. - run_go_tool github.com/knative/test-infra/tools/dep-collector dep-collector -check $@ + run_go_tool knative.dev/test-infra/tools/dep-collector dep-collector -check $@ } # Run the given linter on the given files, checking it exists first. @@ -467,7 +511,7 @@ function remove_broken_symlinks() { target="${target##* -> }" [[ ${target} == /* ]] || target="./${target}" target="$(cd `dirname ${link}` && cd ${target%/*} && echo $PWD/${target##*/})" - if [[ ${target} != *github.com/knative/* ]]; then + if [[ ${target} != *github.com/knative/* && ${target} != *knative.dev/* ]]; then unlink ${link} continue fi @@ -517,7 +561,7 @@ function get_latest_knative_yaml_source() { # These MUST come last. readonly _TEST_INFRA_SCRIPTS_DIR="$(dirname $(get_canonical_path ${BASH_SOURCE[0]}))" -readonly REPO_NAME_FORMATTED="Knative $(capitalize ${REPO_NAME//-/})" +readonly REPO_NAME_FORMATTED="Knative $(capitalize ${REPO_NAME//-/ })" # Public latest nightly or release yaml files. readonly KNATIVE_SERVING_RELEASE="$(get_latest_knative_yaml_source "serving" "serving")" diff --git a/vendor/github.com/knative/test-infra/scripts/markdown-link-check-config.rc b/vendor/knative.dev/test-infra/scripts/markdown-link-check-config.rc similarity index 100% rename from vendor/github.com/knative/test-infra/scripts/markdown-link-check-config.rc rename to vendor/knative.dev/test-infra/scripts/markdown-link-check-config.rc diff --git a/vendor/github.com/knative/test-infra/scripts/markdown-lint-config.rc b/vendor/knative.dev/test-infra/scripts/markdown-lint-config.rc similarity index 100% rename from vendor/github.com/knative/test-infra/scripts/markdown-lint-config.rc rename to vendor/knative.dev/test-infra/scripts/markdown-lint-config.rc diff --git a/vendor/github.com/knative/test-infra/scripts/presubmit-tests.sh b/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh similarity index 89% rename from vendor/github.com/knative/test-infra/scripts/presubmit-tests.sh rename to vendor/knative.dev/test-infra/scripts/presubmit-tests.sh index 8a96601fa2..e0cf9d1992 100644 --- a/vendor/github.com/knative/test-infra/scripts/presubmit-tests.sh +++ b/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh @@ -85,29 +85,6 @@ function results_banner() { header "$1 tests ${result}" } -# Create a JUnit XML for a test. -# Parameters: $1 - check class name as an identifier (e.g. BuildTests) -# $2 - check name as an identifier (e.g., GoBuild) -# $3 - failure message (can contain newlines), optional (means success) -function create_junit_xml() { - local xml="$(mktemp ${ARTIFACTS}/junit_XXXXXXXX.xml)" - local failure="" - if [[ "$3" != "" ]]; then - # Transform newlines into HTML code. - local msg="$(echo -n "$3" | sed 's/$/\ /g' | tr -d '\n')" - failure="${msg}" - fi - cat << EOF > "${xml}" - - - - ${failure} - - - -EOF -} - # Run build tests. If there's no `build_tests` function, run the default # build test runner. function run_build_tests() { @@ -134,6 +111,19 @@ function run_build_tests() { return ${failed} } +# Run a build test and report its output as the failure if it fails. +# Parameters: $1 - report name. +# $2... - command (test) to run. +function report_build_test() { + local report="$(mktemp)" + local report_name="$1" + shift + local errors="" + capture_output "${report}" "$@" || errors="$(cat ${report})" + create_junit_xml _build_tests "${report_name}" "${errors}" + [[ -z "${errors}" ]] +} + # Perform markdown build tests if necessary, unless disabled. function markdown_build_tests() { (( DISABLE_MD_LINTING && DISABLE_MD_LINK_CHECK )) && return 0 @@ -146,11 +136,11 @@ function markdown_build_tests() { local failed=0 if (( ! DISABLE_MD_LINTING )); then subheader "Linting the markdown files" - lint_markdown ${mdfiles} || failed=1 + report_build_test Markdown_Lint lint_markdown ${mdfiles} || failed=1 fi if (( ! DISABLE_MD_LINK_CHECK )); then subheader "Checking links in the markdown files" - check_links_in_markdown ${mdfiles} || failed=1 + report_build_test Markdown_Link check_links_in_markdown ${mdfiles} || failed=1 fi return ${failed} } @@ -171,29 +161,34 @@ function default_build_test_runner() { [[ -z "${go_pkg_dirs}" ]] && return ${failed} # Ensure all the code builds subheader "Checking that go code builds" - local report=$(mktemp) - local errors="" - go build -v ./... 2>&1 | tee ${report} - local build_failed=( ${PIPESTATUS[@]} ) - if [[ ${build_failed[0]} -ne 0 ]]; then + local report="$(mktemp)" + local errors_go1="" + local errors_go2="" + if ! capture_output "${report}" go build -v ./... ; then failed=1 # Consider an error message everything that's not a package name. - errors="$(grep -v '^github.com/' "${report}" | sort | uniq)" + errors_go1="$(grep -v '^\(github\.com\|knative\.dev\)/' "${report}" | sort | uniq)" fi - create_junit_xml _build_tests Build_Go "${errors}" # Get all build tags in go code (ignore /vendor) local tags="$(grep -r '// +build' . \ | grep -v '^./vendor/' | cut -f3 -d' ' | sort | uniq | tr '\n' ' ')" if [[ -n "${tags}" ]]; then - go test -run=^$ -tags="${tags}" ./... || failed=1 + errors="" + if ! capture_output "${report}" go test -run=^$ -tags="${tags}" ./... ; then + failed=1 + # Consider an error message everything that's not a successful test result. + errors_go2="$(grep -v '^\(ok\|\?\)\s\+\(github\.com\|knative\.dev\)/' "${report}")" + fi fi + local errors_go="$(echo -e "${errors_go1}\n${errors_go2}" | uniq)" + create_junit_xml _build_tests Build_Go "${errors_go}" if [[ -f ./hack/verify-codegen.sh ]]; then subheader "Checking autogenerated code is up-to-date" - ./hack/verify-codegen.sh || failed=1 + report_build_test Verify_CodeGen ./hack/verify-codegen.sh || failed=1 fi # Check that we don't have any forbidden licenses in our images. subheader "Checking for forbidden licenses" - check_licenses ${go_pkg_dirs} || failed=1 + report_build_test Check_Licenses check_licenses ${go_pkg_dirs} || failed=1 return ${failed} } @@ -229,7 +224,7 @@ function run_unit_tests() { # Default unit test runner that runs all go tests in the repo. function default_unit_test_runner() { - report_go_test ./... + report_go_test -race ./... } # Run integration tests. If there's no `integration_tests` function, run the diff --git a/vendor/github.com/knative/test-infra/scripts/release.sh b/vendor/knative.dev/test-infra/scripts/release.sh similarity index 95% rename from vendor/github.com/knative/test-infra/scripts/release.sh rename to vendor/knative.dev/test-infra/scripts/release.sh index 1eae81fd46..20aa8fa33e 100644 --- a/vendor/github.com/knative/test-infra/scripts/release.sh +++ b/vendor/knative.dev/test-infra/scripts/release.sh @@ -19,12 +19,15 @@ source $(dirname ${BASH_SOURCE})/library.sh +# Organization name in GitHub; defaults to Knative. +readonly ORG_NAME="${ORG_NAME:-knative}" + # GitHub upstream. -readonly KNATIVE_UPSTREAM="https://github.com/knative/${REPO_NAME}" +readonly REPO_UPSTREAM="https://github.com/${ORG_NAME}/${REPO_NAME}" # GCRs for Knative releases. -readonly NIGHTLY_GCR="gcr.io/knative-nightly/github.com/knative/${REPO_NAME}" -readonly RELEASE_GCR="gcr.io/knative-releases/github.com/knative/${REPO_NAME}" +readonly NIGHTLY_GCR="gcr.io/knative-nightly/github.com/${ORG_NAME}/${REPO_NAME}" +readonly RELEASE_GCR="gcr.io/knative-releases/github.com/${ORG_NAME}/${REPO_NAME}" # Georeplicate images to {us,eu,asia}.gcr.io readonly GEO_REPLICATION=(us eu asia) @@ -108,7 +111,7 @@ function hub_tool() { # Shortcut to "git push" that handles authentication. # Parameters: $1..$n - arguments to "git push ". function git_push() { - local repo_url="${KNATIVE_UPSTREAM}" + local repo_url="${REPO_UPSTREAM}" [[ -n "${GITHUB_TOKEN}}" ]] && repo_url="${repo_url/:\/\//:\/\/${GITHUB_TOKEN}@}" git push ${repo_url} $@ } @@ -144,15 +147,15 @@ function setup_upstream() { local upstream="$(git config --get remote.upstream.url)" echo "Remote upstream URL is '${upstream}'" if [[ -z "${upstream}" ]]; then - echo "Setting remote upstream URL to '${KNATIVE_UPSTREAM}'" - git remote add upstream ${KNATIVE_UPSTREAM} + echo "Setting remote upstream URL to '${REPO_UPSTREAM}'" + git remote add upstream ${REPO_UPSTREAM} fi } # Fetch the release branch, so we can check it out. function setup_branch() { [[ -z "${RELEASE_BRANCH}" ]] && return - git fetch ${KNATIVE_UPSTREAM} ${RELEASE_BRANCH}:upstream/${RELEASE_BRANCH} + git fetch ${REPO_UPSTREAM} ${RELEASE_BRANCH}:upstream/${RELEASE_BRANCH} } # Setup version, branch and release notes for a auto release. @@ -555,10 +558,17 @@ function publish_to_github() { git_push tag ${TAG} [[ -n "${RELEASE_BRANCH}" ]] && commitish="--commitish=${RELEASE_BRANCH}" - hub_tool release create \ - --prerelease \ - ${attachments[@]} \ - --file=${description} \ - ${commitish} \ - ${TAG} + for i in {2..0}; do + hub_tool release create \ + --prerelease \ + ${attachments[@]} \ + --file=${description} \ + ${commitish} \ + ${TAG} && return 0 + if [[ "${i}" -gt 0 ]]; then + echo "Error publishing the release, retrying in 15s..." + sleep 15 + fi + done + abort "Cannot publish release to GitHub" } diff --git a/vendor/modules.txt b/vendor/modules.txt index 46ab91caf7..825e0803af 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -84,8 +84,6 @@ github.com/knative/serving/pkg/apis/networking github.com/knative/serving/pkg/apis/networking/v1alpha1 github.com/knative/serving/pkg/apis/config github.com/knative/serving/pkg/apis/autoscaling/v1alpha1 -# github.com/knative/test-infra v0.0.0-20190702025031-91d37e4abc30 -github.com/knative/test-infra/scripts # github.com/magiconair/properties v1.8.0 github.com/magiconair/properties # github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a @@ -395,5 +393,7 @@ k8s.io/client-go/listers/storage/v1alpha1 k8s.io/client-go/listers/storage/v1beta1 # k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 k8s.io/kube-openapi/pkg/util/proto +# knative.dev/test-infra v0.0.0-20190730202142-17f2331e80ad +knative.dev/test-infra/scripts # sigs.k8s.io/yaml v1.1.0 sigs.k8s.io/yaml