Jenkins持續(xù)集成打包平臺搭建

相關(guān)概念

Jenkins

  • Jenkins宗侦,一個用Java編寫的開源的持續(xù)集成工具愚臀,提供了軟件開發(fā)的持續(xù)集成服務(wù),可監(jiān)控并觸發(fā)持續(xù)重復(fù)的工作矾利,具有開源姑裂,支持多平臺和插件擴展,安裝簡單男旗,界面化管理等特點舶斧。更多介紹參考[維基](https://en.wikipedia.org/wiki/Jenkins_(software)介紹.

Gitlab

  • GitLab是一個利用Ruby on Rails開發(fā)的開源應(yīng)用程序察皇,實現(xiàn)一個自托管的Git項目倉庫茴厉,可通過Web界面進行訪問公開的或者私人項目,更多介紹參考維基介紹.

持續(xù)集成

  • 持續(xù)集成, 簡稱CI(continuous integration).
  • CI作為敏捷開發(fā)重要的一步什荣,其目的在于讓產(chǎn)品快速迭代的同時矾缓,盡可能保持高質(zhì)量.
  • CI一種可以增加項目可見性,降低項目失敗風(fēng)險的開發(fā)實踐稻爬。其每一次代碼更新嗜闻,都要通過自動化測試來檢測代碼和功能的正確性,只有通過自動測試的代碼才能進行后續(xù)的交付和部署.
  • CI 是團隊成員間(產(chǎn)研測)更好地協(xié)調(diào)工作桅锄,更好的適應(yīng)敏捷迭代開發(fā)琉雳,自動完成減少人工干預(yù)样眠,保證每個時間點上團隊成員提交的代碼都能成功集成的,可以很好的用于對Android/iOS項目的打包.

平臺搭建
Jenkins安裝和啟動
官網(wǎng)https://jenkins.io/index.html
下載http://mirrors.jenkins-ci.org/war/latest/jenkins.war

安裝:

  • 依賴于Java環(huán)境翠肘,首先安裝和配置Java環(huán)境
  • 官網(wǎng)下載Jenkins,雙擊安裝吹缔,如果是Mac電腦,會自動生成全局變量jenkins
  • 修改參數(shù): jenkins + 相關(guān)參數(shù)锯茄,如jenkins --httpPort=8888 #更換端口號厢塘,當(dāng)默認端口8080被占用,或指定特定端口時肌幽。

啟動

  • 手動啟動: java -jar jenkins.war
  • 后臺啟動(默認端口): nohup java -jar jenkins.war &
  • 后臺啟動(指定端口): nohup java -jar jenkins.war -httpPort=88 &
  • 后臺啟動(HTTPS): nohup java -jar jenkins.war -httpsPort=88 &
  • 瀏覽:http://localhost:8080/ , localhost可配置

Jenkins插件安裝

操作: Manage Jenkins -> Manage Plugins -> Available -> Search -> Click to install晚碾,如下圖所示

image.png
image.png

實用插件

  • Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
  • Git插件: Git plugin
  • 簽名證書管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
  • FTP插件: Publish over FTP
  • 腳本插件: Post-Build Script Plug-in
  • 獲取倉庫提交的commit log: Git Changelog Plugin
  • 自定義全局變量: Environment Injector Plugin
  • 自定義郵件插件: Email Extension Plugin
  • 獲取當(dāng)前登錄用戶信息: build-user-vars-plugin
  • 顯示代碼測試覆蓋率報表: Cobertura Plugin
    來展示生成的單元測試報表,支持一切單測框架喂急,如junit格嘁、nosetests等: Junit Plugin

Jenkins系統(tǒng)設(shè)置

操作: Manage Jenkins -> Configure System

  • Jenkins內(nèi)部shell UTF-8 編碼設(shè)置,如下圖所示
image.png
  • Jenkins Location和Email設(shè)置廊移,如下圖所示
image.png
  • E-mail Notification糕簿,設(shè)置如下如所示
image.png

Jenkins Jobs配置

Jobs基礎(chǔ)配置

配置編譯參數(shù)

例如,如果需要打包者自行選擇打包類型狡孔,如需要編譯Release/Debug/Test等不同版本的包懂诗,那需要配置Jobs的編譯參數(shù),配置方法如下圖所示:

image.png

你還可以配置一些其它參數(shù)苗膝,例如:

image.png

配置完后殃恒,build界面中就會出現(xiàn),如下如所示:

image.png

配置匿名用戶權(quán)限

后面打包的應(yīng)用發(fā)布時辱揭,如果懶得自己搭建服務(wù)器离唐,就用Jenkins的,但發(fā)布出去的鏈接需要登錄才能訪問问窃,這時候你可以設(shè)置匿名用戶的訪問權(quán)限亥鬓,這樣匿名用戶可以下載訪問你提供的應(yīng)用鏈接了,非常取巧的方法域庇,如下圖:

image.png

Jobs源碼庫配置(Gitlab為例)

配置SSH

操作: Manage Jenkins -> Credentials -> Global credentials (unrestricted) -> Add Credentials

1.本機生成SSH:ssh-keygen -t rsa -C "Your email" 嵌戈, 生成過程中需設(shè)置密碼,最終生成id_rsa和id_rsa.pub(公鑰)
2.本機添加秘鑰到SSH:ssh-add 文件名(需輸入管理密碼)
3.Gitlab上添加公鑰:復(fù)制id_rsa.pub里面的公鑰添加到Gitlab
4.Jenkins上配置密鑰到SSH:復(fù)制id_rsa.pub里面的公鑰添加到Jenkins(private key選項)

新建Job

在Jenkins中较剃,所有的任務(wù)都是以"Job"為單位的咕别。在進行操作前,你需要新建一個Job写穴,Job新建比較簡單,只需要在Jenkins管理的首頁左側(cè)雌贱,點擊“New Job”啊送,一般選擇free-style software project偿短,再輸入Job的名字即可。

配置Gitlab

在新建的任務(wù)(Jobs)中馋没,Gitlab源碼配置如下圖:需要輸入git倉庫和build分支昔逗,公鑰使用上面配置SSH生成的公鑰。

image.png

Jobs觸發(fā)條件配置

Jenkins支持多種觸發(fā)器配置篷朵,包括:

  • 定期進行構(gòu)建(Build periodically)勾怒,定時器使用示例如下:
    H(25-30) 18 1-5: 工作日下午6點25到30分之間進行build
    H 23 1-5:工作日每晚23:00至23:59之間的某一時刻進行build
    H(0-29)/15 :前半小時內(nèi)每隔15分鐘進行build(開始時間不確定)
    H/20 :每隔20分鐘進行build(開始時間不確定)

  • 根據(jù)提交進行構(gòu)建(Build when a change is pushed to GitHub)

  • 定期檢測代碼更新,如有更新則進行構(gòu)建(Poll SCM)

Jobs構(gòu)建方式/編譯 配置

Jenkins支持多種編譯配置方式声旺,包括:

  • Xcode: iOS編譯配置(安裝Xcode integration插件)
  • Invoke Gradle script: Android編譯配置(安裝Gradle plugin插件)
  • Exceute Shell: 腳本方式

Jobs構(gòu)建后處理

Artifacts和郵件通知配置笔链,參考下圖

image.png

可借助Email Extension Plugin 插件進行詳細配置,具體可參考此文

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腮猖,一起剝皮案震驚了整個濱河市鉴扫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澈缺,老刑警劉巖坪创,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盛泡,死亡現(xiàn)場離奇詭異蜕琴,居然都是意外死亡,警方通過查閱死者的電腦和手機涨颜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門项滑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锁施,“玉大人,你說我怎么就攤上這事杖们∠さ郑” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵摘完,是天一觀的道長姥饰。 經(jīng)常有香客問我,道長孝治,這世上最難降的妖魔是什么列粪? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谈飒,結(jié)果婚禮上岂座,老公的妹妹穿的比我還像新娘。我一直安慰自己杭措,他們只是感情好费什,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著手素,像睡著了一般鸳址。 火紅的嫁衣襯著肌膚如雪瘩蚪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天稿黍,我揣著相機與錄音疹瘦,去河邊找鬼。 笑死巡球,一個胖子當(dāng)著我的面吹牛言沐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酣栈,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼险胰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钉嘹?” 一聲冷哼從身側(cè)響起鸯乃,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跋涣,沒想到半個月后缨睡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡陈辱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年奖年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沛贪。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡陋守,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出利赋,到底是詐尸還是另有隱情水评,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布媚送,位于F島的核電站中燥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏塘偎。R本人自食惡果不足惜疗涉,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吟秩。 院中可真熱鬧咱扣,春花似錦、人聲如沸涵防。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祭往,卻和暖如春伦意,著一層夾襖步出監(jiān)牢的瞬間火窒,已是汗流浹背硼补。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留熏矿,地道東北人已骇。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像票编,于是被迫代替她去往敵國和親褪储。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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