Install Jenkins

2021-08-12 09:36:25 浏览数 (1)

前言

Jenkins 是一套自动化软件,结合不同的插件可以轻易实现 CI/CD 工作流

Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.

Jenkinsk8s 还有 Gitlab 常常放在一起构建持续集成系统

下面分享一下 Jenkins 的基础安装操作

参考 Installing Jenkins on Red Hat distributions

Tip: 当前版本 Jenkins 2.89.2 LTS


操作

系统环境

代码语言:javascript复制
[root@much ~]# hostnamectl
   Static hostname: much
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 33dc28f7e76c4903ad9b603b77e29a7c
           Boot ID: f91fb2eedcd345cf9cd7e6d80aab5115
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-514.21.1.el7.x86_64
      Architecture: x86-64
[root@much ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:d1:5d:f7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 83782sec preferred_lft 83782sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:47:20:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.208/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:16:5e:11 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:16:5e:11 brd ff:ff:ff:ff:ff:ff
[root@much ~]#

依赖

以下版本的 OpenJDK 是 Jenkins 的运行环境

You will need to explicitly install a Java runtime environment, because Oracle’s Java RPMs are incorrect and fail to register as providing a java dependency. Thus, adding an explicit dependency requirement on Java would force installation of the OpenJDK JVM.

  • 2.54 (2017-04) and newer: Java 8
  • 1.612 (2015-05) and newer: Java 7
代码语言:javascript复制
[root@much ~]# java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-b16)
OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)
[root@much ~]#
[root@much ~]# rpm -qa | grep -i jdk
java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.1.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64
java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64
java-1.8.0-openjdk-devel-1.8.0.141-1.b16.el7_3.x86_64
copy-jdk-configs-1.2-1.el7.noarch
[root@much ~]# yum list all | grep -i openjdk
java-1.7.0-openjdk.x86_64               1:1.7.0.141-2.6.10.1.el7_3     @updates
java-1.7.0-openjdk-headless.x86_64      1:1.7.0.141-2.6.10.1.el7_3     @updates
java-1.8.0-openjdk.x86_64               1:1.8.0.141-1.b16.el7_3        @updates
java-1.8.0-openjdk-devel.x86_64         1:1.8.0.141-1.b16.el7_3        @updates
java-1.8.0-openjdk-headless.x86_64      1:1.8.0.141-1.b16.el7_3        @updates
java-1.6.0-openjdk.x86_64               1:1.6.0.41-1.13.13.1.el7_3     base     
java-1.6.0-openjdk-demo.x86_64          1:1.6.0.41-1.13.13.1.el7_3     base     
java-1.6.0-openjdk-devel.x86_64         1:1.6.0.41-1.13.13.1.el7_3     base     
java-1.6.0-openjdk-javadoc.x86_64       1:1.6.0.41-1.13.13.1.el7_3     base     
java-1.6.0-openjdk-src.x86_64           1:1.6.0.41-1.13.13.1.el7_3     base     
java-1.7.0-openjdk.x86_64               1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-accessibility.x86_64 1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-demo.x86_64          1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-devel.x86_64         1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-headless.x86_64      1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-javadoc.noarch       1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.7.0-openjdk-src.x86_64           1:1.7.0.161-2.6.12.0.el7_4     updates  
java-1.8.0-openjdk.i686                 1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk.x86_64               1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-accessibility.i686   1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-accessibility-debug.i686
java-1.8.0-openjdk-accessibility-debug.x86_64
java-1.8.0-openjdk-debug.i686           1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-debug.x86_64         1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-demo.i686            1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-demo.x86_64          1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-demo-debug.i686      1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-demo-debug.x86_64    1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-devel.i686           1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-devel.x86_64         1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-devel-debug.i686     1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-devel-debug.x86_64   1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-headless.i686        1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-headless.x86_64      1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-headless-debug.i686  1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-headless-debug.x86_64
java-1.8.0-openjdk-javadoc.noarch       1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-javadoc-debug.noarch 1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-javadoc-zip.noarch   1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-javadoc-zip-debug.noarch
java-1.8.0-openjdk-src.i686             1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-src.x86_64           1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-src-debug.i686       1:1.8.0.151-5.b12.el7_4        updates  
java-1.8.0-openjdk-src-debug.x86_64     1:1.8.0.151-5.b12.el7_4        updates  
[root@much ~]# yum install java-1.8.0-openjdk.x86_64
Loaded plugins: fastestmirror, langpacks
base                                                     | 3.6 kB     00:00     
c7-media                                                 | 3.6 kB     00:00     
epel/x86_64/metalink                                     | 7.4 kB     00:00     
epel                                                     | 4.7 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
(1/4): extras/7/x86_64/primary_db                          | 145 kB   00:01     
(2/4): updates/7/x86_64/primary_db                         | 5.2 MB   00:25     
(3/4): epel/x86_64/updateinfo                              | 869 kB   00:39     
(4/4): epel/x86_64/primary_db                              | 6.2 MB   00:44     
Loading mirror speeds from cached hostfile
 * base: mirror.pregi.net
 * c7-media:
 * epel: mirror1.ku.ac.th
 * extras: mirror.pregi.net
 * updates: mirror.pregi.net
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.141-1.b16.el7_3 will be updated
--> Processing Dependency: java-1.8.0-openjdk = 1:1.8.0.141-1.b16.el7_3 for package: 1:java-1.8.0-openjdk-devel-1.8.0.141-1.b16.el7_3.x86_64
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.151-5.b12.el7_4 will be an update
--> Processing Dependency: java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.151-5.b12.el7_4 for package: 1:java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.141-1.b16.el7_3 will be updated
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.151-5.b12.el7_4 will be an update
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.141-1.b16.el7_3 will be updated
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.151-5.b12.el7_4 will be an update
--> Processing Dependency: nss-softokn(x86-64) >= 3.28.3 for package: 1:java-1.8.0-openjdk-headless-1.8.0.151-5.b12.el7_4.x86_64
--> Processing Dependency: copy-jdk-configs >= 2.2 for package: 1:java-1.8.0-openjdk-headless-1.8.0.151-5.b12.el7_4.x86_64
--> Running transaction check
---> Package copy-jdk-configs.noarch 0:1.2-1.el7 will be updated
---> Package copy-jdk-configs.noarch 0:2.2-5.el7_4 will be an update
---> Package nss-softokn.x86_64 0:3.16.2.3-14.4.el7 will be updated
---> Package nss-softokn.x86_64 0:3.28.3-8.el7_4 will be an update
--> Processing Dependency: nss-softokn-freebl(x86-64) >= 3.28.3-8.el7_4 for package: nss-softokn-3.28.3-8.el7_4.x86_64
--> Running transaction check
---> Package nss-softokn-freebl.x86_64 0:3.16.2.3-14.4.el7 will be updated
---> Package nss-softokn-freebl.x86_64 0:3.28.3-8.el7_4 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                      Arch    Version                    Repository
                                                                           Size
