本文共 7913 字,大约阅读时间需要 26 分钟。
我们都知道在公司里,一个软件的开发到发布,需要经历一系列的流程,而且目前也已经形成了一套标准流程。一个大的功能模块的开发,往往是几个人一起进行的,而每个人写完一些小功能的代码后,一般都需要将代码集成到主干,或者说将代码都合并在一起。这种将代码集成到主干的操作,可能一天需要进行很多次,而且是多人进行。这样的一个环节就是持续集成,在这个开发到发布的流程中最重要的组成部分就是持续集成。
开发到发布的流程大致如下:
其中的几个概念:
示意图:
关于持续集成的详细可参考以下文章:
由于这种频繁地、一天多次的操作,重复性很高,所以我们希望可以自动化的去完成这些重复的环节,提高整个流程的效率。这时我们就需要借助一些工具来完成自动化了,对于小公司来说收费的工具成本太高划不来,所以像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官网地址如下:
jenkins的官方文档地址如下:
安装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 jenkinsjenkins 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=20root 4284 0.0 0.0 112652 964 pts/0 R+ 19:16 0:00 grep --color=auto jenkins[root@server ~]# netstat -lntp |grep 8080tcp6 0 0 :::8080 :::* LISTEN 4231/java [root@server ~]#
接着就可以在windows上的浏览器里,访问你Linux的8080端口,进行 Jenkins 的安装:
按照以上提示,查询默认的密码:
[root@server ~]# cat /var/lib/jenkins/secrets/initialAdminPasswordeeee910298f4422195f8d351704c43fa[root@server ~]#
点击继续后会进行一段时间的初始化,然后就会显示以下界面:
之后就会开始安装插件了:
安装完插件之后,就会进入创建管理员用户的界面:
安装完成:
以上我们已经安装好了jenkins,现在我们先简单了解一下jenkins的一些目录:
1.jenkins的安装目录:
[root@server ~]# ll /var/lib/jenkinstotal 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.statedrwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:16 jobsdrwxr-xr-x 3 jenkins jenkins 18 Feb 9 19:16 logs-rw-r--r-- 1 jenkins jenkins 907 Feb 9 19:16 nodeMonitors.xmldrwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:16 nodesdrwxr-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-secretdrwx------ 4 jenkins jenkins 4096 Feb 9 19:41 secretsdrwxr-xr-x 2 jenkins jenkins 4096 Feb 9 19:29 updatesdrwxr-xr-x 2 jenkins jenkins 23 Feb 9 19:16 userContentdrwxr-xr-x 3 jenkins jenkins 18 Feb 9 19:41 usersdrwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:30 workflow-libs[root@server ~]#
简单介绍几个目录:
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协议的监听ip11.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/jenkinstotal 156-rw-r--r-- 1 jenkins jenkins 158418 Feb 9 19:30 jenkins.log
[root@server ~]#
本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2070594,如需转载请自行联系原作者