diff options
Diffstat (limited to 'users/wpcarro/ci/pipelines')
-rw-r--r-- | users/wpcarro/ci/pipelines/post-receive.nix | 56 | ||||
-rw-r--r-- | users/wpcarro/ci/pipelines/script.el | 44 |
2 files changed, 100 insertions, 0 deletions
diff --git a/users/wpcarro/ci/pipelines/post-receive.nix b/users/wpcarro/ci/pipelines/post-receive.nix new file mode 100644 index 000000000000..456d546af7da --- /dev/null +++ b/users/wpcarro/ci/pipelines/post-receive.nix @@ -0,0 +1,56 @@ +{ briefcase, pkgs, ... }: + +let + inherit (builtins) fetchGit path toJSON; + inherit (briefcase.emacs) initEl runScript; + + elispLintSrc = fetchGit { + url = "https://github.com/gonewest818/elisp-lint"; + rev = "2b645266be8010a6a49c6d0ebf6a3ad5bd290ff4"; + }; + + pipeline.steps = [ + { + key = "lint-secrets"; + command = "${pkgs.git-secrets}/bin/git-secrets --scan-history"; + label = ":broom: lint secrets"; + } + { + key = "build-briefcase"; + command = '' + nix-build . -I briefcase="$(pwd)" --no-out-link --show-trace + ''; + label = ":nix: build briefcase"; + depends_on = "lint-secrets"; + } + { + key = "init-emacs"; + command = let + scriptEl = path { + path = ./script.el; + name = "script.el"; + }; + runScriptEl = runScript { + script = scriptEl; + briefcasePath = "$(pwd)"; + }; + in "${runScriptEl} ${initEl}"; + label = ":gnu: initialize Emacs"; + depends_on = "build-briefcase"; + } + { + key = "build-socrates"; + command = '' + nix-build '<nixpkgs/nixos>' \ + -I briefcase="$(pwd)" \ + -I nixpkgs=/var/lib/buildkite-agent-socrates/nixpkgs-channels \ + -I nixos-config=nixos/socrates/default.nix \ + -A system \ + --no-out-link \ + --show-trace + ''; + label = ":nix: build socrates"; + depends_on = "build-briefcase"; + } + ]; +in pkgs.writeText "pipeline.yaml" (toJSON pipeline) diff --git a/users/wpcarro/ci/pipelines/script.el b/users/wpcarro/ci/pipelines/script.el new file mode 100644 index 000000000000..da079b64ba5b --- /dev/null +++ b/users/wpcarro/ci/pipelines/script.el @@ -0,0 +1,44 @@ +;; This script initializes Emacs and exits with either a zero or non-zero status +;; depending on whether or not Emacs initialized without logging warnings or +;; encountering errors. +;; +;; This script reads the location of init.el as the last argument in `argv'. + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'prelude) +(require 'f) +(require 'dash) +(require 'buffer) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Script +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar init-el-path (-last-item argv) + "Path to the init.el file that this script attempts to load.") + +(prelude-assert (f-exists? init-el-path)) + +(condition-case err + (load init-el-path) + (error + (message "Encountered an error while attempting to load init.el: %s" err) + (kill-emacs 1))) + +(when (buffer-exists? "*Errors*") + (progn + (with-current-buffer "*Errors*" + (message "Encountered errors in *Errors* buffer: %s" (buffer-string))) + (kill-emacs 1))) + +(when (buffer-exists? "*Warnings*") + (progn + (with-current-buffer "*Warnings*" + (message "Encountered warnings in *Warnings* buffer: %s" (buffer-string))) + (kill-emacs 1))) + +(message "Successfully init'd Emacs without encountering errors or warnings!") +(kill-emacs 0) |