================================================================================
Updating:
 java-1.8.0-openjdk           x86_64  1:1.8.0.151-5.b12.el7_4    updates  241 k
Updating for dependencies:
 copy-jdk-configs             noarch  2.2-5.el7_4                updates   19 k
 java-1.8.0-openjdk-devel     x86_64  1:1.8.0.151-5.b12.el7_4    updates  9.8 M
 java-1.8.0-openjdk-headless  x86_64  1:1.8.0.151-5.b12.el7_4    updates   32 M
 nss-softokn                  x86_64  3.28.3-8.el7_4             updates  310 k
 nss-softokn-freebl           x86_64  3.28.3-8.el7_4             updates  214 k

Transaction Summary
================================================================================
Upgrade  1 Package ( 5 Dependent packages)

Total download size: 42 M
Is this ok [y/d/N]: y
Downloading packages:
updates/7/x86_64/prestodelta                               | 646 kB   00:03     
Delta RPMs reduced 11 M of updates to 946 k (91% saved)
(1/6): copy-jdk-configs-2.2-5.el7_4.noarch.rpm             |  19 kB   00:00     
(2/6): java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3_1.8.0.151- |  69 kB   00:01     
(3/6): nss-softokn-3.16.2.3-14.4.el7_3.28.3-8.el7_4.x86_64 | 174 kB   00:01     
(4/6): nss-softokn-freebl-3.16.2.3-14.4.el7_3.28.3-8.el7_4 |  95 kB   00:01     
(5/6): java-1.8.0-openjdk-devel-1.8.0.141-1.b16.el7_3_1.8. | 608 kB   00:04     
(6/6): java-1.8.0-openjdk-headless-1.8.0.151-5.b12.el7_4.x |  32 MB   01:36     
--------------------------------------------------------------------------------
Total                                              342 kB/s |  33 MB  01:37     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : nss-softokn-freebl-3.28.3-8.el7_4.x86_64                    1/12
  Updating   : nss-softokn-3.28.3-8.el7_4.x86_64                           2/12
  Updating   : copy-jdk-configs-2.2-5.el7_4.noarch                         3/12
  Updating   : 1:java-1.8.0-openjdk-headless-1.8.0.151-5.b12.el7_4.x86_    4/12
