| #!/bin/bash |
| # Copyright 2016 The Bazel 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. |
| |
| # Shell script containing the main build phase for all bazel_github_job-s |
| |
| set -e |
| set +x |
| |
| BAZEL=~/.bazel/${BAZEL_VERSION}/bin/bazel |
| |
| ROOT="${PWD}" |
| |
| TEST_TAG_FILTERS="{{ variables.TEST_TAG_FILTERS }}" |
| BUILD_TAG_FILTERS="" |
| JAVA_VERSION="1.8" |
| if [[ "${BAZEL_VERSION}" =~ -jdk7$ ]]; then |
| JAVA_VERSION="1.7" |
| if [ -n "${TEST_TAG_FILTERS}" ]; then |
| TEST_TAG_FILTERS="${TEST_TAG_FILTERS},-jdk8" |
| else |
| TEST_TAG_FILTERS="-jdk8" |
| fi |
| BUILD_TAG_FILTERS="-jdk8" |
| fi |
| |
| cat >${ROOT}/bazel.bazelrc <<EOF |
| import %workspace%/.bazelrc |
| build {{ variables.BUILD_OPTS }} |
| test {{ variables.TEST_OPTS }} |
| test --test_tag_filters ${TEST_TAG_FILTERS} |
| test --define JAVA_VERSION=${JAVA_VERSION} |
| EOF |
| |
| if [[ ! -z "${BUILD_TAG_FILTERS}" ]]; |
| then |
| echo "build --build_tag_filters ${BUILD_TAG_FILTERS}" >> ${ROOT}/bazel.bazelrc |
| fi |
| |
| if [[ "${PLATFORM_NAME}" =~ .*darwin.* ]]; then |
| cat >>${ROOT}/bazel.bazelrc <<EOF |
| test --local_test_jobs=3 |
| EOF |
| fi |
| |
| if [[ "${PLATFORM_NAME}" =~ .*darwin.* ]] && \ |
| xcodebuild -showsdks 2> /dev/null | grep -q '\-sdk iphonesimulator'; then |
| cat >>${ROOT}/bazel.bazelrc <<EOF |
| build --define IPHONE_SDK=1 |
| EOF |
| fi |
| |
| rm -f .unstable |
| mkdir -p .bin |
| cat <<EOF >.bin/bazel |
| #!/bin/bash |
| retCode=0 |
| ${BAZEL} --bazelrc=${ROOT}/bazel.bazelrc "\$@" || retCode=\$? |
| # Bazel returns 3 if there was test failures but no breakge |
| if [[ "\$retCode" -eq "3" ]]; then |
| # Write 1 in the .unstable file so the following step in Jenkins |
| # know that it is a test failure. |
| echo 1 >"${ROOT}/.unstable" |
| elif [[ "\$retCode" -ne "0" ]]; then |
| # Else simply fails the job by exiting with a non null return code |
| exit \$retCode |
| fi |
| EOF |
| chmod +x .bin/bazel |
| export PATH="${PWD}/.bin:${PATH}" |
| |
| cd {{ variables.WORKSPACE }} |
| |
| touch .bazelrc |
| |
| echo "==== bazel version ====" |
| bazel version |
| echo |
| echo |
| |
| # Workaround for bazelbuild/bazel#2941 |
| # TODO(dmarting): Remove once 0.5.0 is released |
| if [ "$JAVA_VERSION" = "1.7" ]; then |
| bazel clean |
| fi |
| |
| set -x |
| |
| {{ variables.CONFIGURE }} |
| TESTS='{{ variables.TESTS }}' |
| [ -z "${TESTS}" ] || TESTS="$(bazel query "tests(${TESTS})")" |
| [ -z "{{ variables.BUILDS }}" ] || bazel build {{ variables.BUILDS }} |
| [ -z "${TESTS}" ] || bazel test ${TESTS} |