Jenkins是一個(gè)強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付的項(xiàng)目,無論你正在工作的平臺(tái)。它是一個(gè)可以處理任何類型的構(gòu)建或持續(xù)集成的自由源。您可以將Jenkins與許多測試和部署技術(shù)集成。在本教程中,我們將解釋如何使用Jenkins來連續(xù)構(gòu)建和測試軟件項(xiàng)目。
本教程將幫助所有那些希望學(xué)習(xí)如何連續(xù)構(gòu)建和測試項(xiàng)目的軟件測試人員,以幫助開發(fā)人員盡快將更改集成到項(xiàng)目中并獲得新的構(gòu)建。
Jenkins是一個(gè)流行的工具,用于執(zhí)行軟件項(xiàng)目的持續(xù)集成。這是一個(gè)初步的教程,涵蓋了Jenkins的最基本的概念。任何對(duì)軟件開發(fā)生命周期有良好理解的軟件專業(yè)人員都應(yīng)從本教程中受益。
Jenkins - 概述
為什么是Jenkins?
Jenkins是一個(gè)允許持續(xù)集成的軟件。 Jenkins將安裝在將進(jìn)行中央構(gòu)建的服務(wù)器上。以下流程圖演示了Jenkins如何工作的非常簡單的工作流程。
與Jenkins一起,有時(shí),人們也可能看到Hudson的協(xié)會(huì)。 Hudson是一個(gè)非常受歡迎的開源的基于java的持續(xù)集成工具,由Sun Microsystems開發(fā),后來被Oracle收購。在Oracle收購Sun之后,從Hudson源代碼創(chuàng)建了一個(gè)fork,它引入了Jenkins的引入。
什么是持續(xù)集成?
持續(xù)集成是一種開發(fā)實(shí)踐,需要開發(fā)人員定期將代碼集成到共享存儲(chǔ)庫中。這個(gè)概念意在消除在構(gòu)建生命周期中發(fā)現(xiàn)問題的問題。持續(xù)集成需要開發(fā)人員頻繁構(gòu)建。通常的做法是,每當(dāng)代碼提交發(fā)生時(shí),應(yīng)該觸發(fā)構(gòu)建。
系統(tǒng)要求
JDK JDK1.5以上(示例JDK1.7) 內(nèi)存 建議2GB以上 硬盤 無最低要求、請(qǐng)注意,由于所有構(gòu)建都將存儲(chǔ)在Jenkins機(jī)器上,因此必須確保有足夠的磁盤空間用于構(gòu)建存儲(chǔ)。 操作系統(tǒng)版本 Jenkins可以安裝在Windows,Ubuntu / Debian,Red Hat / Fedora / CentOS,Mac OS X,openSUSE,F(xiàn)ReeBSD,OpenBSD,Gentoo上。 Java 容器 WAR文件可以在支持Servlet 2.4 / jsp 2.0或更高版本的任何容器中運(yùn)行(示例是Tomcat 7)。 Jenkins 安裝
下載Jenkins
Jenkins下載地址:https://jenkins.io/index.html
默認(rèn)情況下,最新版本和長期支持版本可供下載。過去的版本也可以下載。單擊下載部分的長期支持版本選項(xiàng)。
用于Jenkins的RedHat linux RPM軟件包使用Jenkins官網(wǎng)提供的源下載Jenkins,服務(wù)器上面執(zhí)行下面命令:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key1212如果你以前從Jenkins導(dǎo)入密鑰,’rpm –import’將失敗,因?yàn)槟阋呀?jīng)有一個(gè)密鑰。請(qǐng)忽略它,繼續(xù)下去。使用yum安裝Jenkins
yum install jenkins -y11安裝穩(wěn)定版本
Redhat提供安裝Jenkins長期穩(wěn)定版本的源,參考下面命令安裝:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.reposudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keysudo yum install jenkins123123安裝Java
Jenkins需要Java才能運(yùn)行,但是某些發(fā)行版默認(rèn)不包括這個(gè)。要安裝Open Java Development Kit(OpenJDK),請(qǐng)運(yùn)行以下命令,卸載Java(或如果您沒有安裝Java開始)。您需要安裝與Sun兼容的Java版本。最簡單的方法是使用OpenJDK,可以通過EPEL存儲(chǔ)庫(或者直接從Oracle安裝官方RPM)。要安裝OpenJDK,請(qǐng)運(yùn)行以下命令:
yum install java-1.7.0-openjdk11根據(jù)您的CentOS版本,OpenJDK的程序包名稱可能不同。使用yum search openjdk來檢查包的名稱。如果通過yum找不到OpenJDK,您可能需要安裝EPEL yum存儲(chǔ)庫。安裝后,您應(yīng)該能夠獲得以下java -version的輸出
[root@jenkins ~]# java -versionjava version "1.7.0_121"OpenJDK Runtime Environment (rhel-2.6.8.1.el6_8-x86_64 u121-b00)OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)12341234啟動(dòng) Jenkins
執(zhí)行Jenkins的最簡單的方法是通過內(nèi)置的Jetty servlet容器。你可以這樣執(zhí)行Jenkins
$ java -jar jenkins.war11在Linux上,使用nohup將Jenkins的輸出發(fā)送到日志文件,并后臺(tái)運(yùn)行Jenkins
$ mkdir /var/log/jenkins$ nohup java -jar jenkins.war >/var/log/jenkins/jenkins.log 2>&1 &1212訪問Jenkins
訪問Jenkins只需要在客戶端瀏覽器輸入:http://ip、域名:8080/,即可
默認(rèn)初始訪問Jenkin需要管理員密碼,可以通過頁面提示操作查看管理密碼,查看Jenkins啟動(dòng)日志
cat /root/.jenkins/secrets/initialAdminPassWord11輸入密碼,進(jìn)入Jenkins 設(shè)置界面
等待Jenkins自動(dòng)安裝相關(guān)插件
命令行參數(shù)
Jenkins通常使用端口8080啟動(dòng)。但是,如果您啟動(dòng)其他Web服務(wù),您可能會(huì)發(fā)現(xiàn)此端口已經(jīng)占用。您可以使用
--httpPort = $ HTTP_PORT
指定不同的端口,其中$ HTTP_PORT是Jenkins要運(yùn)行的端口。其他命令行參數(shù)包括:
命令行參數(shù) 參數(shù)說明 --httpPort=$HTTP_PORT
使用標(biāo)準(zhǔn)http協(xié)議在端口$ HTTP_PORT上運(yùn)行Jenkins偵聽器。默認(rèn)值為端口8080.要禁用(因?yàn)槟褂玫氖莌ttps),請(qǐng)使用端口-1 --httpListenAddress=$HTTP_HOST
將Jenkins綁定到由$ HTTP_HOST表示的IP地址。默認(rèn)值為0.0.0.0 - 即偵聽所有可用的接口。例如,要僅偵聽來自localhost的請(qǐng)求,可以使用–httpListenAddress = 127.0.0.1 --httpsPort=$HTTP_PORT
在端口$ HTTP_PORT上使用HTTPS協(xié)議 --httpsListenAddress=$HTTPS_HOST
綁定Jenkins在$ HTTPS_HOST表示的IP地址上偵聽HTTPS請(qǐng)求。 --PRefix=$PREFIX
運(yùn)行Jenkins以在URL的末尾包含$ PREFIX。例如,要使Jenkins可以在http // myServer 8080 / jenkins上訪問,請(qǐng)?jiān)O(shè)置–prefix = / jenkins --ajp13Port=$AJP_PORT
使用標(biāo)準(zhǔn)AJP13協(xié)議在端口$ AJP_PORT上運(yùn)行Jenkins偵聽器。默認(rèn)值為端口8009.要禁用(因?yàn)槟褂玫氖莌ttps),請(qǐng)使用端口-1。 --ajp13ListenAddress=$AJP_HOST
將Jenkins綁定到由$ AJP_HOST表示的IP地址。默認(rèn)值為0.0.0.0 - 即偵聽所有可用的接口。 --argumentsRealm.passwd.$ADMIN_USER
設(shè)置用戶 $ ADMIN_USER
的密碼。如果Jenkins安全性已打開,則必須以$ ADMIN_USER
身份登錄才能配置Jenkins或Jenkins項(xiàng)目。注意還必須指定此用戶具有管理員角色。 (見下面的參數(shù))。--argumentsRealm.roles.$ADMIN_USER=admin
將 $ ADMIN_USER
設(shè)置為管理用戶,如果Jenkins的安全性已打開,可以配置Jenkins。有關(guān)詳細(xì)信息,請(qǐng)參閱Jenkins安全。-Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n
設(shè)置調(diào)試開關(guān),您可以訪問$ DEBUG_PORT上的調(diào)試。 logfile=$LOG_PATH/winstone_
date +”%Y%m-%d_%H-%M”.log
定義日志格式 -XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M
參考Oracle Jave設(shè)置 Jenkins將所有(或只是引導(dǎo)參數(shù),直到第一個(gè)Jenkins特定的參數(shù)?)命令行參數(shù)傳遞給Winstone servlet容器,因此您可以通過查看Winstone命令行參數(shù)參考: http://winstone.sourceforge.net/#commandLine
注意命令行參數(shù)Jenkins忽略了它不能理解的命令行參數(shù),而不是產(chǎn)生錯(cuò)誤。使用命令行參數(shù)時(shí)請(qǐng)小心,并確保您具有正確的拼寫。例如,定義Jenkins管理用戶所需的參數(shù)是–argumentsRealm而不是–argumentRealm。
Jenkins 啟動(dòng)腳本
#!/bin/shDESC="Jenkins CI Server"NAME=jenkinsPIDFILE=/var/run/$NAME.pidRUN_AS=jenkinsCOMMAND="/usr/bin/java -- -jar /home/jenkins/jenkins.war"d_start() { start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND}d_stop() { start-stop-daemon --stop --quiet --pidfile $PIDFILE if [ -e $PIDFILE ] then rm $PIDFILE fi}case $1 in start) echo -n "Starting $DESC: $NAME" d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "usage: $NAME {start|stop|restart}" exit 1 ;;esacexit 012345678910111213141516171819202122232425262728293031323334353637383940414243441234567891011121314151617181920212223242526272829303132333435363738394041424344使用HTTPS與現(xiàn)有證書如果您使用內(nèi)置的Winstone服務(wù)器設(shè)置Jenkins,并想要使用HTTPS的現(xiàn)有證書:
--httpPort=-1 --httpsPort=443 --httpsKeyStore=path/to/keystore --httpsKeyStorePassword=keystorePassword11密鑰庫應(yīng)該是JKS格式(由JDK的keytool創(chuàng)建),密鑰庫和目標(biāo)密鑰必須具有相同的密碼。 (將密鑰庫參數(shù)放在Jenkins特定的參數(shù)后似乎不起作用;它們不會(huì)轉(zhuǎn)發(fā)到Winstone或Winstone忽略它們?cè)谖粗獏?shù)之后),因此,確保它們與工作的–httpsPort參數(shù)相鄰。
如果您的密鑰庫中包含多個(gè)證書(例如 您正在使用CA簽名的證書)Jenkins可能最終使用的是不正確的一個(gè)。 在這種情況下,你可以將密鑰存儲(chǔ)轉(zhuǎn)換為PEM并使用下面的命令行選項(xiàng)
--httpPort=-1 --httpsPort=443 --httpsCertificate=path/to/cert --httpsPrivateKey=path/to/privatekey11Jenkins 參考鏈接
Jenkins 使用:https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins Jenkins 官網(wǎng)文檔:https://jenkins.io/doc/
新聞熱點(diǎn)
疑難解答
圖片精選