diff options
author | Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> | 2017-05-20 22:44:34 +0100 |
---|---|---|
committer | Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> | 2017-05-20 22:54:07 +0100 |
commit | 41ea71a3475174daba0708dae2b365c2dd6f5d30 (patch) | |
tree | 3774681a882af03c72f3abf03d2a9da39229ab52 /nixos/modules/services/continuous-integration/jenkins | |
parent | 8c0b08d1a43560121eedb19a6c5b157f1faadf96 (diff) | |
download | nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar.gz nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar.bz2 nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar.lz nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar.xz nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.tar.zst nixlib-41ea71a3475174daba0708dae2b365c2dd6f5d30.zip |
jenkins service: add declarative plugin support
Diffstat (limited to 'nixos/modules/services/continuous-integration/jenkins')
-rw-r--r-- | nixos/modules/services/continuous-integration/jenkins/default.nix | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix index 4edbbf59a42c..a480937417da 100644 --- a/nixos/modules/services/continuous-integration/jenkins/default.nix +++ b/nixos/modules/services/continuous-integration/jenkins/default.nix @@ -101,6 +101,22 @@ in { ''; }; + plugins = mkOption { + default = null; + #type = types.nullOr (types.attrsOf types.package); + description = '' + A set of plugins to activate. Note that this will completely + remove and replace any previously installed plugins. If you + have manually-installed plugins that you want to keep while + using this module, set this option to + <literal>null</literal>. You can generate this set with a + tool such as <literal>jenkinsPlugins2nix</literal>. + ''; + example = literalExample '' + import path/to/jenkinsPlugins2nix-generated-plugins.nix { inherit (pkgs) fetchurl stdenv; } + ''; + }; + extraOptions = mkOption { type = types.listOf types.str; default = [ ]; @@ -149,9 +165,24 @@ in { path = cfg.packages; # Force .war (re)extraction, or else we might run stale Jenkins. - preStart = '' - rm -rf ${cfg.home}/war - ''; + + preStart = + let replacePlugins = + if isNull cfg.plugins + then "" + else + let pluginCmds = lib.attrsets.mapAttrsToList + (n: v: "cp ${v} ${cfg.home}/plugins/${n}.hpi") + cfg.plugins; + in '' + rm -r ${cfg.home}/plugins + mkdir -p ${cfg.home}/plugins + ${lib.strings.concatStringsSep "\n" pluginCmds} + ''; + in '' + rm -rf ${cfg.home}/war + ${replacePlugins} + ''; script = '' ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \ |