From 93b282cd278770edd718e8fa54fabd004abd23f0 Mon Sep 17 00:00:00 2001 From: technofab Date: Thu, 4 Sep 2025 11:01:08 +0200 Subject: [PATCH] feat: add CI with nix-gitlab-ci --- .gitlab-ci.yml | 5 +++++ flake.nix | 2 ++ nix/repo/ci.nix | 45 +++++++++++++++++++++++++++++++++++++++++++++ nix/repo/flake.lock | 25 ++++++++++++++++++++++--- nix/repo/flake.nix | 2 ++ nix/repo/soonix.nix | 3 +++ 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 nix/repo/ci.nix diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..a415272 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,5 @@ +# Generated by soonix, DO NOT EDIT +include: +- component: gitlab.com/TECHNOFAB/nix-gitlab-ci/nix-gitlab-ci@3.0.0-alpha.2 + inputs: + version: 3.0.0-alpha.2 diff --git a/flake.nix b/flake.nix index 9489736..0588044 100644 --- a/flake.nix +++ b/flake.nix @@ -23,12 +23,14 @@ (simple "tests") (simple "docs") (simple "soonix") + (simple "ci") ]; } { packages = ren.select self [ ["repo" "tests"] ["repo" "docs"] + ["repo" "ci" "packages"] ["repo" "soonix" "packages"] ]; }; diff --git a/nix/repo/ci.nix b/nix/repo/ci.nix new file mode 100644 index 0000000..913d8fc --- /dev/null +++ b/nix/repo/ci.nix @@ -0,0 +1,45 @@ +{inputs, ...}: let + inherit (inputs) cilib; +in + cilib.mkCI { + pipelines."default" = { + stages = ["test" "build" "deploy"]; + jobs = { + "test" = { + stage = "test"; + script = [ + "nix run .#tests -- --junit=junit.xml" + ]; + allow_failure = true; + artifacts = { + when = "always"; + reports.junit = "junit.xml"; + }; + }; + "docs" = { + stage = "build"; + script = [ + # sh + '' + nix build .#docs:default + mkdir -p public + cp -r result/. public/ + '' + ]; + artifacts.paths = ["public"]; + }; + "pages" = { + nix.enable = false; + image = "alpine:latest"; + stage = "deploy"; + script = ["true"]; + artifacts.paths = ["public"]; + rules = [ + { + "if" = "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"; + } + ]; + }; + }; + }; + } diff --git a/nix/repo/flake.lock b/nix/repo/flake.lock index b9bf386..9a81112 100644 --- a/nix/repo/flake.lock +++ b/nix/repo/flake.lock @@ -17,6 +17,24 @@ "type": "gitlab" } }, + "nix-gitlab-ci-lib": { + "locked": { + "dir": "lib", + "lastModified": 1756974596, + "narHash": "sha256-KxQj76sUqvPNtrqzNWMZeOWqTitc0aFCYj7UZzToiEA=", + "owner": "TECHNOFAB", + "repo": "nix-gitlab-ci", + "rev": "00cf5b83c6c46698fba12a54b9cc15c6d4e5a4dd", + "type": "gitlab" + }, + "original": { + "dir": "lib", + "owner": "TECHNOFAB", + "ref": "3.0.0-alpha.2", + "repo": "nix-gitlab-ci", + "type": "gitlab" + } + }, "nixmkdocs-lib": { "locked": { "dir": "lib", @@ -37,11 +55,11 @@ "nixtest-lib": { "locked": { "dir": "lib", - "lastModified": 1753957623, - "narHash": "sha256-kdImwKx57N0QL8HPUUb5ADwXFgSjaNOk39b/eKlzyTo=", + "lastModified": 1756812148, + "narHash": "sha256-0g8KNk4zoLApA51PBHOWqPLRYpprjrQuSzNCjfBQgu8=", "owner": "TECHNOFAB", "repo": "nixtest", - "rev": "22b43c9fe83be73c3f0648bbb54bc3c1cf7f96df", + "rev": "5741109cc9ec2b6d41b56abd3f5bc51ed7a9a228", "type": "gitlab" }, "original": { @@ -54,6 +72,7 @@ "root": { "inputs": { "devshell-lib": "devshell-lib", + "nix-gitlab-ci-lib": "nix-gitlab-ci-lib", "nixmkdocs-lib": "nixmkdocs-lib", "nixtest-lib": "nixtest-lib", "treefmt-nix": "treefmt-nix" diff --git a/nix/repo/flake.nix b/nix/repo/flake.nix index f4f837c..8a17542 100644 --- a/nix/repo/flake.nix +++ b/nix/repo/flake.nix @@ -3,6 +3,7 @@ devshell-lib.url = "gitlab:rensa-nix/devshell?dir=lib"; nixtest-lib.url = "gitlab:TECHNOFAB/nixtest?dir=lib"; nixmkdocs-lib.url = "gitlab:TECHNOFAB/nixmkdocs?dir=lib"; + nix-gitlab-ci-lib.url = "gitlab:TECHNOFAB/nix-gitlab-ci/3.0.0-alpha.2?dir=lib"; treefmt-nix = { url = "github:numtide/treefmt-nix"; flake = false; @@ -14,6 +15,7 @@ ntlib = i.nixtest-lib.lib {inherit (i.parent) pkgs;}; devshell = i.devshell-lib.lib {inherit (i.parent) pkgs;}; doclib = i.nixmkdocs-lib.lib {inherit (i.parent) pkgs;}; + cilib = i.nix-gitlab-ci-lib.lib {inherit (i.parent) pkgs;}; soonix = import "${i.parent.self}/lib" {inherit (i.parent) pkgs;}; treefmt = import i.treefmt-nix; }; diff --git a/nix/repo/soonix.nix b/nix/repo/soonix.nix index 2644f32..7983897 100644 --- a/nix/repo/soonix.nix +++ b/nix/repo/soonix.nix @@ -1,11 +1,14 @@ { inputs, + cell, ... }: let inherit (inputs) soonix; + inherit (cell) ci; in (soonix.make { hooks = { + ci = ci.soonix; test = { output = "test.yaml"; generator = "nix";