From 540cc89c8382e2cd06db5bfead8b08e18969b6c5 Mon Sep 17 00:00:00 2001 From: Charles Hall Date: Sun, 1 Dec 2024 16:23:26 -0800 Subject: [PATCH] move ci job scipts into an actual script This will make it possible/easier to: * share code between jobs * run jobs locally --- .gitlab-ci.yml | 9 +++------ bin/job | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ nix/shell.nix | 2 ++ 3 files changed, 57 insertions(+), 6 deletions(-) create mode 100755 bin/job diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e73cbc9c..5336e0ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,9 +42,7 @@ ci: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' script: - - direnv exec . nix-build-and-cache ci - - - direnv exec . engage + - direnv exec . job ci cache: paths: - target @@ -57,7 +55,7 @@ artifacts: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == 'merge_request_event' script: - - direnv exec . nix-build-and-cache packages + - direnv exec . job artifacts pages: stage: deploy @@ -65,8 +63,7 @@ pages: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH script: - - nix build .#website-root - - cp --recursive --dereference result public + - direnv exec . job pages artifacts: paths: - public diff --git a/bin/job b/bin/job new file mode 100755 index 00000000..2d5166e5 --- /dev/null +++ b/bin/job @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +job_artifacts() ( + set -euo pipefail + + nix-build-and-cache packages +) + +job_ci() ( + set -euo pipefail + + nix-build-and-cache ci + direnv exec . engage +) + +job_pages() ( + set -euo pipefail + + nix build .#website-root + cp --recursive --dereference result public +) + +bail() ( + set -euo pipefail + + echo + echo "Job failed" + exit 1 +) + +run() ( + set -euo pipefail + + if [[ -z "${1+x}" ]]; then + echo "You must supply a job to run. Available jobs:" + declare -F | rg \ + --only-matching \ + --color never \ + --replace '* $1' \ + '^declare -f job_(.*)$' + + exit 1 + fi + + job="$1" + + cd "$(git rev-parse --show-toplevel)" + + job_"$job" || bail +) + +run "$@" diff --git a/nix/shell.nix b/nix/shell.nix index 4373a0b5..5e642001 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -8,6 +8,7 @@ , markdownlint-cli , mdbook , mkShell +, ripgrep , stdenv , toolchain }: @@ -35,6 +36,7 @@ mkShell { lychee markdownlint-cli mdbook + ripgrep toolchain ] ++