From b7b5a24be66bb8a4acca7b92d4601969a7a00bf0 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 13 Sep 2021 09:13:28 +0200 Subject: [PATCH] chore(docker): versioning --- flake.nix | 2 +- nix/docker-demo/default.nix | 17 +++++++++++++++-- nix/docker-demo/version.toml | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 nix/docker-demo/version.toml diff --git a/flake.nix b/flake.nix index 719bc4e4c..19b133a8f 100644 --- a/flake.nix +++ b/flake.nix @@ -101,7 +101,7 @@ pushUniworxDemoDocker = pkgs.writeScriptBin "push-uniworx-demo-docker" '' #!${pkgs.zsh}/bin/zsh -xe - target=''${1-docker://registry.gitlab.com/fradrive/fradrive/uniworx-demo} + target=''${1-docker://registry.gitlab.com/fradrive/fradrive/uniworx-demo:${pkgs.uniworxDemoDocker.imageTag}} [[ -n "''${1}" ]] && shift ${pkgs.skopeo}/bin/skopeo ''${@} --insecure-policy copy docker-archive://${pkgs.uniworxDemoDocker} ''${target} ''; diff --git a/nix/docker-demo/default.nix b/nix/docker-demo/default.nix index 77bb59c5f..aaaa4224b 100644 --- a/nix/docker-demo/default.nix +++ b/nix/docker-demo/default.nix @@ -1,7 +1,11 @@ { self }: final: prev: { uniworxDemoDocker = prev.dockerTools.buildImage { name = "uniworx-demo"; - tag = self.rev or null; + tag = + let + inherit (builtins.fromTOML (prev.lib.readFile ./version.toml)) semver; + hash = prev.lib.substring 0 8 (self.rev or prev.lib.removePrefix "sha256-" self.narHash); + in "${semver}+${hash}"; created = let fromDate = builtins.readFile (prev.runCommand "date" { nativeBuildInputs = with final; [ coreutils ]; } '' @@ -72,7 +76,16 @@ export SESSION_MEMCACHED_PORT=11212 export LOGDEST=/var/log/uniworx/''${cTime}.log - exec -- su uniworx -c "cd /var/lib/uniworx; uniworx ${uniworxConfig}" + typeset -a configs + configs=() + configDir=''${CONFIG_DIR-/cfg} + if [[ -d "''${configDir}" ]]; then + while IFS= read -d $'\0' cfg; do + configs+=("''${(q)cfg}") + done < <(find "''${configDir}" \( -name '*.yml' -o -name '*.yaml' \) -print0 | sort -rz) + fi + configs+=('${uniworxConfig}') + exec -- su uniworx -c "cd /var/lib/uniworx; uniworx ''${configs}" ''; postgresSchema = prev.writeText "schema.sql" '' CREATE USER uniworx WITH SUPERUSER; diff --git a/nix/docker-demo/version.toml b/nix/docker-demo/version.toml new file mode 100644 index 000000000..6b0106c9b --- /dev/null +++ b/nix/docker-demo/version.toml @@ -0,0 +1,3 @@ +# TODO: Bump version (https://semver.org) on every semantic change +# docker-demo should always use major version zero +semver = "0.2.0" \ No newline at end of file