Add ci build for CI tasks
This commit is contained in:
@@ -9,6 +9,7 @@ isolinux.cfg
|
|||||||
Vagrantfile
|
Vagrantfile
|
||||||
.direnv
|
.direnv
|
||||||
result
|
result
|
||||||
|
packer_config/
|
||||||
|
|
||||||
# Generated distros
|
# Generated distros
|
||||||
distros/fedora/rawhide/*.hcl
|
distros/fedora/rawhide/*.hcl
|
||||||
|
|||||||
@@ -31,7 +31,9 @@
|
|||||||
distroFile = d: "distros/${d.distro}/${d.version}/${d.arch}.pkrvars.hcl";
|
distroFile = d: "distros/${d.distro}/${d.version}/${d.arch}.pkrvars.hcl";
|
||||||
cmd = d: ''
|
cmd = d: ''
|
||||||
# This is a workaround for a goofy behavior in CI
|
# This is a workaround for a goofy behavior in CI
|
||||||
|
if [ -e "''${PACKER_CONFIG_DIR}" ]; then
|
||||||
find "''${PACKER_CONFIG_DIR}" -name '*_linux_amd64' -exec chmod +x '{}' ";"
|
find "''${PACKER_CONFIG_DIR}" -name '*_linux_amd64' -exec chmod +x '{}' ";"
|
||||||
|
fi
|
||||||
packer init sources
|
packer init sources
|
||||||
version="''${1:-1}"
|
version="''${1:-1}"
|
||||||
packer build -var "build=$version" -only=${d.provider}.${d.arch} -var-file=${distroFile d}'';
|
packer build -var "build=$version" -only=${d.provider}.${d.arch} -var-file=${distroFile d}'';
|
||||||
@@ -83,7 +85,10 @@
|
|||||||
env = [{
|
env = [{
|
||||||
name = "EFI_DIR";
|
name = "EFI_DIR";
|
||||||
value = "${pkgs.OVMF.fd}/FV/";
|
value = "${pkgs.OVMF.fd}/FV/";
|
||||||
}];
|
} {
|
||||||
|
name = "PACKER_CONFIG_DIR";
|
||||||
|
value = "./packer_config";
|
||||||
|
} ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# This is not special, this is just flakes
|
# This is not special, this is just flakes
|
||||||
@@ -109,6 +114,13 @@
|
|||||||
vagrant box add --provider ${vp d} ./output/${vp d}/${d.distro}-${d.version}.box --name test_box --force
|
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 // {
|
upload = d: pkgs.writeShellApplication (base // {
|
||||||
name = "upload${name d}";
|
name = "upload${name d}";
|
||||||
text = ''
|
text = ''
|
||||||
@@ -118,10 +130,11 @@
|
|||||||
});
|
});
|
||||||
builds = lib.lists.foldr (d: acc: acc // { "build${name d}" = (build d); }) {} withProviders;
|
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;
|
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));
|
cibuilds = lib.lists.foldr (d: acc: acc // { "ci${name d}" = (cibuild d); }) {} withProviders;
|
||||||
vbox_list = builtins.toJSON (builtins.map (d: { buildcmd = "build${name d}"; }) (builtins.filter (x: x.provider == "virtualbox-iso") active));
|
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));
|
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"
|
continue = pkgs.writeText "continue.yml"
|
||||||
(builtins.replaceStrings ["QEMU_MATRIX" "VBOX_MATRIX" "HYPERV_MATRIX"] [qemu_list vbox_list hyperv_list]
|
(builtins.replaceStrings ["QEMU_MATRIX" "VBOX_MATRIX" "HYPERV_MATRIX"] [qemu_list vbox_list hyperv_list]
|
||||||
(builtins.readFile ./.gitlab-ci-build.yml.in)
|
(builtins.readFile ./.gitlab-ci-build.yml.in)
|
||||||
|
|||||||
Reference in New Issue
Block a user