Github配置:
settings => Developer settings => Personal access tokens
=> 新增 tokens
配置鉤子:
Jenkins安裝
Jenkins基于Java漾月, 所以需要先安裝java。
jdk官方下載: 地址
選擇符合你自己系統(tǒng)版本JDK,下載安裝,配置,不懂可以百度,很簡單,相信都會(huì).
Linux下安裝java只要配置java環(huán)境變量即可睛廊。
首先,解壓java到相應(yīng)目錄,我一般習(xí)慣把安裝的軟件放到目錄/usr/local下。
tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib編輯環(huán)境變量,在/etc/profile文件中添加環(huán)境變量魂奥,Linux的所有用戶都可以使用菠剩。
vim /etc/profile
在文件最后添加內(nèi)容如下(shift + g):
export JAVA_HOME=/usr/lib/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jart
安裝Jenkins
CentOS 安裝:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
ubuntu簡單來說需要下面四步:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
查看是否有安裝好的程序進(jìn)程 ps -aux |grep java
啟動(dòng)關(guān)閉
sudo service jenkins start/stop/restart
啟動(dòng)報(bào)如下錯(cuò)誤
Starting Jenkins bash: /usr/bin/java: No such file or directory
修改Jenkins啟動(dòng)配置文件易猫,指定java安裝路徑。
vim /etc/init.d/jenkins
在candidates中第一行添加java路徑具壮,如下:
candidates="
/opt/soft/jdk1.8.0_60/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/bin/java
"
修改防火墻允許8080端口訪問
firewall的修改方法:
添加
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效准颓,沒有此參數(shù)重啟后失效)
重新載入
firewall-cmd --reload
iptables的修改方法:
vim /etc/sysconfig/iptables
加入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
重啟防火墻生效
sudo service iptables restart
第一種:更換源的問題
jenkins->系統(tǒng)管理->管理插件->高級
把:http://updates.jenkins-ci.org/update-center.json
換成:http://mirror.esuni.jp/jenkins/updates/update-center.json
鏡像地址查詢:
http://mirrors.jenkins-ci.org/status.html
在瀏覽器中訪問
首次進(jìn)入會(huì)要求輸入初始密碼如下圖,
初始密碼在:/var/lib/jenkins/secrets/initialAdminPassword
一棺妓、進(jìn)入Jenkins
在瀏覽器輸入網(wǎng)址:http://localhost:8080/jenkins/攘已,進(jìn)入Jenkins;
二怜跑、新建項(xiàng)目
首頁左側(cè)點(diǎn)擊”新建“样勃,輸入項(xiàng)目名稱和指定構(gòu)建什么類型的項(xiàng)目;
其中性芬,
構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目:Jenkins主要功能峡眶,結(jié)合任何SCM和任何構(gòu)建系統(tǒng)構(gòu)建項(xiàng)目,甚至可以構(gòu)建軟件以外的系統(tǒng)
構(gòu)建一個(gè)maven項(xiàng)目:Jenkins利用指定POM.xml文件雹嗦,大大減輕構(gòu)建配置
構(gòu)建一個(gè)多配置項(xiàng)目:如多環(huán)境測試狠持、平臺指定構(gòu)建等
監(jiān)控一個(gè)外部的任務(wù):允許記錄執(zhí)行在外部Jenkins的任務(wù)弧满,任務(wù)甚至運(yùn)行在遠(yuǎn)程機(jī)器上
復(fù)制已存在的job:
這里,選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目狮暑;
三、項(xiàng)目配置
點(diǎn)擊進(jìn)入新建的項(xiàng)目辉饱,進(jìn)行配置搬男;
0 基本配置
丟棄舊的構(gòu)建:可以只保留幾天內(nèi)的構(gòu)建歷史或只保留幾個(gè)構(gòu)建歷史
參數(shù)化構(gòu)建過程:可以配置參數(shù),每次執(zhí)行構(gòu)建時(shí)需要給參數(shù)賦值
關(guān)閉構(gòu)建:重新開啟構(gòu)建前不允許進(jìn)行新的構(gòu)建
在必要時(shí)并發(fā)構(gòu)建:
Restrict where this project can be run:當(dāng)配置slave節(jié)點(diǎn)后彭沼,通過該選擇執(zhí)行構(gòu)建的節(jié)點(diǎn)缔逛,可以是master主機(jī)或slave節(jié)點(diǎn)
源碼管理
構(gòu)建觸發(fā)器 構(gòu)建環(huán)境 Bindings
構(gòu)建
構(gòu)建后操作
系統(tǒng)管理 配置
1 高級配置
安靜期:一個(gè)任務(wù)計(jì)劃中的構(gòu)建在開始前需要讀取開始前的配置信息;不選中則使用系統(tǒng)默認(rèn)值
重復(fù)次數(shù):若從版本庫簽除代碼失敗,則Jenkins會(huì)按指定次數(shù)重試后再放棄
該項(xiàng)目的上游項(xiàng)目正在構(gòu)建時(shí)阻止該項(xiàng)目構(gòu)建:當(dāng)項(xiàng)目有依賴關(guān)系時(shí)译株,需要勾選
該項(xiàng)目的下游項(xiàng)目正在構(gòu)建時(shí)阻止該項(xiàng)目構(gòu)建:
使用自定義的工作空間:每個(gè)Jenkins任務(wù)都會(huì)有唯一一個(gè)工作空間目錄瓜喇,下載源代碼,構(gòu)建的整個(gè)過程都是在這個(gè)工作空間中
顯示名稱:僅供Jenkins Web頁面顯示
2 源碼管理
Jenkins支持多種源碼管理服務(wù)器歉糜;
這里選擇Git乘寒,因?yàn)楸疚闹髦季褪谴罱↗enkins+Github環(huán)境;
其中匪补,
Repository URL是你的Github上代碼更新會(huì)觸發(fā)Jenkins的repo的ssh key伞辛;
Credentials是權(quán)限認(rèn)證,需要添加夯缺,即輸入訪問該repo的用戶名和密碼蚤氏;
源碼庫瀏覽器是該repo的URL,是可選的踊兜;
3 構(gòu)建觸發(fā)器
根據(jù)項(xiàng)目需要竿滨,選擇觸發(fā)Jenkins的方式;
其中捏境,
Trigger builds remotely (觸發(fā)遠(yuǎn)程構(gòu)建于游,如使用遠(yuǎn)程腳本觸發(fā)自動(dòng)構(gòu)建):可通過電子郵件觸發(fā)項(xiàng)目構(gòu)建,或通過腳本提交一個(gè)構(gòu)建請求
Build after other projects are built (在其他項(xiàng)目構(gòu)建完成后執(zhí)行該構(gòu)建):可設(shè)置多個(gè)依賴的jobs垫言,當(dāng)任意一個(gè)依賴的job成功構(gòu)建后啟動(dòng)此構(gòu)建贰剥,多個(gè)依賴的jobs之間用","隔開
Build periodically (定期構(gòu)建):不管源碼是否有更新,周期構(gòu)建筷频,在”日程表“中定義觸發(fā)時(shí)間
Build when a change is pushed to Github (當(dāng)源碼更新推送到Github后執(zhí)行該構(gòu)建):
Poll SCM (定期檢查源碼是否更新):定時(shí)檢查源碼更新蚌成,有更新則執(zhí)行構(gòu)建,沒有更新就不執(zhí)行凛捏;在”日程表“中定義觸發(fā)時(shí)間
其中担忧,日程表用空格或Tab鍵分隔5個(gè)字段,分別代表"MINUTE(分鐘葵袭,0~59)", "HOUR(小時(shí)涵妥,0~23)", "DOM(日,1~31)", "MONTH(月坡锡,1~12)", "DOW(星期蓬网,0~7)";
這里鹉勒,選擇Poll SCM帆锋,參數(shù)值為"H/2 * * * *",即設(shè)置每2分鐘檢查Github的指定repo有無源碼更新禽额;
(PS:對于Build when a change is pushed to Github锯厢,目前還沒成功過)皮官;
4 構(gòu)建環(huán)境
根據(jù)需要進(jìn)行選擇;
Delete workspace before build starts:構(gòu)建執(zhí)行前刪除工作區(qū)
Abort the build if it's stuck:如果構(gòu)建卡住实辑,中止該構(gòu)建
Add timestamps to the Console Output:在控制臺添加時(shí)間戳
Use secret text(s) or file(s):使用密文
這里捺氢,選擇添加時(shí)間戳;
5 構(gòu)建
Execute Windows batch command:執(zhí)行Windows命令行剪撬,默認(rèn)當(dāng)前路徑是當(dāng)前job的workspace
Execute shell:運(yùn)行shell摄乒、Python、perl残黑、ruby等腳本
Invoke Ant:調(diào)用Ant構(gòu)建
Ant Version:指定使用的Ant版本馍佑,下拉列表中顯示系統(tǒng)配置中配置的所有Ant版本,不要選擇Defualt
Targets:指定需要執(zhí)行的Target梨水,不填寫時(shí)默認(rèn)執(zhí)行build腳本中的Default target
Build File:指定需要執(zhí)行的build腳本文件拭荤,可使用絕對路徑或相對路徑,默認(rèn)相對路徑根目錄是當(dāng)前任務(wù)的workspace
Properties:指定Ant變量
Java Options:若需要添加用戶自定義的ANT_OPTS疫诽,在這里添加舅世,如-Xmx512m
Invoke top-level Maven targets:調(diào)用Maven構(gòu)建
Maven Version:指定所使用的Maven版本
Goals:執(zhí)行的Maven命令行,不需要加mvn
POM:指定pom.xml文件
這里踊沸,構(gòu)建執(zhí)行一個(gè)python程序歇终;
6 構(gòu)建后操作
Aggregate downstream test result:整合Downstream測試
Archive the artifacts:將生成的文件存檔社证,如.zip/.jar文件逼龟,以備以后下載用
Build other projects:最常用操作,在一個(gè)構(gòu)建任務(wù)完成后追葡,可觸發(fā)另一個(gè)構(gòu)建任務(wù)腺律,如部署任務(wù)完成后可觸發(fā)下游任務(wù)自動(dòng)化測試;根據(jù)不同場景選擇不同的觸發(fā)方式
Publish JUnit test result report:將JUnit Test報(bào)告打印到展示平臺
Publish Javadoc:打印Javadoc
Record fingerprints of files to track usage:Jenkins記錄一個(gè)文件的指紋宜肉,用來追蹤該jar包是什么時(shí)間打的
Deploy war/ear to a Container:將包部署到一個(gè)容器上匀钧,目前支持Tomcat、JBoss谬返、Glassfish
WAR/EAR files:需要部署的war/ear包的文件之斯,需要指定目錄
Context path:
Container:選擇容器,包括容器的對應(yīng)版本
Manage user name:管理員的用戶名
MAnager password:管理員的密碼
Tomcat URL:Tomcat URL地址
Deploy on failure:配置任務(wù)失敗時(shí)是否仍然部署
Email Notification:郵件通知
Editable Email Notification:
四遣铝、執(zhí)行構(gòu)建
1 手動(dòng)執(zhí)行
點(diǎn)擊"立即構(gòu)建(build now)"佑刷;
執(zhí)行結(jié)果:
2 自動(dòng)執(zhí)行
在Github指定repo上有源碼更新,必須從本地push到遠(yuǎn)程主機(jī)酿炸;
更新到遠(yuǎn)程主機(jī)之后2分鐘瘫絮,Jenkins檢測有更新,則自動(dòng)觸發(fā)構(gòu)建執(zhí)行填硕;
執(zhí)行結(jié)果: