From 66814c42820469770ac8701309a0c721d1711a58 Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Sat, 13 Jul 2024 03:31:10 -0500 Subject: [PATCH] Add ci build for CI tasks --- .gitignore | 1 + flake.nix | 29 +++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index bbe3246..c51599b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ isolinux.cfg Vagrantfile .direnv result +packer_config/ # Generated distros distros/fedora/rawhide/*.hcl diff --git a/flake.nix b/flake.nix index c06936e..4912db9 100644 --- a/flake.nix +++ b/flake.nix @@ -31,7 +31,9 @@ distroFile = d: "distros/${d.distro}/${d.version}/${d.arch}.pkrvars.hcl"; cmd = d: '' # This is a workaround for a goofy behavior in CI - find "''${PACKER_CONFIG_DIR}" -name '*_linux_amd64' -exec chmod +x '{}' ";" + if [ -e "''${PACKER_CONFIG_DIR}" ]; then + find "''${PACKER_CONFIG_DIR}" -name '*_linux_amd64' -exec chmod +x '{}' ";" + fi packer init sources version="''${1:-1}" packer build -var "build=$version" -only=${d.provider}.${d.arch} -var-file=${distroFile d}''; @@ -83,7 +85,10 @@ env = [{ name = "EFI_DIR"; value = "${pkgs.OVMF.fd}/FV/"; - }]; + } { + name = "PACKER_CONFIG_DIR"; + value = "./packer_config"; + } ]; }; # This is not special, this is just flakes @@ -109,19 +114,27 @@ vagrant box add --provider ${vp d} ./output/${vp d}/${d.distro}-${d.version}.box --name test_box --force ''; }); + cibuild = d: pkgs.writeShellApplication (base // { + name = "ci${name d}"; + text = '' + set -x + ${cmd d} -except=upload sources/ + ''; + }); upload = d: pkgs.writeShellApplication (base // { name = "upload${name d}"; text = '' - set -x - ${cmd d} sources/ + set -x + ${cmd d} sources/ ''; - }); + }); builds = lib.lists.foldr (d: acc: acc // { "build${name d}" = (build d); }) {} withProviders; uploads = lib.lists.foldr (d: acc: acc // { "upload${name d}" = (upload d); }) {} withProviders; - qemu_list = builtins.toJSON (builtins.map (d: { buildcmd = "build${name d}"; }) (builtins.filter (x: x.provider == "qemu") active)); - vbox_list = builtins.toJSON (builtins.map (d: { buildcmd = "build${name d}"; }) (builtins.filter (x: x.provider == "virtualbox-iso") active)); + cibuilds = lib.lists.foldr (d: acc: acc // { "ci${name d}" = (cibuild d); }) {} withProviders; + qemu_list = builtins.toJSON (builtins.map (d: { buildcmd = "ci${name d}"; }) (builtins.filter (x: x.provider == "qemu") active)); + vbox_list = builtins.toJSON (builtins.map (d: { buildcmd = "ci${name d}"; }) (builtins.filter (x: x.provider == "virtualbox-iso") active)); hyperv_list = builtins.toJSON (builtins.map (d: { distro = distroFile d; }) (builtins.filter (x: x.provider == "hyperv-iso") active)); - in builds // uploads // { + in builds // uploads // cibuilds // { continue = pkgs.writeText "continue.yml" (builtins.replaceStrings ["QEMU_MATRIX" "VBOX_MATRIX" "HYPERV_MATRIX"] [qemu_list vbox_list hyperv_list] (builtins.readFile ./.gitlab-ci-build.yml.in)