Jenkins 基本概念與原理

2022-09-20 14:03:15 字數 2750 閱讀 7735

jenkins是乙個功能強大的應用程式,允許持續整合和持續交付專案(持續部署),無論用的是什麼平台。這是乙個免費的源**,可以處理任何型別的構建或持續整合。整合jenkins可以用於一些測試和部署技術。

jenkins 是乙個可擴充套件的持續整合引擎。

j**a語言開發持續整合工具,支援ci,cd。 

易於安裝部署配置:

可方便web介面配置管理(所有配置都是通過其提供的web介面實現);

可直接把jenkins.war部署到servlet容器,不需要資料庫支援。 

訊息通知及測試報告:

整合rss/e-mail通過rss發布構建結果或當構建完成時通過e-mail通知;

生成junit/testng測試報告。 

分布式構建:

支援jenkins能夠讓多台計算機一起構建/測試。 

檔案識別:

jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。 

豐富的外掛程式支援:

支援擴充套件外掛程式,你可以開發適合自己團隊使用的工具,如git,svn,m**en,docker等。

持續整合(continuous integration)是一種軟體開發實踐,即團隊開發成員經常整合它們的工作,通過每個成員每天至少整合一次,也就意味著每天可能會發生多次整合。每次整合都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現整合錯誤。

持續部署(continuous deployment)是通過自動化的構建、測試和部署迴圈來快速交付高質量的產品。某種程度上代表了乙個開發團隊工程化的程度,畢竟快速運轉的網際網路公司人力成本會高於機器,投資機器優化開發流程化相對也提高了人的效率,讓 engineering productivity 最大化。

持續交付(英語:continuous delivery,縮寫為 cd),是一種軟體工程手法,讓軟體產品的產出過程在乙個短週期內完成,以保證軟體可以穩定、持續的保持在隨時可以發布的狀況。它的目標在於讓軟體的建置、測試與發布變得更快以及更頻繁。這種方式可以減少軟體開發的成本與時間,減少風險。

持續交付與devops的含義很相似,所以經常被混淆。但是它們是不同的兩個概念。devops的範圍更廣,它以文化變遷為中心,特別是軟體交付過程所涉及的多個團隊之間的合作(開發、運維、qa、管理部門等),並且將軟體交付的過程自動化。另壹方面,持續交付是壹種自動化交付的手段,關注點在於將不同的過程集中起來,並且更快、更頻繁地執行這些過程。因此,devops可以是持續交付的壹個產物,持續交付直接匯入devops;

有時候,持續交付也與持續部署混淆。持續部署意味著所有的變更都會被自動部署到生產環境中。持續交付意味著所有的變更都可以被部署到生產環境中,但是出於業務考慮,可以選擇不部署。如果要實施持續部署,必須先實施持續交付。

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

構建可持續的自動化檢查 :

構建可持續的自動化測試 :

生成後後續過程的自動化 :

部署乙個ci系統需要的最低要求是,乙個可獲取的源**的倉庫,乙個包含構建指令碼的專案。

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

ci系統在整個開發過程中的主要作用是控制:

當系統在**儲存庫中探測到修改時,它將執行構建的任務委託給構建過程本身。如果構建失敗了,那麼ci系統將通知相關人員,然後繼續監視儲存庫。它的角色看起來是被動的;但它確能快速反映問題。

特別是它具有以下優點:

*容易安裝,只需要執行j**a -jar jenkins.war, 或者直接部署到乙個servlet container中,例如tomcat。不需要安裝,不需要資料庫的支援。

*專案原始碼修改的檢測,jenkins能夠從專案的subversion/cvs生成最近修改的集合列表,且改方式非常有效,不會增加subversion/cvs repository的負載。

*可讀的永久的鏈結生成,jenkins對於大部分pages都生成清楚的可讀的永久的鏈結,例如''latest build"/"latest successful build",因此可以容易地在其他的地方引用jenkins的生成的pages。

*rss/email/im整合,可以通過rss,email或im來實時地監視build的失敗。

*build完成後仍然可以tag,支援在build完成後tag或重tag。

*junit/testng 測試報告,能夠很好地顯示各種測試的報告,且可以生成失敗的趨向圖。

*分布式build,jenkins能夠分發build/test的負載到多台機器,能夠更好地利用硬體資源,提高build的時間。

*檔案標識,jenkins可以標識build產生的檔案,例如jars。

*外掛程式支援,jenkins可以通過第三方的外掛程式來擴充套件。

*跨平台,支援幾乎所有的平台,例如windows,ubuntu/debian,red hat/fedora/centos,mac os x,opensuse,freebsd,openbsd,solaris/openindiana.gentoo。

HDFS原理分析 基本概念

hdfs是hadoop distribute file system 的簡稱,也就是hadoop的乙個分布式檔案系統。hdfs設計理念之一就是讓它能執行在普通的硬體之上,即便硬體出現故障,也可以通過容錯策略來保證資料的高可用。hdfs是hadoop distribute file system 的簡...

RabbitMQ 基本概念即原理

訊息 訊息包含兩部分內容,有效載荷和標籤。有效載荷指需要傳輸的資料,他可以是任何格式的內容 標籤描述了有效載荷,並且rabbitmq用他來決定誰將獲得訊息的拷貝。通道 channel rabbitmq使用通道來進行訊息互動。通道建立在真實tcp連線內的虛擬連線,每個通道都會被指派乙個唯一id amq...

ElasticSearch基本概念及原理

起源 lucene elasticsearch主要功能 索引結構 目前使用中,大多數都是乙個index,對應乙個type,在es 6.x版本中,乙個索引只允許存在乙個 type,後續版本會刪掉這個type的概念。settings定義不同的資料分布 索引的不同語義 索引 動詞 文件到elasticse...