Git + jenkins 部署CI環(huán)境

Github配置:
settings => Developer settings => Personal access tokens
=> 新增 tokens

圖片.png
圖片.png

配置鉤子:


圖片.png

Jenkins安裝
Jenkins基于Java, 所以需要先安裝java。
jdk官方下載: 地址

圖片.png

圖片.png

選擇符合你自己系統(tǒng)版本JDK,下載安裝,配置,不懂可以百度,很簡單,相信都會.

Linux下安裝java只要配置java環(huán)境變量即可。

  1. 首先,解壓java到相應(yīng)目錄,我一般習慣把安裝的軟件放到目錄/usr/local下。
    tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib

  2. 編輯環(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

查看是否有安裝好的程序進程 ps -aux |grep java

啟動關(guān)閉
sudo service jenkins start/stop/restart

啟動報如下錯誤

Starting Jenkins bash: /usr/bin/java: No such file or directory

修改Jenkins啟動配置文件,指定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)管理->管理插件->高級


圖片.png

把:http://updates.jenkins-ci.org/update-center.json
換成:http://mirror.esuni.jp/jenkins/updates/update-center.json
鏡像地址查詢:
http://mirrors.jenkins-ci.org/status.html

在瀏覽器中訪問
首次進入會要求輸入初始密碼如下圖,
初始密碼在:/var/lib/jenkins/secrets/initialAdminPassword

一、進入Jenkins
在瀏覽器輸入網(wǎng)址:http://localhost:8080/jenkins/,進入Jenkins;

二、新建項目
首頁左側(cè)點擊”新建“,輸入項目名稱和指定構(gòu)建什么類型的項目;
其中,
構(gòu)建一個自由風格的軟件項目:Jenkins主要功能,結(jié)合任何SCM和任何構(gòu)建系統(tǒng)構(gòu)建項目,甚至可以構(gòu)建軟件以外的系統(tǒng)
構(gòu)建一個maven項目:Jenkins利用指定POM.xml文件,大大減輕構(gòu)建配置
構(gòu)建一個多配置項目:如多環(huán)境測試、平臺指定構(gòu)建等
監(jiān)控一個外部的任務(wù):允許記錄執(zhí)行在外部Jenkins的任務(wù),任務(wù)甚至運行在遠程機器上
復(fù)制已存在的job:


這里,選擇構(gòu)建一個自由風格的軟件項目;

三、項目配置
點擊進入新建的項目,進行配置;

0 基本配置

圖片.png

丟棄舊的構(gòu)建:可以只保留幾天內(nèi)的構(gòu)建歷史或只保留幾個構(gòu)建歷史
參數(shù)化構(gòu)建過程:可以配置參數(shù),每次執(zhí)行構(gòu)建時需要給參數(shù)賦值
關(guān)閉構(gòu)建:重新開啟構(gòu)建前不允許進行新的構(gòu)建
在必要時并發(fā)構(gòu)建:
Restrict where this project can be run:當配置slave節(jié)點后,通過該選擇執(zhí)行構(gòu)建的節(jié)點,可以是master主機或slave節(jié)點

源碼管理

圖片.png

構(gòu)建觸發(fā)器 構(gòu)建環(huán)境 Bindings

圖片.png

圖片.png
圖片.png

構(gòu)建

圖片.png

構(gòu)建后操作

圖片.png

系統(tǒng)管理 配置

圖片.png

圖片.png
圖片.png

1 高級配置
安靜期:一個任務(wù)計劃中的構(gòu)建在開始前需要讀取開始前的配置信息;不選中則使用系統(tǒng)默認值
重復(fù)次數(shù):若從版本庫簽除代碼失敗,則Jenkins會按指定次數(shù)重試后再放棄
該項目的上游項目正在構(gòu)建時阻止該項目構(gòu)建:當項目有依賴關(guān)系時,需要勾選
該項目的下游項目正在構(gòu)建時阻止該項目構(gòu)建:
使用自定義的工作空間:每個Jenkins任務(wù)都會有唯一一個工作空間目錄,下載源代碼,構(gòu)建的整個過程都是在這個工作空間中
顯示名稱:僅供Jenkins Web頁面顯示

