diff --git a/.cirrus.yml b/.cirrus.yml index 47deb48b8d..8dbae85bdd 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -18,6 +18,8 @@ mobile_ipv6_config: &MOBILE_IPV6_CONFIG --build-type=release --enable-cpp-tests resources_template: &RESOURCES_TEMPLATE cpu: *CPUS memory: *MEMORY + # For greediness, see https://medium.com/cirruslabs/introducing-greedy-container-instances-29aad06dc2b4 + greedy: true macos_resources_template: &MACOS_RESOURCES_TEMPLATE # https://medium.com/cirruslabs/new-macos-task-execution-architecture-for-cirrus-ci-604250627c94 diff --git a/ci/build.sh b/ci/build.sh index 9227ac7a35..20ca3237cc 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -1,15 +1,18 @@ #! /usr/bin/env bash +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)" +. ${SCRIPT_DIR}/common.sh + set -e set -x # If we're on macOS, use --osx-sysroot to ensure we can find the SDKs from Xcode. This avoids # some problems with Catalina specifically, but it doesn't break anything on Big Sur either. -if [ "${CIRRUS_OS}" == "darwin" ]; then +if [[ "${CIRRUS_OS}" == "darwin" ]]; then export ZEEK_CI_CONFIGURE_FLAGS="${ZEEK_CI_CONFIGURE_FLAGS} --osx-sysroot=$(xcrun --show-sdk-path)" fi -if [ "${ZEEK_CI_CREATE_ARTIFACT}" != "1" ]; then +if [[ "${ZEEK_CI_CREATE_ARTIFACT}" != "1" ]]; then ./configure ${ZEEK_CI_CONFIGURE_FLAGS} cd build make -j ${ZEEK_CI_CPUS} diff --git a/ci/common.sh b/ci/common.sh new file mode 100644 index 0000000000..cc84e9a973 --- /dev/null +++ b/ci/common.sh @@ -0,0 +1,12 @@ +# Common material sourced by Bash CI scripts in this directory + +# On Cirrus, oversubscribe the CPUs when on Linux. This uses Cirrus' "greedy" feature. +if [[ "${CIRRUS_OS}" == linux ]]; then + if [[ -n "${ZEEK_CI_CPUS}" ]]; then + ZEEK_CI_CPUS=$(( 2 * ${ZEEK_CI_CPUS} )) + fi + + if [[ -n "${ZEEK_CI_BTEST_JOBS}" ]]; then + ZEEK_CI_BTEST_JOBS=$(( 2 * ${ZEEK_CI_BTEST_JOBS} )) + fi +fi diff --git a/ci/test.sh b/ci/test.sh index 2690094c7b..f6f0166e9a 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -16,6 +16,9 @@ if [[ -z "${CIRRUS_CI}" ]]; then ZEEK_CI_BTEST_RETRIES=2 fi +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)" +. ${SCRIPT_DIR}/common.sh + function pushd { command pushd "$@" > /dev/null || exit 1