warning: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/java.security created as /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/java.security.rpmnew
warning: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/nss.cfg created as /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/nss.cfg.rpmnew
restored /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/java.security.rpmnew to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/java.security
restored /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/nss.cfg.rpmnew to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/lib/security/nss.cfg
  Updating   : 1:java-1.8.0-openjdk-devel-1.8.0.151-5.b12.el7_4.x86_64     5/12
  Updating   : 1:java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64           6/12
  Cleanup    : 1:java-1.8.0-openjdk-devel-1.8.0.141-1.b16.el7_3.x86_64     7/12
  Cleanup    : 1:java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64           8/12
  Cleanup    : 1:java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_    9/12
  Cleanup    : nss-softokn-3.16.2.3-14.4.el7.x86_64                       10/12
  Cleanup    : copy-jdk-configs-1.2-1.el7.noarch                          11/12
  Cleanup    : nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64                12/12
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64           1/12
  Verifying  : 1:java-1.8.0-openjdk-devel-1.8.0.151-5.b12.el7_4.x86_64     2/12
  Verifying  : nss-softokn-3.28.3-8.el7_4.x86_64                           3/12
  Verifying  : copy-jdk-configs-2.2-5.el7_4.noarch                         4/12
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.151-5.b12.el7_4.x86_    5/12
  Verifying  : nss-softokn-freebl-3.28.3-8.el7_4.x86_64                    6/12
  Verifying  : 1:java-1.8.0-openjdk-devel-1.8.0.141-1.b16.el7_3.x86_64     7/12
  Verifying  : nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64                 8/12
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64           9/12
  Verifying  : nss-softokn-3.16.2.3-14.4.el7.x86_64                       10/12
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_   11/12
  Verifying  : copy-jdk-configs-1.2-1.el7.noarch                          12/12

Updated:
  java-1.8.0-openjdk.x86_64 1:1.8.0.151-5.b12.el7_4                             

Dependency Updated:
  copy-jdk-configs.noarch 0:2.2-5.el7_4                                         
  java-1.8.0-openjdk-devel.x86_64 1:1.8.0.151-5.b12.el7_4                       
  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.151-5.b12.el7_4                    
  nss-softokn.x86_64 0:3.28.3-8.el7_4                                           
  nss-softokn-freebl.x86_64 0:3.28.3-8.el7_4                                    

Complete!
[root@much ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
[root@much ~]#

安装库文件

代码语言:javascript复制
[root@much ~]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2018-01-11 23:44:53--  https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 52.202.51.185
Connecting to pkg.jenkins.io (pkg.jenkins.io)|52.202.51.185|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 85
Saving to: ‘/etc/yum.repos.d/jenkins.repo’

100%[======================================>] 85          --.-K/s   in 0s      

2018-01-11 23:44:55 (3.30 MB/s) - ‘/etc/yum.repos.d/jenkins.repo’ saved [85/85]

[root@much ~]# ll /etc/yum.repos.d/jenkins.repo
-rw-r--r-- 1 root root 85 11月 30 2016 /etc/yum.repos.d/jenkins.repo
[root@much ~]# cat /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
[root@much ~]# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@much ~]#

下载与安装软件包

代码语言:javascript复制
[root@much ~]# yum install jenkins
Loaded plugins: fastestmirror, langpacks
jenkins                                                  | 2.9 kB     00:00     
jenkins/primary_db                                         |  22 kB   00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.pregi.net
 * c7-media:
 * epel: ftp.jaist.ac.jp
 * extras: mirror.pregi.net
 * updates: mirror.pregi.net
Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:2.89.2-1.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch            Version                Repository        Size
================================================================================
Installing:
 jenkins          noarch          2.89.2-1.1             jenkins           71 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 71 M
Installed size: 71 M
Is this ok [y/d/N]: y
Downloading packages:
jenkins-2.89.2-1.1.noarch.rpm                              |  71 MB   03:45     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : jenkins-2.89.2-1.1.noarch                                    1/1
  Verifying  : jenkins-2.89.2-1.1.noarch                                    1/1

Installed:
  jenkins.noarch 0:2.89.2-1.1                                                   

Complete!
[root@much ~]#

服务的启停

代码语言:javascript复制
[root@much ~]# service jenkins status
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@much ~]# service jenkins start
Starting jenkins (via systemctl):                          [  OK  ]
[root@much ~]# service jenkins status
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since Thu 2018-01-11 23:57:39 CST; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2981 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/jenkins.service
           └─2998 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -D...

