diff options
Diffstat (limited to 'ops/ci')
-rw-r--r-- | ops/ci/README.org | 3 | ||||
-rw-r--r-- | ops/ci/default.nix | 3 | ||||
-rw-r--r-- | ops/ci/pipeline.yml | 25 |
3 files changed, 28 insertions, 3 deletions
diff --git a/ops/ci/README.org b/ops/ci/README.org new file mode 100644 index 0000000..0754937 --- /dev/null +++ b/ops/ci/README.org @@ -0,0 +1,3 @@ +The default pipeline is managed by [[file:~/workspace/world/ops/buildkite/][ops/buildkite]]. When a new build starts, the buildkite agent uploads the pipeline defined in this directory. + +The configuration for the repository is managed with [[file+emacs:pipeline.yml][pipeline.yml]]. All the steps are executed in parallel except for the last one, which wait on the completion of all the previous steps. If one of the previous steps has failed, the build is marked as failed, otherwise we consider it to pass. diff --git a/ops/ci/default.nix b/ops/ci/default.nix deleted file mode 100644 index 1638b53..0000000 --- a/ops/ci/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ pkgs }: - -{ } diff --git a/ops/ci/pipeline.yml b/ops/ci/pipeline.yml new file mode 100644 index 0000000..4308f6a --- /dev/null +++ b/ops/ci/pipeline.yml @@ -0,0 +1,25 @@ +env: + BUILDKITE_TOKEN_PATH: /run/agenix/buildkite/graphql +steps: + - label: ":shell:" + command: "nix develop -c pre-commit run --all-files" + + # wait for all previous steps to complete. + - wait: null + continue_on_failure: true + + - label: ":hammer:" + command: | + set -ueo pipefail + + readonly FAILED_JOBS=$(curl 'https://graphql.buildkite.com/v1' \ + --silent \ + -H "Authorization: Bearer $(cat ${BUILDKITE_TOKEN_PATH})" \ + -d "{\"query\": \"query BuildStatusQuery { build(uuid: \\\"$BUILDKITE_BUILD_ID\\\") { jobs(passed: false) { count } } }\"}" | \ + jq -r '.data.build.jobs.count') + + echo "$$FAILED_JOBS build jobs failed." + + if (( $$FAILED_JOBS > 0 )); then + exit 1 + fi |