Skip to content

Instantly share code, notes, and snippets.

@bols-blue
Created November 23, 2011 09:45
Show Gist options
  • Save bols-blue/1388297 to your computer and use it in GitHub Desktop.
Save bols-blue/1388297 to your computer and use it in GitHub Desktop.

Revisions

  1. bols-blue revised this gist Nov 30, 2011. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions logrotate.d.jenkins-slave
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    /var/log/jenkins/jenkins-slave.log {
    create
    weekly
    create 0664 root root
    rotate 4
    compress
    }
  2. bols-blue revised this gist Nov 23, 2011. 1 changed file with 7 additions and 2 deletions.
    9 changes: 7 additions & 2 deletions jenkins-slave
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,11 @@
    # defaults for jenkins continuous integration server

    JENKINS_ARGS="-jnlpUrl http://test.lnc.jp:8080/computer/wock/slave-agent.jnlp"
    # jenkins home location
    JENKINS_HOME=/opt/jenkins-slave
    # location of the jenkins war file
    JENKINS_WAR=$JENKINS_HOME/slave.jar

    # pulled in from the init script; makes things easier.
    NAME=jenkins

    @@ -49,5 +55,4 @@ AJP_PORT=-1
    # --ajp13Port=$AJP_PORT
    # --argumentsRealm.passwd.$ADMIN_USER=[password]
    # --argumentsRealm.$ADMIN_USER=admin
    # --webroot=~/.jenkins/war
    JENKINS_ARGS="-jnlpUrl http://test.lnc.jp:8080/computer/kamikaze/slave-agent.jnlp"
    # --webroot=~/.jenkins/war
  3. bols-blue revised this gist Nov 23, 2011. 1 changed file with 9 additions and 0 deletions.
    9 changes: 9 additions & 0 deletions setup.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    sudo mv jenkins-slave /etc/default/
    sudo mv jenkins-slave.init /etc/init.d/jenkins-slave
    ls -la /etc/init.d/jenkins-slave
    chmod 770 /etc/init.d/jenkins-slave
    chown root:root /etc/init.d/jenkins-slave
    sudo chown root:root /etc/init.d/jenkins-slave
    mkdir /opt/jenkins-slave/
    cd /opt/jenkins-slave/
    wget http://test.lnc.jp:8080/jnlpJars/slave.jar
  4. bols-blue revised this gist Nov 23, 2011. 1 changed file with 231 additions and 0 deletions.
    231 changes: 231 additions & 0 deletions jenkins-slave.init
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,231 @@
    #!/bin/bash
    # /etc/init.d/jenkins
    # debian-compatible jenkins startup script.
    # Amelia A Lewis <[email protected]>
    #
    ### 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-slave
    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

    # 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
  5. bols-blue created this gist Nov 23, 2011.
    53 changes: 53 additions & 0 deletions jenkins-slave
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    # 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"
    #JAVA_ARGS="-Djava.net.preferIPv4Stack=true" # make jenkins listen on IPv4 address

    PIDFILE=/var/run/jenkins/jenkins-slave.pid

    # user id to be invoked as (otherwise will run as root; not wise!)
    JENKINS_USER=jenkins

    # jenkins home location
    JENKINS_HOME=/opt/jenkins-slave
    # location of the jenkins war file
    JENKINS_WAR=$JENKINS_HOME/slave.jar

    # 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
    #HUDSON_LOG=daemon.info

    # OS LIMITS SETUP
    # comment this out to observe /etc/security/limits.conf
    # this is on by default because http://github.com/jenkinsci/jenkins/commit/2fb288474e980d0e7ff9c4a3b768874835a3e92e
    # 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=8088

    # 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="-jnlpUrl http://test.lnc.jp:8080/computer/kamikaze/slave-agent.jnlp"