Jenkins 入門系列--jenkins 介紹

第一章 Jenkins是什么?

Jenkins?是一個可擴展的持續集成引擎。

主要用于:

  • l?持續、自動地構建/測試軟件項目。
  • l?監控一些定時執行的任務。

Jenkins擁有的特性包括:

  • l?易于安裝-只要把jenkins.war部署到servlet容器,不需要數據庫支持。
  • l?易于配置-所有配置都是通過其提供的web界面實現。
  • l?集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知。
  • l?生成JUnit/TestNG測試報告。
  • l?分布式構建支持Jenkins能夠讓多臺計算機一起構建/測試。
  • l?文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
  • l?插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具。

1?Jenkins的由來

目前持續集成(CI)已成為當前許多軟件開發團隊在整個軟件開發生命周期內側重于保證代碼質量的常見做法。它是一種實踐,旨在緩和和穩固軟件的構建過程。并且能夠幫助您的開發團隊應對如下挑戰:

  • l?軟件構建自動化?:配置完成后,CI系統會依照預先制定的時間表,或者針對某一特定事件,對目標軟件進行構建。
  • l?構建可持續的自動化檢查?:CI系統能持續地獲取新增或修改后簽入的源代碼,也就是說,當軟件開發團隊需要周期性的檢查新增或修改后的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。這減少了開發者們在檢查彼此相互依存的代碼中變化情況需要花費的時間和精力(說直接一點也是錢啊,呵呵)。
  • l?構建可持續的自動化測試?:構建檢查的擴展部分,構建后執行預先制定的一套測試規則,完成后觸發通知(Email,RSS等等)給相關的當事人。
  • l?生成后后續過程的自動化?:當自動化檢查和測試成功完成,軟件構建的周期中可能也需要一些額外的任務,諸如生成文檔、打包軟件、部署構件到一個運行環境或者軟件倉庫。這樣,構件才能更迅速地提供給用戶使用。

部署一個CI系統需要的最低要求是,一個可獲取的源代碼的倉庫,一個包含構建腳本的項目。

下圖概括了CI系統的基本結構:

?

該系統的各個組成部分是按如下順序來發揮作用的:

1.?開發者檢入代碼到源代碼倉庫。

2.?CI系統會為每一個項目創建了一個單獨的工作區。當預設或請求一次新的構建時,它將把源代碼倉庫的源碼存放到對應的工作區。

3.?CI系統會在對應的工作區內執行構建過程。

4.?(配置如果存在)構建完成后,CI系統會在一個新的構件中執行定義的一套測試。完成后觸發通知(Email,RSS等等)給相關的當事人。

5.?(配置如果存在)如果構建成功,這個構件會被打包并轉移到一個部署目標(如應用服務器)或存儲為軟件倉庫中的一個新版本。軟件倉庫可以是CI系統的一部分,也可以是一個外部的倉庫,諸如一個文件服務器或者像Java.net、?SourceForge之類的網站。

6.?CI系統通常會根據請求發起相應的操作,諸如即時構建、生成報告,或者檢索一些構建好的構件。

Jenkins就是這么一個CI系統。之前叫做Hudson。

以下是使用Jenkins的一些理由:

  • l?是所有CI產品中在安裝和配置上最簡單的。
  • l?基于Web訪問,用戶界面非常友好、直觀和靈活,在許多情況下,還提供了AJAX的即時反饋。
  • l?Jenkins是基于Java開發的(如果你是一個Java開發人員,這是非常有用的),但它不僅限于構建基于Java的軟件。
  • l?Jenkins擁有大量的插件。這些插件極大的擴展了Jenkins的功能;它們都是開源的,而且它們可以直接通過web界面來進行安裝與管理。

1.1?Jenkins的目標

Jenkins的主要目標是監控軟件開發流程,快速顯示問題。所以能保證開發人員以及相關人員省時省力提高開發效率。

