笔记内容:安装jenkins
笔记日期:2018-02-09

  • 26.1 jenkins介绍
  • 26.2 jenkins安装
  • 26.3 了解jenkins

jenkins介绍

我们都知道在公司里,一个软件的开发到发布,需要经历一系列的流程,而且目前也已经形成了一套标准流程。一个大的功能模块的开发,往往是几个人一起进行的,而每个人写完一些小功能的代码后,一般都需要将代码集成到主干,或者说将代码都合并在一起。这种将代码集成到主干的操作,可能一天需要进行很多次,而且是多人进行。这样的一个环节就是持续集成,在这个开发到发布的流程中最重要的组成部分就是持续集成。

开发到发布的流程大致如下:

  • 产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

其中的几个概念:

  • 持续集成 (Continuous integration,简称CI),频繁地(一天多次)将代码集成到主干。
  • 持续交付(Continuous delivery),频繁地(一天多次)将集成的代码交付给测试人员测试。
  • 持续部署(continuous deployment),频繁地(一天多次)将测试好的代码交给运维人员部署。

示意图:
安装jenkins_第1张图片

关于持续集成的详细可参考以下文章:

http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

由于这种频繁地、一天多次的操作,重复性很高,所以我们希望可以自动化的去完成这些重复的环节,提高整个流程的效率。这时我们就需要借助一些工具来完成自动化了,对于小公司来说收费的工具成本太高划不来,所以像Jenkins这样开源的、优秀的工具就流行了起来。

Jenkins是一个用Java编写的开源的持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。在与Oracle发生争执后,项目从Hudson项目复刻。

Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。

可以通过各种手段触发构建。例如提交给版本控制系统时被触发,也可以通过类似Cron的机制调度,也可以在其他的构建已经完成时,还可以通过一个特定的URL进行请求。

Jenkins概要:

  • Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。
  • Jenkins是一个工具集,提供了各种各样的插件
  • 比如获取git上最新的代码
  • 比如可以帮你编译源代码
  • 比如可以调用自定义的shell脚本远程执行命令

jenkins官网地址如下:

https://jenkins.io


jenkins安装

jenkins的官方文档地址如下:

https://jenkins.io/doc/

安装jenkins的最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8

如果只需要java的运行环境的话,用yum安装个openjdk就可以了,安装命令如下:

yum install -y java-1.8.0-openjdk

下载jenkins的yum源:

