Jenkins 教程
Jenkins是一个强大的应用程序,允许持续集成和持续交付的项目,无论你正在工作的平台。它是一个可以处理任何类型的构建或持续集成的自由源。您可以将Jenkins与许多测试和部署技术集成。在本教程中,我们将解释如何使用Jenkins来连续构建和测试软件项目。
本教程将帮助所有那些希望学习如何连续构建和测试项目的软件测试人员,以帮助开发人员尽快将更改集成到项目中并获得新的构建。
Jenkins是一个流行的工具,用于执行软件项目的持续集成。这是一个初步的教程,涵盖了Jenkins的最基本的概念。任何对软件开发生命周期有良好理解的软件专业人员都应从本教程中受益。
Jenkins - 概述
为什么是Jenkins?
Jenkins是一个允许持续集成的软件。 Jenkins将安装在将进行中央构建的服务器上。以下流程图演示了Jenkins如何工作的非常简单的工作流程。
与Jenkins一起,有时,人们也可能看到Hudson的协会。 Hudson是一个非常受欢迎的开源的基于Java的持续集成工具,由Sun Microsystems开发,后来被Oracle收购。在Oracle收购Sun之后,从Hudson源代码创建了一个fork,它引入了Jenkins的引入。
什么是持续集成?
持续集成是一种开发实践,需要开发人员定期将代码集成到共享存储库中。这个概念意在消除在构建生命周期中发现问题的问题。持续集成需要开发人员频繁构建。通常的做法是,每当代码提交发生时,应该触发构建。
系统要求
JDK | JDK1.5以上(示例JDK1.7) |
---|---|
内存 | 建议2GB以上 |
硬盘 | 无最低要求、请注意,由于所有构建都将存储在Jenkins机器上,因此必须确保有足够的磁盘空间用于构建存储。 |
操作系统版本 | Jenkins可以安装在Windows,Ubuntu / Debian,Red Hat / Fedora / CentOS,Mac OS X,openSUSE,FReeBSD,OpenBSD,Gentoo上。 |
Java 容器 | WAR文件可以在支持Servlet 2.4 / JSP 2.0或更高版本的任何容器中运行(示例是Tomcat 7)。 |
Jenkins 安装
下载Jenkins
- Jenkins下载地址:https://jenkins.io/index.html
默认情况下,最新版本和长期支持版本可供下载。过去的版本也可以下载。单击下载部分的长期支持版本选项。
- 用于Jenkins的RedHat Linux RPM软件包
使用Jenkins官网提供的源下载Jenkins,服务器上面执行下面命令:
- 1
- 2
- 1
- 2
如果你以前从Jenkins导入密钥,’rpm –import’将失败,因为你已经有一个密钥。请忽略它,继续下去。使用yum安装Jenkins
- 1
- 1
- 安装稳定版本
Redhat提供安装Jenkins长期稳定版本的源,参考下面命令安装:
- 1
- 2
- 3
- 1
- 2
- 3
安装Java
Jenkins需要Java才能运行,但是某些发行版默认不包括这个。要安装Open Java Development Kit(OpenJDK),请运行以下命令,卸载Java(或如果您没有安装Java开始)。您需要安装与Sun兼容的Java版本。最简单的方法是使用OpenJDK,可以通过EPEL存储库(或者直接从Oracle安装官方RPM)。要安装OpenJDK,请运行以下命令:
- 1
- 1
根据您的CentOS版本,OpenJDK的程序包名称可能不同。使用yum search openjdk来检查包的名称。如果通过yum找不到OpenJDK,您可能需要安装EPEL yum存储库。安装后,您应该能够获得以下java -version的输出
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
启动 Jenkins
执行Jenkins的最简单的方法是通过内置的Jetty servlet容器。你可以这样执行Jenkins
- 1
- 1
在Linux上,使用nohup将Jenkins的输出发送到日志文件,并后台运行Jenkins
- 1
- 2
- 1
- 2
访问Jenkins
访问Jenkins只需要在客户端浏览器输入:http://ip、域名:8080/,即可
默认初始访问Jenkin需要管理员密码,可以通过页面提示操作查看管理密码,查看Jenkins启动日志
- 1
- 1
输入密码,进入Jenkins 设置界面
等待Jenkins自动安装相关插件
命令行参数
Jenkins通常使用端口8080启动。但是,如果您启动其他Web服务,您可能会发现此端口已经占用。您可以使用
--httpPort = $ HTTP_PORT
指定不同的端口,其中$ HTTP_PORT是Jenkins要运行的端口。其他命令行参数包括:
命令行参数 | 参数说明 |
---|---|
--httpPort=$HTTP_PORT | 使用标准http协议在端口$ HTTP_PORT上运行Jenkins侦听器。默认值为端口8080.要禁用(因为您使用的是https),请使用端口-1 |
--httpListenAddress=$HTTP_HOST | 将Jenkins绑定到由$ HTTP_HOST表示的IP地址。默认值为0.0.0.0 - 即侦听所有可用的接口。例如,要仅侦听来自localhost的请求,可以使用–httpListenAddress = 127.0.0.1 |
--httpsPort=$HTTP_PORT | 在端口$ HTTP_PORT上使用HTTPS协议 |
--httpsListenAddress=$HTTPS_HOST | 绑定Jenkins在$ HTTPS_HOST表示的IP地址上侦听HTTPS请求。 |
--prefix=$PREFIX | 运行Jenkins以在URL的末尾包含$ PREFIX。例如,要使Jenkins可以在http // myServer 8080 / jenkins上访问,请设置–prefix = / jenkins |
--ajp13Port=$AJP_PORT | 使用标准AJP13协议在端口$ AJP_PORT上运行Jenkins侦听器。默认值为端口8009.要禁用(因为您使用的是https),请使用端口-1。 |
--ajp13ListenAddress=$AJP_HOST | 将Jenkins绑定到由$ AJP_HOST表示的IP地址。默认值为0.0.0.0 - 即侦听所有可用的接口。 |
--argumentsRealm.passwd.$ADMIN_USER | 设置用户$ ADMIN_USER 的密码。如果Jenkins安全性已打开,则必须以$ ADMIN_USER 身份登录才能配置Jenkins或Jenkins项目。注意还必须指定此用户具有管理员角色。 (见下面的参数)。 |
--argumentsRealm.roles.$ADMIN_USER=admin | 将$ ADMIN_USER 设置为管理用户,如果Jenkins的安全性已打开,可以配置Jenkins。有关详细信息,请参阅Jenkins安全。 |
-Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n | 设置调试开关,您可以访问$ DEBUG_PORT上的调试。 |
logfile=$LOG_PATH/winstone_ date +”%Y%m-%d_%H-%M”.log | 定义日志格式 |
-XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M | 参考Oracle Jave设置 |
Jenkins将所有(或只是引导参数,直到第一个Jenkins特定的参数?)命令行参数传递给Winstone servlet容器,因此您可以通过查看Winstone命令行参数参考:
http://winstone.sourceforge.net/#commandLine
- 注意命令行参数
Jenkins忽略了它不能理解的命令行参数,而不是产生错误。使用命令行参数时请小心,并确保您具有正确的拼写。例如,定义Jenkins管理用户所需的参数是–argumentsRealm而不是–argumentRealm。
Jenkins 启动脚本
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 使用HTTPS与现有证书
如果您使用内置的Winstone服务器设置Jenkins,并想要使用HTTPS的现有证书:
- 1
- 1
密钥库应该是JKS格式(由JDK的keytool创建),密钥库和目标密钥必须具有相同的密码。 (将密钥库参数放在Jenkins特定的参数后似乎不起作用;它们不会转发到Winstone或Winstone忽略它们在未知参数之后),因此,确保它们与工作的–httpsPort参数相邻。
如果您的密钥库中包含多个证书(例如 您正在使用CA签名的证书)Jenkins可能最终使用的是不正确的一个。 在这种情况下,你可以将密钥存储转换为PEM并使用下面的命令行选项
- 1
- 1
Jenkins 参考链接
Jenkins 使用:https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins
Jenkins 官网文档:https://jenkins.io/doc/