Jenkins 部署
Jenkins 是持續(xù)集成服務(wù)器,可以幫你自動化運行測試用例版姑。 這有助于確保所有測試保持通過能扒,應(yīng)用程序總是準(zhǔn)備就緒的。
環(huán)境: Ubuntu 16.04
參考鏈接
安裝搭建
-
安裝java(如果沒有)
sudo apt-get update sudo apt-get install openjdk-8-jre-headless
-
添加源并安裝Jenkins(更多安裝方式見官網(wǎng))
wget -q -O - http://pkg.jenkins-ci.org/debian-stable/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
-
一些命令和配置所在位置
# 啟動服務(wù)(使用apt安裝的齿坷,不需要輸入此命令) sudo systemctl start jenkins # 查看狀態(tài) sudo systemctl status jenkins # 日志文件 tail -f /var/log/jenkins/jenkins.log # 配置文件 vi /etc/default/jenkins
-
初始化Jenkins
- 使用瀏覽器訪問:http://your_domain_or_IP:8080
-
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
獲取密鑰桂肌,填寫到網(wǎng)頁中 - (此處進(jìn)行較長時間的等待...原因不詳)
- 點擊
Install suggested plugins
,等待讀條 - 填寫用戶永淌,然后保存
部署項目
- 創(chuàng)建一個新任務(wù)
- 填寫項目名崎场,選擇“構(gòu)建一個自由風(fēng)格的軟件項目”
- 需要注意的有:
- 源碼管理:選擇git,填寫倉庫URL遂蛀,本地庫的格式 =>
/path/projectName/.git
谭跨,可選分支,默認(rèn)master - 構(gòu)建觸發(fā)器:主要的有3種答恶,“觸發(fā)遠(yuǎn)程構(gòu)建”中可以指定TOKEN并構(gòu)造URL來觸發(fā)構(gòu)建饺蚊,可以用于git的鉤子萍诱,每次提交的時候就構(gòu)建悬嗓; "Build periodically"是周期性構(gòu)建,無論代碼是否有修改裕坊,都會執(zhí)行的構(gòu)建包竹,一般用于每天跑測試; "Poll SCM"是根據(jù)版本控制軟件(git)的版本號來判斷籍凝,如果有變化則checkout后構(gòu)建周瞎。 后兩種的內(nèi)容采用crontab的周期格式,并且每次構(gòu)建除了"Poll SCM"之外饵蒂,默認(rèn)不會checkout代碼
- 構(gòu)建:可以指定"Execute Shell",這是真正做的內(nèi)容,可以checkout代碼唤衫,執(zhí)行一些測試腳本撤师,編譯代碼,提交到遠(yuǎn)程庫等
- 構(gòu)建后操作:構(gòu)建結(jié)束會得到結(jié)果(成功/失敗)渊迁,可以選擇"E-mail Notification"或"Editable Email Notification"來進(jìn)行郵件提示慰照。“不穩(wěn)定”的含義是相比于上一次構(gòu)建的結(jié)果琉朽,從失敗到成功毒租、成功到失敗、失敗到失敗箱叁,這三種情況的總和墅垮。一般勾選此選項惕医,責(zé)任人是觸發(fā)此構(gòu)建的用戶
- 源碼管理:選擇git,填寫倉庫URL遂蛀,本地庫的格式 =>
例子
- 拉取測試分支到本地:
git clone git@git.oschina.net:tyruschin/test_jenkins.git
- 進(jìn)入Jenkins,http://localhost:8080/
- 左側(cè)新建算色,填入item name曹锨,選擇“構(gòu)建一個自由風(fēng)格的軟件項目”
- 填入描述
- 源碼管理選擇git,填入倉庫路徑/.git
-
構(gòu)建觸發(fā)器選擇“Poll SCM”剃允,填入
* * * * *
沛简,表示每分鐘自動檢測git的版本號是否有變化,如果有斥废,則checkout后構(gòu)建 - 倉庫中有兩個腳本椒楣,一個是執(zhí)行出錯的腳本
ls not_exist_dir
,一個是正常執(zhí)行的腳本牡肉,可以多次嘗試捧灰。先在構(gòu)建中增加構(gòu)建步驟Execute shell,填入倉庫路徑/ok.sh - 選擇增加構(gòu)建后操作步驟中的E-mail Notification统锤,勾選“每次不穩(wěn)定的構(gòu)建都發(fā)送郵件通知”毛俏,
Recipients
中可以用空格分隔多個默認(rèn)收件郵箱,每個不穩(wěn)定狀態(tài)都會提醒這些人饲窿。同時也可以勾選“單獨發(fā)送郵件給對構(gòu)建造成不良影響的責(zé)任人”煌寇,發(fā)送給造成不穩(wěn)定狀態(tài)的構(gòu)建用戶 - 保存
- 點擊左側(cè)“立即構(gòu)建”,記錄git倉庫中的代碼到工作空間逾雄,可以看到構(gòu)建歷史上多了一個
#1
(配置成功的情況是藍(lán)色的阀溶,如果紅色則需要查看Output),藍(lán)色球代表成功鸦泳,紅色球代表失敗银锻,點擊進(jìn)去可以看到一些過程信息,Console Output中可以看到一些輸出做鹰,最后幾行有執(zhí)行腳本的輸出和執(zhí)行狀態(tài):Started by user admin Building in workspace /var/lib/jenkins/workspace/temp Cloning the remote Git repository Cloning repository /server/www/test_jenkins/.git > git init /var/lib/jenkins/workspace/temp # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git --version # timeout=10 > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 5b2707a3967d620e224fe7df79970cce4253a30d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 5b2707a3967d620e224fe7df79970cce4253a30d First time build. Skipping changelog. [temp] $ /bin/sh -xe /tmp/hudson6040940560717864847.sh + /server/www/test_jenkins/ok.sh 標(biāo)準(zhǔn)的輸出击纬,沒有錯誤 Finished: SUCCESS
- 回到項目主頁面,點擊”配置“钾麸,將Execute shell改為
err.sh
更振,并保存 - 回到主頁面,點擊立即構(gòu)建喂走,出現(xiàn)紅球殃饿,并且相應(yīng)的郵箱收到郵件提醒
See <http://localhost:8080/job/temp/2/display/redirect> ------------------------------------------ Started by user admin Building in workspace <http://localhost:8080/job/temp/ws/> > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git --version # timeout=10 > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 5b2707a3967d620e224fe7df79970cce4253a30d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 5b2707a3967d620e224fe7df79970cce4253a30d > git rev-list 5b2707a3967d620e224fe7df79970cce4253a30d # timeout=10 [temp] $ /bin/sh -xe /tmp/hudson2967294202264901782.sh + /server/www/test_jenkins/err.sh 以下嘗試訪問一個不存在的目錄 ls: cannot access 'not_exist_dir': No such file or directory Build step 'Execute shell' marked build as failure
- 嘗試提交一個git修改到本地(與源碼管理中填寫的庫對應(yīng)),1分鐘內(nèi)仍然會收到一個錯誤提醒芋肠,構(gòu)建出現(xiàn)紅色球
- 將配置中的
err.sh
改回ok.sh
乎芳,點擊立即構(gòu)建,郵箱收到糾正提醒,構(gòu)建出現(xiàn)藍(lán)色球 - 多次點擊立即構(gòu)建或提交修改奈惑,由于上一次狀態(tài)是正確吭净,當(dāng)前狀態(tài)也是正確的,不會發(fā)送提醒郵件
用戶管理
忘記密碼
http://www.cnblogs.com/zz0412/p/jenkins_jj_11.html
然后進(jìn)入之后肴甸,點擊右上角的名字 - 設(shè)置寂殉,修改密碼