[root@server ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

安装jenkins.io.key:

[root@server ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

yum安装jenkins:

[root@server ~]# yum install -y jenkins

安装完之后启动jenkins服务:

[root@server ~]# systemctl start jenkins
[root@server ~]# ps aux |grep jenkins
jenkins    4231  181 18.6 4089456 348764 ?      Ssl  19:16   0:25 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root       4284  0.0  0.0 112652   964 pts/0    R+   19:16   0:00 grep --color=auto jenkins
[root@server ~]# netstat -lntp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      4231/java           
[root@server ~]# 

接着就可以在windows上的浏览器里,访问你Linux的8080端口,进行 Jenkins 的安装:
安装jenkins_第2张图片

按照以上提示,查询默认的密码:

[root@server ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
eeee910298f4422195f8d351704c43fa
[root@server ~]# 

点击继续后会进行一段时间的初始化,然后就会显示以下界面:
安装jenkins_第3张图片

之后就会开始安装插件了:
安装jenkins_第4张图片

安装完插件之后,就会进入创建管理员用户的界面:
安装jenkins_第5张图片

安装完成:
安装jenkins_第6张图片
安装jenkins_第7张图片


了解jenkins

以上我们已经安装好了jenkins,现在我们先简单了解一下jenkins的一些目录:

1.jenkins的安装目录:

[root@server ~]# ll /var/lib/jenkins
total 56
-rw-r--r--  1 jenkins jenkins 1823 Feb  9 19:41 config.xml
-rw-r--r--  1 jenkins jenkins  156 Feb  9 19:16 hudson.model.UpdateCenter.xml
-rw-r--r--  1 jenkins jenkins  370 Feb  9 19:30 hudson.plugins.git.GitTool.xml
-rw-------  1 jenkins jenkins 1712 Feb  9 19:16 identity.key.enc
-rw-r--r--  1 jenkins jenkins   94 Feb  9 19:16 jenkins.CLI.xml
-rw-r--r--  1 jenkins jenkins    5 Feb  9 19:41 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r--  1 jenkins jenkins    5 Feb  9 19:41 jenkins.install.UpgradeWizard.state
drwxr-xr-x  2 jenkins jenkins    6 Feb  9 19:16 jobs
drwxr-xr-x  3 jenkins jenkins   18 Feb  9 19:16 logs
-rw-r--r--  1 jenkins jenkins  907 Feb  9 19:16 nodeMonitors.xml
drwxr-xr-x  2 jenkins jenkins    6 Feb  9 19:16 nodes
drwxr-xr-x 74 jenkins jenkins 8192 Feb  9 19:30 plugins
-rw-r--r--  1 jenkins jenkins   64 Feb  9 19:16 secret.key
-rw-r--r--  1 jenkins jenkins    0 Feb  9 19:16 secret.key.not-so-secret
drwx------  4 jenkins jenkins 4096 Feb  9 19:41 secrets
drwxr-xr-x  2 jenkins jenkins 4096 Feb  9 19:29 updates
drwxr-xr-x  2 jenkins jenkins   23 Feb  9 19:16 userContent
drwxr-xr-x  3 jenkins jenkins   18 Feb  9 19:41 users
drwxr-xr-x  2 jenkins jenkins    6 Feb  9 19:30 workflow-libs
[root@server ~]# 

简单介绍几个目录:

  • jobs目录里存储着我们在jenkins上创建的任务
  • logs日志目录
  • nodes在多节点的时候要用到
  • plugins是jenkins插件的存储目录
  • secrets密码密钥相关的目录
  • updates版本更新时要用到的目录
  • users存储用户信息的目录
  • workflow-libs工作库

2.jenkins的配置文件:

[root@server ~]# vim /etc/sysconfig/jenkins
## Path:        Development/Jenkins
## Description: Jenkins Automation Server
## Type:        string
## Default:     "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"

## Type:        string
## Default: "false"
## ServiceRestart: jenkins
#
# Whether to skip potentially long-running chown at the
# $JENKINS_HOME location. Do not enable this, "true", unless
# you know what you're doing. See JENKINS-23273.
#
#JENKINS_INSTALL_SKIP_CHOWN="false"

## Type: string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

## Type:        integer(0:65535)
## Default:     8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8080"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_LISTEN_ADDRESS=""

## Type:        integer(0:65535)
## Default:     ""
## ServiceRestart: jenkins
#
# HTTPS port Jenkins is listening on.
# Default is disabled.
#
JENKINS_HTTPS_PORT=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Path to the keystore in JKS format (as created by the JDK 'keytool').
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE_PASSWORD=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTPS requests.
# Default is disabled.
#
JENKINS_HTTPS_LISTEN_ADDRESS=""

## Type:        integer(1:9)
## Default:     5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"

## Type:        yesno
## Default:     no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"

## Type:        integer
## Default:     100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"

## Type:        integer
## Default:     20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""

简单介绍一下jenkins配置文件中一些参数的含义:

1.JENKINS_HOME  # 定义你的jenkins安装目录的路径
2.JENKINS_JAVA_CMD  # 定义java的可执行程序的路径
3.JENKINS_USER  # 定义启动jenkins服务的用户
4.JENKINS_JAVA_OPTIONS   # java虚拟机的内存设置
5.JENKINS_PORT  # 定义jenkins服务监听的端口(http)
6.JENKINS_LISTEN_ADDRESS    # 定义jenkins服务监听的ip地址
7.JENKINS_HTTPS_PORT    # 定义https协议的监听端口
8.JENKINS_HTTPS_KEYSTORE    # 定义ssl密钥文件的路径
9.JENKINS_HTTPS_KEYSTORE_PASSWORD   # 定义ssl密钥文件的密码
10.JENKINS_HTTPS_LISTEN_ADDRESS     # 定义https协议的监听ip
11.JENKINS_DEBUG_LEVEL  # 定义日志的调试级别——值越高,日志记录越详细
12.JENKINS_ENABLE_ACCESS_LOG    # 定义是否启用访问日志记录
13.JENKINS_HANDLER_MAX  # 定义jenkins服务的最大工作线程数量
14.JENKINS_HANDLER_IDLE     # 定义空闲工作线程的最大数量
15.JENKINS_ARGS     # 定义jenkins的参数选项

3.jenkins的日志文件所在的目录:

[root@server ~]# ll /var/log/jenkins
total 156
-rw-r--r-- 1 jenkins jenkins 158418 Feb  9 19:30 jenkins.log
[root@server ~]#