jenkins ci enhancement: add port and prefix option

As named these options enable to specify a bind host and url prefix
to be used by jenkins. Adding these options in the config rather than
using extra arguments allows us to re-use those information in other
services using jenkins such as jenkins-job-builder or a reverse proxy.
This commit is contained in:
Augustin Borsu 2015-12-23 09:19:18 +01:00 committed by Rok Garbas
parent bf9c16d4ac
commit 44ea184997

View File

@ -48,11 +48,33 @@ in {
'';
};
host = mkOption {
default = "0.0.0.0";
example = "localhost";
type = types.str;
description = ''
Specifies the bind adress on which the jenkins HTTP interface listens.
The default is the wildcard adress.
'';
};
port = mkOption {
default = 8080;
type = types.int;
description = ''
Specifies port number on which the jenkins HTTP interface listens. The default is 8080.
Specifies port number on which the jenkins HTTP interface listens.
The default is 8080.
'';
};
prefix = mkOption {
default = "";
example = "/jenkins";
type = types.str;
description = ''
Specifies a urlPrefix to use with jenkins.
If the example /jenkins is given, the jenkins server will be
accessible using localhost:8080/jenkins.
'';
};
@ -80,7 +102,7 @@ in {
extraOptions = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "--debug=9" "--httpListenAddress=localhost" ];
example = [ "--debug=9" ];
description = ''
Additional command line arguments to pass to Jenkins.
'';
@ -134,15 +156,18 @@ in {
'';
script = ''
${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --httpPort=${toString cfg.port} ${concatStringsSep " " cfg.extraOptions}
${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --httpListenAddress=${cfg.host} \
--httpPort=${toString cfg.port} \
--prefix=${cfg.prefix} \
${concatStringsSep " " cfg.extraOptions}
'';
postStart = ''
until ${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port} ; do
until ${pkgs.curl}/bin/curl -s -L ${cfg.host}:${toString cfg.port}${cfg.prefix} ; do
sleep 10
done
while true ; do
index=`${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port}`
index=`${pkgs.curl}/bin/curl -s -L ${cfg.host}:${toString cfg.port}${cfg.prefix}`
if [[ !("$index" =~ 'Please wait while Jenkins is restarting' ||
"$index" =~ 'Please wait while Jenkins is getting ready to work') ]]; then
exit 0