From 04b45e4c2262d86b96ab0e9e0dd5458ad350fe19 Mon Sep 17 00:00:00 2001 From: Elliot Saba Date: Mon, 18 Sep 2023 10:25:53 -0700 Subject: [PATCH] Initial stab at buildkite CI config --- .buildkite/pipeline.yml | 27 +++++++++++++++++++++++++++ .buildkite/runtests.yml | 13 +++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .buildkite/pipeline.yml create mode 100644 .buildkite/runtests.yml diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml new file mode 100644 index 00000000..bdfd8e3a --- /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}"