Jan 11 23:57:39 much systemd[1]: Starting LSB: Jenkins Automation Server...
Jan 11 23:57:39 much runuser[2982]: pam_unix(runuser:session): session open...0)
Jan 11 23:57:39 much jenkins[2981]: Starting Jenkins [  OK  ]
Jan 11 23:57:39 much systemd[1]: Started LSB: Jenkins Automation Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@much ~]# service jenkins stop
Stopping jenkins (via systemctl):                          [  OK  ]
[root@much ~]# service jenkins status
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: inactive (dead) since Thu 2018-01-11 23:57:49 CST; 2s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3086 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
  Process: 2981 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)

Jan 11 23:57:39 much systemd[1]: Starting LSB: Jenkins Automation Server...
Jan 11 23:57:39 much runuser[2982]: pam_unix(runuser:session): session open...0)
Jan 11 23:57:39 much jenkins[2981]: Starting Jenkins [  OK  ]
Jan 11 23:57:39 much systemd[1]: Started LSB: Jenkins Automation Server.
Jan 11 23:57:48 much systemd[1]: Stopping LSB: Jenkins Automation Server...
Jan 11 23:57:49 much jenkins[3086]: Shutting down Jenkins [  OK  ]
Jan 11 23:57:49 much systemd[1]: Stopped LSB: Jenkins Automation Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@much ~]#

Jenkins 的安装地址

附加信息

  • Jenkins 会作为一个守护进程在后台启动. /etc/init.d/jenkins 里有详细信息.
代码语言:javascript复制
[root@much ~]# cat /etc/init.d/jenkins
#!/bin/sh
#
#     SUSE system statup script for Jenkins
#     Copyright (C) 2007  Pascal Bleser
#
#     This library is free software; you can redistribute it and/or modify it
#     under the terms of the GNU Lesser General Public License as published by
#     the Free Software Foundation; either version 2.1 of the License, or (at
#     your option) any later version.
#
#     This library is distributed in the hope that it will be useful, but
#     WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#     Lesser General Public License for more details.
#
#     You should have received a copy of the GNU Lesser General Public
#     License along with this library; if not, write to the Free Software
#     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
#     USA.
#
### BEGIN INIT INFO
# Provides:          jenkins
# Required-Start:    $local_fs $remote_fs $network $time $named
# Should-Start: $time sendmail
# Required-Stop:     $local_fs $remote_fs $network $time $named
# Should-Stop: $time sendmail
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Jenkins Automation Server
# Description:       Jenkins Automation Server
### END INIT INFO

# Check for missing binaries (stale symlinks should not happen)
JENKINS_WAR="/usr/lib/jenkins/jenkins.war"
test -r "$JENKINS_WAR" || { echo "$JENKINS_WAR not installed";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }

# Check for existence of needed config file and read it
JENKINS_CONFIG=/etc/sysconfig/jenkins
test -e "$JENKINS_CONFIG" || { echo "$JENKINS_CONFIG not existing";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }
test -r "$JENKINS_CONFIG" || { echo "$JENKINS_CONFIG not readable. Perhaps you forgot 'sudo'?";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }

JENKINS_PID_FILE="/var/run/jenkins.pid"

# Source function library.
. /etc/init.d/functions

# Read config
[ -f "$JENKINS_CONFIG" ] && . "$JENKINS_CONFIG"

# Set up environment accordingly to the configuration settings
[ -n "$JENKINS_HOME" ] || { echo "JENKINS_HOME not configured in $JENKINS_CONFIG";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }
[ -d "$JENKINS_HOME" ] || { echo "JENKINS_HOME directory does not exist: $JENKINS_HOME";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 1; fi; }

# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins.
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"
for candidate in $candidates
do
  [ -x "$JENKINS_JAVA_CMD" ] && break
  JENKINS_JAVA_CMD="$candidate"
done

JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"
[ -n "$JENKINS_PORT" ] && PARAMS="$PARAMS --httpPort=$JENKINS_PORT"
[ -n "$JENKINS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpListenAddress=$JENKINS_LISTEN_ADDRESS"
[ -n "$JENKINS_HTTPS_PORT" ] && PARAMS="$PARAMS --httpsPort=$JENKINS_HTTPS_PORT"
[ -n "$JENKINS_HTTPS_KEYSTORE" ] && PARAMS="$PARAMS --httpsKeyStore=$JENKINS_HTTPS_KEYSTORE"
[ -n "$JENKINS_HTTPS_KEYSTORE_PASSWORD" ] && PARAMS="$PARAMS --httpsKeyStorePassword='$JENKINS_HTTPS_KEYSTORE_PASSWORD'"
[ -n "$JENKINS_HTTPS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpsListenAddress=$JENKINS_HTTPS_LISTEN_ADDRESS"
[ -n "$JENKINS_DEBUG_LEVEL" ] && PARAMS="$PARAMS --debug=$JENKINS_DEBUG_LEVEL"
[ -n "$JENKINS_HANDLER_STARTUP" ] && PARAMS="$PARAMS --handlerCountStartup=$JENKINS_HANDLER_STARTUP"
[ -n "$JENKINS_HANDLER_MAX" ] && PARAMS="$PARAMS --handlerCountMax=$JENKINS_HANDLER_MAX"
[ -n "$JENKINS_HANDLER_IDLE" ] && PARAMS="$PARAMS --handlerCountMaxIdle=$JENKINS_HANDLER_IDLE"
[ -n "$JENKINS_ARGS" ] && PARAMS="$PARAMS $JENKINS_ARGS"

if [ "$JENKINS_ENABLE_ACCESS_LOG" = "yes" ]; then
    PARAMS="$PARAMS --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log"
fi

RETVAL=0

case "$1" in
    start)
	echo -n "Starting Jenkins "
	daemon --user "$JENKINS_USER" --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null
	RETVAL=$?
	if [ $RETVAL = 0 ]; then
	    success
	    echo > "$JENKINS_PID_FILE"  # just in case we fail to find it
            MY_SESSION_ID=`/bin/ps h -o sess -p $$`
            # get PID
            /bin/ps hww -u "$JENKINS_USER" -o sess,ppid,pid,cmd | 
            while read sess ppid pid cmd; do
		[ "$ppid" = 1 ] || continue
		# this test doesn't work because Jenkins sets a new Session ID
                # [ "$sess" = "$MY_SESSION_ID" ] || continue
	       	echo "$cmd" | grep $JENKINS_WAR > /dev/null
		[ $? = 0 ] || continue
		# found a PID
		echo $pid > "$JENKINS_PID_FILE"
	    done
	else
	    failure
	fi
	echo
	;;
    stop)
	echo -n "Shutting down Jenkins "
	killproc jenkins
	RETVAL=$?
	echo
	;;
    try-restart|condrestart)
	if test "$1" = "condrestart"; then
		echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
	fi
	$0 status
	if test $? = 0; then
		$0 restart
	else
		: # Not running is not a failure.
	fi
	;;
    restart)
	$0 stop
	$0 start
	;;
    force-reload)
	echo -n "Reload service Jenkins "
	$0 try-restart
	;;
    reload)
    	$0 restart
	;;
    status)
    	status jenkins
	RETVAL=$?
	;;
    probe)
	## Optional: Probe for the necessity of a reload, print out the
	## argument to this init script which is required for a reload.
	## Note: probe is not (yet) part of LSB (as of 1.9)

	test "$JENKINS_CONFIG" -nt "$JENKINS_PID_FILE" && echo reload
	;;
    *)
	echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
	exit 1
	;;
esac
exit $RETVAL
[root@much ~]#
  • 服务是以 jenkins 的用户身份运行的 . 如果要在配置文件中改成另一个用户身份 , 必须同时改变以下几个文件的所有者 /var/log/jenkins, /var/lib/jenkins, and /var/cache/jenkins.
代码语言:javascript复制
[root@much ~]# tail -n5 /etc/passwd

0 人点赞