mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-16 18:37:04 +03:00
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:
parent
1bb8808e1a
commit
1308817e05
@ -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;
|
||||
};
|
||||
|
@ -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 {};
|
||||
|
@ -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()
|
||||
'';
|
||||
};
|
||||
}
|
@ -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 {
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user