Vous pouvez exécuter le serveur Jenkins d'une des deux manières suivantes : soit comme une application autonome, soit deployé comme une application web standard sur un conteneur de servlets Java ou un serveur d'application comme Tomcat, JBoss, ou GlassFish. Les deux approches ont leurs avantages et leurs inconvénients, nous allons donc examiner les deux ici.
Jenkins est fourni sous la forme d'un fichier WAR que vous pouvez exécuter directement en utilisant un conteneur de servlet intégré. Jenkins utilise le moteur de servlet léger Winstone pour vous permettre d'exécuter le serveur directement, sans avoir à configurer un serveur web par vous-même. C'est probablement la meilleure façon de commencer, vous permettant d'être opérationnel avec Jenkins en quelques minutes. C'est aussi une option très flexible, offrant quelques fonctionnalités supplémentaires non-accessibles si vous déployez Jenkins sur un serveur d'application classique. En particulier, si vous exécutez Jenkins en tant que serveur autonome, vous serez en mesure d'installer et mettre à jour les plugins à la volée, et de redémarrer Jenkins directement depuis les écrans d'administration.
Pour exécuter Jenkins en utilisant le conteneur de servlet intégré, allez à la ligne de commande et entrez la commande suivante :
C:\Program
Files\Jenkins>
java -jar jenkins.war
[Winstone 2011/07/01 20:54:53] - Beginning extraction from war file
[Winstone 2011/07/01 20:55:07] - No webapp classes folder found -
C:\Users\john\
.jenkins\war\WEB-INF\classes
jenkins home directory: C:\Users\john\.jenkins
...
INFO: Took 35 ms to load
...
[Winstone 2011/07/01 20:55:08] - HTTP Listener started: port=8080
[Winstone 2011/07/01 20:55:08] - Winstone Servlet Engine v0.9.10 running:
controlPort=disabled
[Winstone 2011/07/01 20:55:08] - AJP13 Listener started: port=8009
Dans un environnement Linux, la procéure est similaire. Notez comment mous démarrons le serveur Jenkins à partir du compte utilisateur “jenkins” que nous avons créé plus tôt :
john@lambton:~$ sudo su - jenkins jenkins@lambton:~$ java -jar /usr/local/jeknins/jenkins.war [Winstone 2011/07/16 02:11:24] - Beginning extraction from war file [Winstone 2011/07/16 02:11:27] - No webapp classes folder found - /home/jenkins/ .jenkins/war/WEB-INF/classes jenkins home directory: /home/jenkins/.jenkins ... [Winstone 2011/07/16 02:11:31] - HTTP Listener started: port=8080 [Winstone 2011/07/16 02:11:31] - AJP13 Listener started: port=8009 [Winstone 2011/07/16 02:11:31] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled
Cela démarrera le moteur de servlet intégré dans la fenêtre de la console. L'application Web Jenkins sera maintenant disponible sur le port 8080. Lorsque vous exécutez Jenkins en utilisant le serveur intégré, il n'y a pas de contexte d'application Web, donc vous accèdez à Jenkins directement en utilisant l'URL du serveur (e.g., http://localhost:8080 ).
Pour arrêter Jenkins, pressez simplement Ctrl-C.
Par défaut, Jenkins s'exécutera sur le port 8080. Si cela ne convient pas
à votre environnement, vous pouvez spécifier le port
manuellement, en utilisant l'option
--httpPort
:
$
java -jar jenkins.war --httpPort=8081
Dans une architecture réelle, Jenkins peut ne pas être la seule
application Web à s'exécuter sur votre serveur de build. Selon
la capacité
de
votre serveur, Jenkins peut avoir à cohabiter avec d'autres applications Web ou
des gestionnaires de dépôts Maven, par
exemple. Si vous exécutez Jenkins
aux
côtés d'un autre serveur d'application, tels que Tomcat, Jetty ou GlassFish, vous
aurez aussi besoin de remplacer le port ajp13, en utilisant l'option
--ajp13Port
:
$
java -jar jenkins.war --httpPort=8081
--ajp13Port=8010
Quelques autres options utiles sont :
--prefix
Cet option vous permet de définir un chemin de contexte pour votre serveur Jenkins. Par défaut Jenkins s'exécutera sur le port 8080 sans chemin de contexte ( http://localhost:8080 ). Toutefois, si vous utilisez cette option, vous pouvez forcer Jenkins à utiliser n'importe quel chemin de contexte qui vous plaît, par exemple:
$
java -jar jenkins.war
--prefix=jenkins
Dans ce cas, Jenkins sera accessible depuis http://localhost:8080/jenkins .
Cette option est souvent utilisée lors de l'intégration d'une instance autonome de Jenkins avec Apache.
--daemon
Si vous exécutez Jenkins sur une machine Unix, vous pouvez utiliser cette option pour démarrer Jenkins comme une tâche de fond, s'exécutant comme un démon unix.
--logfile
Par défaut, Jenkins écrit son fichier de journalisation dans le répertoire courant. Cependant, sur un serveur, vous avez souvent besoin d'écrire vos fichier de journalisation dans un répertoire prédéterminé. Vous pouvez utiliser cette option pour rediriger vos messages vers un autre fichier :
$
java -jar jenkins.war
--logfile=/var/log/jenkins.log
Stopping Jenkins using Ctrl-C is a little brutal, of course—in practice, you would set up a script to start and stop your server automatically.
If you are running Jenkins using the embedded Winstone application
server, you can also restart and shutdown Jenkins
elegantly by
calling the
Winstone server directly. To do this, you need to specify the
controlPort
option when you start Jenkins, as shown
here:
$
java -jar jenkins.war
--controlPort=8001
A slightly more complete example in a Unix environment might look like this:
$
nohup java -jar jenkins.war
--controlPort=8001 > /var/log/jenkins.log 2>&1 &
The key here is the
controlPort
option. This
option gives you the means of stopping or restarting Jenkins directly via
the Winstone tools. The only
problem is that you need a matching
version
of the Winstone JAR file. Fortunately, one comes bundled with your
Jenkins
installation, so you don’t have to look far.
To restart the server, you can run the following command:
$java -cp $JENKINS_HOME/war/winstone.jar winstone.tools.WinstoneControl reload: \
--host=localhost --port=8001
And to shut it down completely, you can use the following:
$java -cp $JENKINS_HOME/war/winstone.jar winstone.tools.WinstoneControl shutdown \
--host=localhost --port=8001
Another way to shut down Jenkins cleanly is to invoke the special “/exit” URL, as shown here:
$
wget http://localhost:8080/exit
On a real server, you would typically have set up security, so that only a system administrator could access this URL. In this case, you will need to provide a username and a password:
$
wget --user=admin --password=secret
http://localhost:8080/exit
Note that you can actually do this from a different server, not just the local machine:
$
wget --user=admin --password=secret
http://buildserver.acme.com:8080/exit
Note that while both these methods will shut down Jenkins relatively cleanly (more so than killing the process directly, for example), they will interrupt any builds in progress. So it is recommended practice to prepare the shutdown cleanly by using the Prepare for Shutdown button on the Manage Jenkins screen (see Section 4.2, “Le tableau de bord de configuration — L'écran Administrer Jenkins” ).
Running Jenkins as a stand-alone application may not be to everyone’s taste. For a production server, you might want to take advantage of the more sophisticated monitoring and administration features of a full blown Java application server such as JBoss, GlassFish, or WebSphere Application Server. And system administrators may be wary of the relatively little-known Winstone server, or may simply prefer Jenkins to fit into a known pattern of Java web application development. If this is the case, you may prefer to, or be obliged to, deploy Jenkins as a standard Java web application. We look at this option in the following section.