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,下載安裝,配置,不懂可以百度,很簡單,相信都會(huì).

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

  1. 首先,解壓java到相應(yīng)目錄,我一般習(xí)慣把安裝的軟件放到目錄/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

查看是否有安裝好的程序進(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)管理->管理插件->高級


圖片.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

在瀏覽器中訪問
首次進(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 基本配置

圖片.png

丟棄舊的構(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)

源碼管理

圖片.png

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

圖片.png

圖片.png
圖片.png

構(gòu)建

圖片.png

構(gòu)建后操作

圖片.png

系統(tǒng)管理 配置

圖片.png

圖片.png
圖片.png

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é)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末麦萤,一起剝皮案震驚了整個(gè)濱河市鹿鳖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壮莹,老刑警劉巖翅帜,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異命满,居然都是意外死亡藕甩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門周荐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狭莱,“玉大人,你說我怎么就攤上這事概作∫该睿” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵讯榕,是天一觀的道長骤素。 經(jīng)常有香客問我,道長愚屁,這世上最難降的妖魔是什么济竹? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮霎槐,結(jié)果婚禮上送浊,老公的妹妹穿的比我還像新娘。我一直安慰自己丘跌,他們只是感情好袭景,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闭树,像睡著了一般耸棒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上报辱,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天与殃,我揣著相機(jī)與錄音,去河邊找鬼碍现。 笑死幅疼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸵赫。 我是一名探鬼主播衣屏,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辩棒!你這毒婦竟也來了狼忱?” 一聲冷哼從身側(cè)響起膨疏,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钻弄,沒想到半個(gè)月后佃却,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窘俺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年饲帅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘤泪。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灶泵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出对途,到底是詐尸還是另有隱情赦邻,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布实檀,位于F島的核電站惶洲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏膳犹。R本人自食惡果不足惜恬吕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望须床。 院中可真熱鬧铐料,春花似錦、人聲如沸侨颈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哈垢。三九已至,卻和暖如春扛拨,著一層夾襖步出監(jiān)牢的瞬間耘分,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工绑警, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留求泰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓计盒,卻偏偏與公主長得像渴频,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子北启,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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