diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml new file mode 100644 index 00000000..70009377 --- /dev/null +++ b/.buildkite/pipeline.yml @@ -0,0 +1,27 @@ +steps: + - label: ":runner: Launch matrix of jobs" + commands: | + AGENT_OS_AND_ARCH=( linux-x86_64 windows-x86_64 macos-aarch64 ) + JULIA_VERSIONS=( 1.6 1.8 1.9 nightly ) + JULIA_TEST_COVERAGE=false + + for AGENT_OS_AND_ARCH in "$${AGENT_OS_AND_ARCH[@]}"; do + IFS=- read AGENT_OS AGENT_ARCH <<<"$${AGENT_OS_AND_ARCH}" + for JULIA_VERSION in "$${JULIA_VERSIONS[@]}"; do + # Skip julia versions that do not exist + if [[ "${AGENT_OS_AND_ARCH}" == "macos-aarch64" ]] && [[ "${JULIA_VERSION}" == "1.6" ]]; then + continue + fi + + # Template `runtests.yml` with the values from our matrix + export AGENT_OS AGENT_ARCH JULIA_VERSION JULIA_TEST_COVERAGE + buildkite-agent pipeline upload .buildkite/runtests.yml + + # For 1.9, we need a `coverage=false` build due to pkgimages + if [[ "$${JULIA_VERSION}" == "1.9" ]]; then + JULIA_TEST_COVERAGE=true buildkite-agent pipeline upload .buildkite/runtests.yml + fi + done + done + agents: + queue: "juliaecosystem" diff --git a/.buildkite/runtests.yml b/.buildkite/runtests.yml new file mode 100644 index 00000000..7fe52beb --- /dev/null +++ b/.buildkite/runtests.yml @@ -0,0 +1,13 @@ +steps: + - label: ":test_tube: :${AGENT_OS}: Julia ${JULIA_VERSION}, ${AGENT_OS} ${AGENT_ARCH}, coverage=${JULIA_TEST_COVERAGE}" + plugins: + - JuliaCI/julia#v1: + version: "${JULIA_VERSION}" + # This buildkite plugin has a `command` hook inside of it, + # so we don't need to specify a `commands` block for this step. + - JuliaCI/julia-test#v1: + coverage: "${JULIA_TEST_COVERAGE}" + agents: + queue: "juliaecosystem" + os: "${AGENT_OS}" + arch: "${AGENT_ARCH}"