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,服務器上面執行下面命令:
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導入密鑰,’rpm –import’將失敗,因為你已經有一個密鑰。請忽略它,繼續下去。使用yum安裝Jenkins
yum install jenkins -y11安裝穩定版本
Redhat提供安裝Jenkins長期穩定版本的源,參考下面命令安裝:
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才能運行,但是某些發行版默認不包括這個。要安裝Open Java Development Kit(OpenJDK),請運行以下命令,卸載Java(或如果您沒有安裝Java開始)。您需要安裝與Sun兼容的Java版本。最簡單的方法是使用OpenJDK,可以通過EPEL存儲庫(或者直接從Oracle安裝官方RPM)。要安裝OpenJDK,請運行以下命令:
yum install java-1.7.0-openjdk11根據您的CentOS版本,OpenJDK的程序包名稱可能不同。使用yum search openjdk來檢查包的名稱。如果通過yum找不到OpenJDK,您可能需要安裝EPEL yum存儲庫。安裝后,您應該能夠獲得以下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啟動 Jenkins
執行Jenkins的最簡單的方法是通過內置的Jetty servlet容器。你可以這樣執行Jenkins
$ java -jar jenkins.war11在Linux上,使用nohup將Jenkins的輸出發送到日志文件,并后臺運行Jenkins
$ mkdir /var/log/jenkins$ nohup java -jar jenkins.war >/var/log/jenkins/jenkins.log 2>&1 &1212訪問Jenkins
訪問Jenkins只需要在客戶端瀏覽器輸入:http://ip、域名:8080/,即可
默認初始訪問Jenkin需要管理員密碼,可以通過頁面提示操作查看管理密碼,查看Jenkins啟動日志
cat /root/.jenkins/secrets/initialAdminPassWord11輸入密碼,進入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 啟動腳本
#!/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與現有證書如果您使用內置的Winstone服務器設置Jenkins,并想要使用HTTPS的現有證書:
--httpPort=-1 --httpsPort=443 --httpsKeyStore=path/to/keystore --httpsKeyStorePassword=keystorePassword11密鑰庫應該是JKS格式(由JDK的keytool創建),密鑰庫和目標密鑰必須具有相同的密碼。 (將密鑰庫參數放在Jenkins特定的參數后似乎不起作用;它們不會轉發到Winstone或Winstone忽略它們在未知參數之后),因此,確保它們與工作的–httpsPort參數相鄰。
如果您的密鑰庫中包含多個證書(例如 您正在使用CA簽名的證書)Jenkins可能最終使用的是不正確的一個。 在這種情況下,你可以將密鑰存儲轉換為PEM并使用下面的命令行選項
--httpPort=-1 --httpsPort=443 --httpsCertificate=path/to/cert --httpsPrivateKey=path/to/privatekey11Jenkins 參考鏈接
Jenkins 使用:https://wiki.jenkins-ci.org/display/JENKINS/Use+Jenkins Jenkins 官網文檔:https://jenkins.io/doc/
新聞熱點
疑難解答