CI系統在整個開發過程中的主要作用是控制:當系統在代碼存儲庫中探測到修改時,它將運行構建的任務委托給構建過程本身。如果構建失敗了,那么CI系統將通知相關人員,然后繼續監視存儲庫。它的角色看起來是被動的;但它確能快速反映問題。

特別是它具有以下優點:

  • l?Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的項目就都能用。當然也可以通過修改XML進行配置。
  • l?支持Maven的模塊(Module),Jenkins對Maven做了優化,因此它能自動識別Module,每個Module可以配置成一個job。相當靈活。
  • l?測試報告聚合,所有模塊的測試報告都被聚合在一起,結果一目了然,使用其他CI,這幾乎是件不可能完成的任務。
  • l?構件指紋(artifact?fingerprint),每次build的結果構件都被很好的自動管理,無需任何配置就可以方便的瀏覽下載。




轉:http://www.cnblogs.com/zz0412/tag/jenkins/

轉載于:https://www.cnblogs.com/lameclimber/p/10842002.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372786.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在方法參數上使用final關鍵字

經過一些自己的混淆,最終博客方法的具體含義(最終聲明的方法參數)將對此博客條目進行澄清。 至少可以將方法參數上的final關鍵字視為Java編譯器的指示符,表明該參數不能重新分配給另一個引用。 Java參數處理始終是“按值調用” &a…

PHP MySQLi 增刪改查