2 源碼管理
Jenkins支持多種源碼管理服務(wù)器;


這里選擇Git,因為本文主旨就是搭建Jenkins+Github環(huán)境;
其中,
Repository URL是你的Github上代碼更新會觸發(fā)Jenkins的repo的ssh key;
Credentials是權(quán)限認證,需要添加,即輸入訪問該repo的用戶名和密碼;

源碼庫瀏覽器是該repo的URL,是可選的;


3 構(gòu)建觸發(fā)器
根據(jù)項目需要,選擇觸發(fā)Jenkins的方式;
其中,
Trigger builds remotely (觸發(fā)遠程構(gòu)建,如使用遠程腳本觸發(fā)自動構(gòu)建):可通過電子郵件觸發(fā)項目構(gòu)建,或通過腳本提交一個構(gòu)建請求
Build after other projects are built (在其他項目構(gòu)建完成后執(zhí)行該構(gòu)建):可設(shè)置多個依賴的jobs,當任意一個依賴的job成功構(gòu)建后啟動此構(gòu)建,多個依賴的jobs之間用","隔開
Build periodically (定期構(gòu)建):不管源碼是否有更新,周期構(gòu)建,在”日程表“中定義觸發(fā)時間
Build when a change is pushed to Github (當源碼更新推送到Github后執(zhí)行該構(gòu)建):
Poll SCM (定期檢查源碼是否更新):定時檢查源碼更新,有更新則執(zhí)行構(gòu)建,沒有更新就不執(zhí)行;在”日程表“中定義觸發(fā)時間
其中,日程表用空格或Tab鍵分隔5個字段,分別代表"MINUTE(分鐘,0~59)", "HOUR(小時,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ù)需要進行選擇;
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:在控制臺添加時間戳
Use secret text(s) or file(s):使用密文


這里,選擇添加時間戳;

5 構(gòu)建
Execute Windows batch command:執(zhí)行Windows命令行,默認當前路徑是當前job的workspace
Execute shell:運行shell、Python、perl、ruby等腳本
Invoke Ant:調(diào)用Ant構(gòu)建

Ant Version:指定使用的Ant版本,下拉列表中顯示系統(tǒng)配置中配置的所有Ant版本,不要選擇Defualt

Targets:指定需要執(zhí)行的Target,不填寫時默認執(zhí)行build腳本中的Default target

Build File:指定需要執(zhí)行的build腳本文件,可使用絕對路徑或相對路徑,默認相對路徑根目錄是當前任務(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í)行一個python程序;

6 構(gòu)建后操作
Aggregate downstream test result:整合Downstream測試
Archive the artifacts:將生成的文件存檔,如.zip/.jar文件,以備以后下載用
Build other projects:最常用操作,在一個構(gòu)建任務(wù)完成后,可觸發(fā)另一個構(gòu)建任務(wù),如部署任務(wù)完成后可觸發(fā)下游任務(wù)自動化測試;根據(jù)不同場景選擇不同的觸發(fā)方式
Publish JUnit test result report:將JUnit Test報告打印到展示平臺
Publish Javadoc:打印Javadoc
Record fingerprints of files to track usage:Jenkins記錄一個文件的指紋,用來追蹤該jar包是什么時間打的
Deploy war/ear to a Container:將包部署到一個容器上,目前支持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ù)失敗時是否仍然部署

Email Notification:郵件通知
Editable Email Notification:

四、執(zhí)行構(gòu)建
1 手動執(zhí)行
點擊"立即構(gòu)建(build now)";

執(zhí)行結(jié)果:


2 自動執(zhí)行
在Github指定repo上有源碼更新,必須從本地push到遠程主機;
更新到遠程主機之后2分鐘,Jenkins檢測有更新,則自動觸發(fā)構(gòu)建執(zhí)行;
執(zhí)行結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容