[SCM] jenkins packaging branch, master, updated. upstream/1.409.3-7-gfd51978

James Page james.page at canonical.com
Fri Dec 9 13:06:03 UTC 2011


The following commit has been merged in the master branch:
commit 91aa82633c5d7881c9bcc8c1f1f86d4f21fc6a8b
Author: James Page <james.page at canonical.com>
Date:   Fri Dec 9 09:45:18 2011 +0000

    Added tradditional Debian init scripts for jenkins and jenkins-slave  and updated rules to switch in upstart configuration for Ubuntu builds.

diff --git a/debian/changelog b/debian/changelog
index 56915cd..d8478b9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,8 +3,10 @@ jenkins (1.409.3-1) unstable; urgency=low
   * Initial Debian release (Closes: #561963)
   * Disabled build of libjenkins-plugin-parent-java as not currently
     installable due to broken upstream maven-hpi-plugin.
+  * Added tradditional Debian init scripts for jenkins and jenkins-slave 
+    and updated rules to switch in upstart configuration for Ubuntu builds.
 
- -- James Page <james.page at ubuntu.com>  Wed, 07 Dec 2011 09:16:03 +0000
+ -- James Page <james.page at ubuntu.com>  Fri, 09 Dec 2011 09:44:05 +0000
 
 jenkins (1.409.3-0ubuntu1) precise; urgency=low
 
diff --git a/debian/control b/debian/control
index 25b9d62..f633e18 100644
--- a/debian/control
+++ b/debian/control
@@ -172,6 +172,7 @@ Architecture: all
 Depends:
  adduser,
  daemon,
+ psmisc,
  default-jre-headless | java6-runtime-headless,
  jenkins-common,
  ${misc:Depends}
diff --git a/debian/copyright b/debian/copyright
index f9bdc5e..2345443 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -105,6 +105,11 @@ Files: debian/*
 Copyright: 2011 Canonical Ltd (http://www.canonical.com)
 License: MIT
 
+Files: debian/jenkins.init
+       debian/jenkins.default
+Copyright: 2004, Amelia A Lewis <alewis at ibco.com>
+License: MIT
+
 License: Apache-2.0
   On Debian GNU/Linux system you can find the complete text of the
   Apache-2.0 license in '/usr/share/common-licenses/Apache-2.0'
diff --git a/debian/jenkins.default b/debian/jenkins.default
new file mode 100644
index 0000000..77be80c
--- /dev/null
+++ b/debian/jenkins.default
@@ -0,0 +1,58 @@
+# defaults for jenkins continuous integration server
+
+# pulled in from the init script; makes things easier.
+NAME=jenkins
+
+# location of java
+JAVA=/usr/bin/java
+
+# arguments to pass to java
+#JAVA_ARGS="-Xmx256m"
+
+PIDFILE=/var/run/jenkins/jenkins.pid
+
+# user id to be invoked as (otherwise will run as root; not wise!)
+JENKINS_USER=jenkins
+
+# location of jenkins arch indep files
+JENKINS_ROOT=/usr/share/jenkins
+
+# location of the jenkins war file
+JENKINS_WAR=/usr/share/jenkins/jenkins.war
+
+# jenkins home location
+JENKINS_HOME=/var/lib/jenkins
+
+# jenkins /run location
+JENKINS_RUN=/var/run/jenkins
+
+# set this to false if you don't want Hudson to run by itself
+# in this set up, you are expected to provide a servlet container
+# to host jenkins.
+RUN_STANDALONE=true
+
+# log location.  this may be a syslog facility.priority
+JENKINS_LOG=/var/log/jenkins/$NAME.log
+
+# OS LIMITS SETUP
+#   comment this out to observe /etc/security/limits.conf
+#   this is on by default because http://github.com/feniix/hudson/commit/d13c08ea8f5a3fa730ba174305e6429b74853927
+#   reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file
+#   descriptors are forced to 1024 regardless of /etc/security/limits.conf
+MAXOPENFILES=8192
+
+# port for HTTP connector (default 8080; disable with -1)
+HTTP_PORT=8080
+
+# port for AJP connector (disabled by default)
+AJP_PORT=-1
+
+# arguments to pass to jenkins.
+# --javahome=$JAVA_HOME
+# --httpPort=$HTTP_PORT (default 8080; disable with -1)
+# --httpsPort=$HTTP_PORT
+# --ajp13Port=$AJP_PORT
+# --argumentsRealm.passwd.$ADMIN_USER=[password]
+# --argumentsRealm.$ADMIN_USER=admin
+# --webroot=~/.jenkins/war
+JENKINS_ARGS="--webroot=$JENKINS_RUN/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --preferredClassLoader=java.net.URLClassLoader"
diff --git a/debian/jenkins.init b/debian/jenkins.init
new file mode 100644
index 0000000..ad24932
--- /dev/null
+++ b/debian/jenkins.init
@@ -0,0 +1,235 @@
+#!/bin/bash
+# /etc/init.d/jenkins
+# debian-compatible jenkins startup script.
+# Amelia A Lewis <alewis at ibco.com>
+#
+### BEGIN INIT INFO
+# Provides:          jenkins
+# Required-Start:    $remote_fs $syslog $network
+# Required-Stop:     $remote_fs $syslog $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start jenkins at boot time
+# Description:       Controls the jenkins continuous integration engine.
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+DESC="Jenkins Continuous Integration Server"
+NAME=jenkins
+SCRIPTNAME=/etc/init.d/$NAME
+
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+#DAEMON=$JENKINS_SH
+DAEMON=/usr/bin/daemon
+DAEMON_ARGS="--name=$NAME --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG --pidfile=$PIDFILE" 
+
+SU=/bin/su
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Exit if not supposed to run standalone
+[ "$RUN_STANDALONE" = "false" ] && exit 0
+
+# load environments
+if [ -r /etc/default/locale ]; then
+  . /etc/default/locale
+  export LANG LANGUAGE
+elif [ -r /etc/environment ]; then
+  . /etc/environment
+  export LANG LANGUAGE
+fi
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+# Make sure we run as root, since setting the max open files through
+# ulimit requires root access
+if [ `id -u` -ne 0 ]; then
+    echo "The $NAME init script can only be run as root"
+    exit 1
+fi
+
+
+check_tcp_port() {
+    local service=$1
+    local assigned=$2
+    local default=$3
+
+    if [ -n "$assigned" ]; then 
+        port=$assigned
+    else
+        port=$default
+    fi
+    
+    count=`netstat --listen --numeric-ports | grep \:$port[[:space:]] | grep -c . `
+    
+    if [ $count -ne 0 ]; then
+        echo "The selected $service port ($port) seems to be in use by another program "
+        echo "Please select another port to use for $NAME"
+        return 1
+    fi
+}
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+    # the default location is /var/run/jenkins/jenkins.pid but the parent directory needs to be created
+    mkdir `dirname $PIDFILE` > /dev/null 2>&1 || true
+    chown $JENKINS_USER `dirname $PIDFILE`
+    # Return
+    #   0 if daemon has been started
+    #   1 if daemon was already running
+    #   2 if daemon could not be started
+    $DAEMON $DAEMON_ARGS --running && return 1
+
+    # Verify that the jenkins port is not already in use, winstone does not exit
+    # even for BindException
+    check_tcp_port "http" "$HTTP_PORT" "8080" || return 1
+    
+    # If the var MAXOPENFILES is enabled in /etc/default/jenkins then set the max open files to the 
+    # proper value
+    if [ -n "$MAXOPENFILES" ]; then
+        [ "$VERBOSE" != no ] && echo Setting up max open files limit to $MAXOPENFILES
+        ulimit -n $MAXOPENFILES
+    fi
+    
+    # --user in daemon doesn't prepare environment variables like HOME, USER, LOGNAME or USERNAME,
+    # so we let su do so for us now
+    $SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS" || return 2
+}
+
+
+#
+# Verify that all jenkins processes have been shutdown
+# and if not, then do killall for them
+# 
+get_running() 
+{
+    return `ps -U $JENKINS_USER --no-headers -f | egrep -e '(java|daemon)' | grep -c . `
+}
+
+force_stop() 
+{
+    get_running
+    if [ $? -ne 0 ]; then 
+	killall -u $JENKINS_USER java daemon || return 3
+    fi
+}
+
+# Get the status of the daemon process
+get_daemon_status()
+{
+    $DAEMON $DAEMON_ARGS --running || return 1
+}
+
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+    # Return
+    #   0 if daemon has been stopped
+    #   1 if daemon was already stopped
+    #   2 if daemon could not be stopped
+    #   other if a failure occurred
+    get_daemon_status 
+    case "$?" in
+	0) 
+	    $DAEMON $DAEMON_ARGS --stop || return 2
+        # wait for the process to really terminate
+        for n in 1 2 3 4 5; do
+            sleep 1
+            $DAEMON $DAEMON_ARGS --running || break
+        done
+        if get_daemon_status; then
+	        force_stop || return 3
+        fi
+	    ;;
+	*)
+	    force_stop || return 3
+	    ;;
+    esac
+
+    # Many daemons don't delete their pidfiles when they exit.
+    rm -f $PIDFILE
+    return 0
+}
+
+case "$1" in
+  start)
+    log_daemon_msg "Starting $DESC" "$NAME"
+    do_start
+    case "$?" in
+        0|1) log_end_msg 0 ;;
+        2) log_end_msg 1 ;;
+    esac
+    ;;
+  stop)
+    log_daemon_msg "Stopping $DESC" "$NAME"
+    do_stop
+    case "$?" in
+        0|1) log_end_msg 0 ;;
+        2) log_end_msg 1 ;;
+    esac
+    ;;
+  restart|force-reload)
+    #
+    # If the "reload" option is implemented then remove the
+    # 'force-reload' alias
+    #
+    log_daemon_msg "Restarting $DESC" "$NAME"
+    do_stop
+    case "$?" in
+      0|1)
+        do_start
+        case "$?" in
+          0) log_end_msg 0 ;;
+          1) log_end_msg 1 ;; # Old process is still running
+          *) log_end_msg 1 ;; # Failed to start
+        esac
+        ;;
+      *)
+  	# Failed to stop
+	log_end_msg 1
+	;;
+    esac
+    ;;
+  status)
+      get_daemon_status
+      case "$?" in 
+	 0) echo "$DESC is running with the pid `cat $PIDFILE`";;
+         *) 
+	      get_running
+	      procs=$?
+	      if [ $procs -eq 0 ]; then 
+		  echo -n "$DESC is not running"
+		  if [ -f $PIDFILE ]; then 
+		      echo ", but the pidfile ($PIDFILE) still exists"
+		  else 
+		      echo
+		  fi
+
+	      else 
+		  echo "$procs instances of jenkins are running at the moment"
+		  echo "but the pidfile $PIDFILE is missing"
+	      fi
+	      ;;
+      esac
+    ;;
+  *)
+    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+    exit 3
+    ;;
+esac
+
+exit 0
diff --git a/debian/jenkins.upstart b/debian/jenkins.upstart
deleted file mode 100644
index 405e5c7..0000000
--- a/debian/jenkins.upstart
+++ /dev/null
@@ -1,32 +0,0 @@
-description "jenkins: Jenkins Continuous Integration Server"
-author "James Page <james.page at ubuntu.com>"
-
-start on runlevel [2345]
-stop on runlevel [!2345]
-
-env USER="jenkins"
-env GROUP="jenkins"
-env JENKINS_LOG="/var/log/jenkins"
-env JENKINS_ROOT="/usr/share/jenkins"
-env JENKINS_HOME="/var/lib/jenkins"
-env JENKINS_RUN="/var/run/jenkins"
-env HTTP_PORT=8080
-env AJP_PORT=-1
-env JAVA_OPTS=""
-env JAVA_HOME="/usr/lib/jvm/default-java"
-
-limit nofile 8192 8192
-
-pre-start script
-    test -f $JENKINS_ROOT/jenkins.war || { stop ; exit 0; }
-    $JENKINS_ROOT/bin/maintain-plugins.sh 	
-    mkdir $JENKINS_RUN > /dev/null 2>&1  || true
-    chown -R $USER:$GROUP $JENKINS_RUN || true
-end script
-
-script
-    JENKINS_ARGS="--webroot=$JENKINS_RUN/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"
-    exec daemon --name=jenkins --inherit --output=$JENKINS_LOG/jenkins.log --user=$USER \
-        -- $JAVA_HOME/bin/java $JAVA_OPTS -jar $JENKINS_ROOT/jenkins.war $JENKINS_ARGS \
-        --preferredClassLoader=java.net.URLClassLoader
-end script
diff --git a/debian/jenkins.upstart.in b/debian/jenkins.upstart.in
new file mode 100644
index 0000000..060fede
--- /dev/null
+++ b/debian/jenkins.upstart.in
@@ -0,0 +1,23 @@
+description "Jenkins Continuous Integration Server"
+author "James Page <james.page at ubuntu.com>"
+
+start on runlevel [2345]
+stop on runlevel [!2345]
+
+limit nofile 8192 8192
+
+pre-start script
+    [ -r /etc/default/jenkins ] && . /etc/default/jenkins
+    test -f $JENKINS_WAR || { stop ; exit 0; }
+    $JENKINS_ROOT/bin/maintain-plugins.sh 	
+    mkdir $JENKINS_RUN > /dev/null 2>&1  || true
+    chown -R $JENKINS_USER $JENKINS_RUN || true 
+end script
+
+script
+    [ -r /etc/default/jenkins ] && . /etc/default/jenkins
+    exec su -l $JENKINS_USER --shell=/bin/bash -c \
+       "daemon --name=$NAME --inherit --output=$JENKINS_LOG \
+        --env=JENKINS_HOME=$JENKINS_HOME -- \
+        $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS"
+end script
diff --git a/debian/rules b/debian/rules
index 181e985..5d33c60 100755
--- a/debian/rules
+++ b/debian/rules
@@ -28,5 +28,15 @@ binary-post-install/jenkins-external-job-monitor::
 	dh_link -pjenkins-external-job-monitor usr/share/jenkins/external-job-monitor/java/jenkins-core-$(DEB_UPSTREAM_VERSION).jar \
 	    usr/share/jenkins/external-job-monitor/java/jenkins-core.jar
 
+# Switch in upstart configuration if building on Ubuntu
+binary-post-install/jenkins::
+	if dpkg-vendor --derives-from ubuntu ; then \
+        cp debian/jenkins.upstart.in debian/jenkins.upstart ; \
+    fi
+
+# Tidy up any upstart configuration files lying around
+clean::
+	rm -rf debian/*.upstart
+
 get-orig-source:
 	uscan --download-version $(DEB_UPSTREAM_VERSION) --force-download --rename

-- 
jenkins packaging



More information about the pkg-java-commits mailing list