最近幾天,我們一直在學習利用MySQLi訪問數據庫并對其中的數據進行操作。今天給大家展現一個完整的例子,我們來制作一個新聞發布系統,利用MySQLi來操作數據庫,實現對新聞的添加、修改、刪除、查詢等基本功能。(以下代碼…

20162303《程序設計與數據結構》第一周學習總結

學號 2016-2017-2 《程序設計與數據結構》第1周學習總結 教材學習內容總結 本周學習了基本的JAVA知識,雖然比較基礎,但是在實際過程中還是出現了許許多多的問題,代碼一遍遍的敲錯,又一遍遍的修改,剛開始甚至不會切換模…

Java EE與NoSQL的未來

自一段時間以來,我一直在關注NoSQL的近期發展勢頭,似乎這個流行語也引起了企業Java界的某種關注。 即EclipseLink 2.4開始支持MongoDB和Oracle NoSQL 。 將EclipseLink作為JPA參考實現,您可能想知道這對Java EE 7意味著什么。這里簡短說明&am…

【C/C++開發】C語言實現函數可變參數

函數原型: int printf(const char *format[,argument]...) 返 回 值: 成功則返回實際輸出的字符數,失敗返回-1. 函數說明: 在printf()函數中,format后面的參數個數不確定,且類型也不確定,這些參數都存放在棧內.調用…

java postgresql json_java – 將PostgreSQL JSON列映射到Hibernate值類...

See PgJDBC bug #265.PostgreSQL對數據類型轉換過于嚴格,非常嚴格.它不會隱式地將文本轉換為類似文本的值,例如xml和json.解決此問題的嚴格正確方法是編寫使用JDBC setObject方法的自定義Hibernate映射類型.這可能有點麻煩,所以你可能只想通過創建一個較弱的強制轉換來使Postgr…

面向接口編程詳解(三)——模式研究

通過前面兩篇,我想各位朋友對“面向接口編程”的思想有了一定認識,并通過第二篇的例子,獲得了一定的直觀印象。但是,第二篇中的例子旨在展示面向接口編程的實現方法,比較簡單,不能體現出面向接口編程的優勢…

錯誤學習:Java + OSGi

最近,我致力于在OSGi環境中使Apache Hive工作。 雖然沒有被證明是小菜一碟(軟件對嗎?。。為什么我不感到驚訝? ),它引導我解決了各種Java和OSGi錯誤。 在這里,我列出了其中一些讓我有些吃力的東…

iOS多Targets管理

序言: 個人不善于寫東西,就直奔主題了。 其實今天會注意到多targets這個東西,是因為在學習一個第三方庫FBMemoryProfiler的時候,用到了,所以就搜索了一些相關資料,就在這里記錄一下。 可能每個人都會遇到這…

優化的34條定律

1.Minimize HTTP Requests 減少HTTP請求 圖片、css、script、flash等等這些都會增加http請求數,減少這些元素的數量就能減少響應時間。把多個JS、CSS在可能的情況下寫進一個文件,頁面里直接寫入圖片也是不好的做法,應該寫進CSS里,…

休眠提示:排序和排序

讓我們介紹另一個休眠性能提示。 你還記得以前的休眠的模式后 ? 我們有一個與一對多協會有關的星際飛船和軍官。 Entity public class Starship {Id GeneratedValue(strategyGenerationType.SEQUENCE) private Long id;public Long getId() {return id;}protected v…

java 基本類型 線程安全_java的基本類型和i++線程安全性的深入解析

在java中,除了long和double的8個字節、64位比特的變量外,其他的基本變量都是原子性的。java存儲模型要求獲取和存儲操作都為原子性,但是對于非volatile的long和double變量,jvm允許將64位的讀或寫劃分為兩個32位的操作。如果讀和寫…

MySQL配置文件mysql.ini參數詳解

my.ini(Linux系統下是my.cnf),當mysql服務器啟動時它會讀取這個文件,設置相關的運行環境參數。 my.ini分為兩塊:Client Section和Server Section。 Client Section用來配置MySQL客戶端參數。 要查看配置參數可以用下面…

微信公眾平臺和微信開放平臺的區別

自己也剛開始做微信開發,先寫寫自己的認識: 用微信公眾平臺可以做手機端H5頁面的微信登錄,微信支付 用微信開放平臺可以做PC端網頁的微信登錄。 轉載于:https://www.cnblogs.com/mafeng/p/5610770.html

java 傳遞bean_如何將bean作為參數傳遞給JSP標記?

我ve created a custom JSP tag that is supposed to accept a list of products to render, but I我無法弄清楚如何將列表傳遞給標簽 . 產品列表作為頁面范圍的bean存在 . Web應用程序使用Struts taglib在Struts 1.2.x中編寫 .這是我的代碼的簡化版本:renderProduc…

Business Component(BC)和Business Object(BO)

Siebel應用架構的一個成功的地方就是在應用里引入了BC,BO的概念,從而使得幾千張關系數據表能夠按照業務的含義組織成業務對象,對于業務人員而言具有了業務上的含義,而不僅僅是從技術人員的觀點來對待數據(就是關系表而…

NetBeans可用性提示

的Java IDE都來了,因為在很長的路要走天的JBuilder的 (盡管JBuilder中似乎是一個值得歡迎提前在時間)。 當今的Java IDE(例如NetBeans , Eclipse , IntelliJ IDEA和JDeveloper )是非常先進的工具…

一個JVM進程啟動后里面有幾個線程

在寫Java程序時,通常我們管只有一個main函數(而沒有別的Thread或Runnable的程序)叫單線程程序。但是我們寫的這個所謂的單線程程序只是JVM這個程序中的一個線程,JVM本身是一個多線程的程序,至少得有一個垃圾收集器線程…

WPF 反編譯后錯誤處理

1. 首先,手動創建一個WPF工程(WpfApplicationReflectorDemo) 2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里 3.點擊 File -> Save Code...: 相應的代碼會生成到指定地方。 4. 打開應用程序,并且編譯它,此…

JavaFX 2 GameTutorial第1部分

介紹 我相信大多數軟件開發人員可能會在年輕人(年輕人)一生中的某一時刻被迫創建游戲來幫助他們學習編程語言(我知道我確實做到了)。 以前,我的第一臺計算機實際上是Franklin Ace 1000 ,后來是Apple [] 。 …