nixos/hydra: remove hydra-migration upgrade path

This should NOT be backported to 20.09!

When 21.03 is released, the DB changes are about a year old and
operators had two release cycles for the upgrade. At this point it
should be fair to remove the compat layer to reduce the complexity of
the module itself.
This commit is contained in:
Maximilian Bosch 2020-09-27 23:27:51 +02:00
parent 1bb8808e1a
commit 1308817e05
No known key found for this signature in database
GPG key ID: 091DBF4D1FC46B8E
6 changed files with 4 additions and 149 deletions

View file

@ -37,8 +37,6 @@ let
haveLocalDB = cfg.dbi == localDB;
inherit (config.system) stateVersion;
hydra-package =
let
makeWrapperArgs = concatStringsSep " " (mapAttrsToList (key: value: "--set \"${key}\" \"${value}\"") hydraEnv);
@ -96,7 +94,8 @@ in
package = mkOption {
type = types.package;
defaultText = "pkgs.hydra";
default = pkgs.hydra-unstable;
defaultText = "pkgs.hydra-unstable";
description = "The Hydra package.";
};
@ -225,34 +224,6 @@ in
config = mkIf cfg.enable {
warnings = optional (cfg.package.migration or false) ''
You're currently deploying an older version of Hydra which is needed to
make some required database changes[1]. As soon as this is done, it's recommended
to run `hydra-backfill-ids` and set `services.hydra.package` to `pkgs.hydra-unstable`
after that.
[1] https://github.com/NixOS/hydra/pull/711
'';
services.hydra.package = with pkgs;
mkDefault (
if pkgs ? hydra
then throw ''
The Hydra package doesn't exist anymore in `nixpkgs`! It probably exists
due to an overlay. To upgrade Hydra, you need to take two steps as some
bigger changes in the database schema were implemented recently[1]. You first
need to deploy `pkgs.hydra-migration`, run `hydra-backfill-ids` on the server
and then deploy `pkgs.hydra-unstable`.
If you want to use `pkgs.hydra` from your overlay, please set `services.hydra.package`
explicitly to `pkgs.hydra` and make sure you know what you're doing.
[1] https://github.com/NixOS/hydra/pull/711
''
else if versionOlder stateVersion "20.03" then hydra-migration
else hydra-unstable
);
users.groups.hydra = {
gid = config.ids.gids.hydra;
};

View file

@ -150,7 +150,6 @@ in
hostname = handleTest ./hostname.nix {};
hound = handleTest ./hound.nix {};
hydra = handleTest ./hydra {};
hydra-db-migration = handleTest ./hydra/db-migration.nix {};
i3wm = handleTest ./i3wm.nix {};
icingaweb2 = handleTest ./icingaweb2.nix {};
iftop = handleTest ./iftop.nix {};

View file

@ -1,92 +0,0 @@
{ system ? builtins.currentSystem
, pkgs ? import ../../.. { inherit system; }
, ...
}:
let inherit (import ./common.nix { inherit system; }) baseConfig; in
with import ../../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
{ mig = makeTest {
name = "hydra-db-migration";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ ma27 ];
};
nodes = {
original = { pkgs, lib, ... }: {
imports = [ baseConfig ];
# An older version of Hydra before the db change
# for testing purposes.
services.hydra.package = pkgs.hydra-migration.overrideAttrs (old: {
inherit (old) pname;
version = "2020-02-06";
src = pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "2b4f14963b16b21ebfcd6b6bfa7832842e9b2afc";
sha256 = "16q0cffcsfx5pqd91n9k19850c1nbh4vvbd9h8yi64ihn7v8bick";
};
});
};
migration_phase1 = { pkgs, lib, ... }: {
imports = [ baseConfig ];
services.hydra.package = pkgs.hydra-migration;
};
finished = { pkgs, lib, ... }: {
imports = [ baseConfig ];
services.hydra.package = pkgs.hydra-unstable;
};
};
testScript = { nodes, ... }: let
next = nodes.migration_phase1.config.system.build.toplevel;
finished = nodes.finished.config.system.build.toplevel;
in ''
original.start()
original.wait_for_unit("multi-user.target")
original.wait_for_unit("postgresql.service")
original.wait_for_unit("hydra-init.service")
original.require_unit_state("hydra-queue-runner.service")
original.require_unit_state("hydra-evaluator.service")
original.require_unit_state("hydra-notify.service")
original.succeed("hydra-create-user admin --role admin --password admin")
original.wait_for_open_port(3000)
original.succeed("create-trivial-project.sh")
original.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'")
assert "jobset_id" not in out
original.succeed(
"${next}/bin/switch-to-configuration test >&2"
)
original.wait_for_unit("hydra-init.service")
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'")
assert "jobset_id|integer|||" in out
original.succeed("hydra-backfill-ids")
original.succeed(
"${finished}/bin/switch-to-configuration test >&2"
)
original.wait_for_unit("hydra-init.service")
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'")
assert "jobset_id|integer||not null|" in out
original.wait_until_succeeds(
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'
)
original.shutdown()
'';
};
}

View file

@ -11,7 +11,7 @@ let
inherit (import ./common.nix { inherit system; }) baseConfig;
hydraPkgs = {
inherit (pkgs) hydra-migration hydra-unstable;
inherit (pkgs) hydra-unstable;
};
makeHydraTest = with pkgs.lib; name: package: makeTest {

View file

@ -1,28 +1,6 @@
{ fetchFromGitHub, nixStable, callPackage, nixFlakes, nixosTests }:
{
# Package for phase-1 of the db migration for Hydra.
# https://github.com/NixOS/hydra/pull/711
hydra-migration = callPackage ./common.nix {
version = "2020-02-10";
src = fetchFromGitHub {
owner = "NixOS";
repo = "hydra";
rev = "add4f610ce6f206fb44702b5a894d877b3a30e3a";
sha256 = "1d8hdgjx2ys0zmixi2ydmimdq7ml20h1ji4amwawcyw59kssh6l3";
};
nix = nixStable;
migration = true;
tests = {
db-migration = nixosTests.hydra-db-migration.mig;
basic = nixosTests.hydra.hydra-migration;
};
};
# Hydra from latest master branch. Contains breaking changes,
# so when having an older version, `pkgs.hydra-migration` should be deployed first.
hydra-unstable = callPackage ./common.nix {
version = "2020-10-20";
src = fetchFromGitHub {
@ -34,7 +12,6 @@
nix = nixFlakes;
tests = {
db-migration = nixosTests.hydra-db-migration.mig;
basic = nixosTests.hydra.hydra-unstable;
};
};

View file

@ -13042,7 +13042,7 @@ in
hwloc = callPackage ../development/libraries/hwloc {};
inherit (callPackage ../development/tools/misc/hydra { })
hydra-migration hydra-unstable;
hydra-unstable;
hydra-flakes = throw ''
Flakes support has been merged into Hydra's master. Please use