Jenkins是一種跨平臺的持續集成和交付的應用軟件,它便於不斷穩定地交付新的軟件版本,並提升你的工做效率。這款開發運維工具還讓開發人員更容易把項目的變化整合起來,並使用大量的測試和部署技術。php
Jenkins是一個開源的、可擴展的持續集成、交付、部署(軟件/代碼的編譯、打包、部署)的基於web界面的平臺。前身是Hudson是一個可擴展的持續集成引擎。可用於自動化各類任務,如構建,測試和部署軟件。容許持續集成和持續交付項目,不管用的是什麼平臺,能夠處理任何類型的構建或持續集成。html
Jenkins能實時監控持續集成過程當中所存在的問題,提升詳細的日誌文件和提醒功能,用圖表的形式,形象地展現項目構建的趨勢和穩定性。java
Jenkins 是一個用 Java 編寫的開源的持續集成工具。它運行在 Servlet 容器中(例如 Apache Tomcat)。它支持軟件配置管理(SCM)工具(包括 AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase 和 RTC),能夠執行基於 Apache Ant 和 Apache Maven 的項目,以及任意的 Shell 腳本和 Windows 批處理命令。git
使用 Jenkins 構建 Coding 項目是利用 Webhook 向 Jenkins 服務器發送請求。Jenkins 接收到 Webhook 請求後,進行構建。要實現以上功能須要使用 Jenkins 的插件來實現,Jenkins Coding Webhook Plugin 是經過 Jenkins Gitlab Webhook 插件修改而得。安裝後便可響應 Coding 的 Webhook 請求。github
CI/CD:持續集成,持續交付/持續部署web
CI(Continuous Integration):軟件工程流程,能夠幫助開發人員更加頻繁地將代碼更改合併到共享分支或「主幹」中。一旦開發人員對應用所作的更改被合併,系統就會經過自動構建應用並運行不一樣級別的自動化測試(一般是單元測試和集成測試)來驗證這些更改,確保這些更改沒有對應用形成破壞。這意味着測試內容涵蓋了從類和函數到構成整個應用的不一樣模塊。若是自動化測試發現新代碼和現有代碼之間存在衝突,CI 能夠更加輕鬆地快速修復這些錯誤。sql
就是說只要開發人員提交新的代碼,Jenkins就會馬上將新代碼與舊代碼進行合併構建測試。肯定新代碼與原代碼是否能夠集成在一塊兒。docker
持續部署數據庫
CD(Continuous Deployment):是持續交付的下一步,若是代碼經過評審之後自動部署到生產環節中。在持續交付的基礎上,自動部署到生產環境中。處於業務考慮,也能夠選擇不部署。要想持續部署,必須先實施持續交付。ubuntu
在 Jenkins 插件庫裏標記的,對 Jenkins 的版本依賴是 1.625.3。 在我司吃本身的狗糧的實踐中,目前使用 Jenkins 版本爲 2.67。(穩定版爲 2.60 / 2.73)
安裝
登錄到您的 Jenkins 服務器。選擇『系統管理』。
點擊『管理插件』
選擇『可選插件』,在右上方 『過濾』框中,輸入『coding』,便可看到『Coding Webhook Plugin』。 勾選後,點擊下方的『直接安裝』。若是沒有搜索到結果,能夠點擊右下方的『當即獲取』,獲取後便可看到。
若是搜索不到,還能夠前往 這裏 下載,進行手動安裝。
下面介紹手動安裝的方法:
進入插件列表,選擇上方『高級』標籤
在『高級』標籤下,上傳插件欄中點擊選擇文件,選中 coding-wehook.hpi
點擊『上傳』按鈕,便會自動上傳後安裝。
2 . 配置項目
在 Jenkins 中選擇新建項目
進入項目配置頁面,在源碼管理下選擇 Git,並填入項目地址,以及認證的形式。
在構建觸發器欄中選擇『收到 Coding 發送過來的請求時觸發構建』,並填入相應的選項。
若是須要根據 Merge Request 的構建,先點擊右側的問好。
會展開提示信息。
根據提示信息,回到源碼管理中,點擊『高級』,在 Refspec
中填入+refs/heads/*:refs/remotes/origin/* +refs/merge/*/MERGE:refs/remotes/origin/merge/*
,若是是公開項目,則填入+refs/heads/*:refs/remotes/origin/* +refs/pull/*/MERGE:refs/remotes/origin/pull/*
。
最後能夠添加構建的腳步。
回到 Coding 中,在項目的設置中選擇添加 Webhook。
添加成功後,便可。
這時,咱們提交一個 Merge Request。
再回到 Jenkins 中,便可看到項目構建的信息。
藉助 Jenkins Email插件實現網站構建完成,自動發送郵件給相應的開發人員,開發人員,或者測試人員。
Jenkins發送郵件須要安裝Email郵件插件,Email-ext、Token-macro和Email-template.
Jenkins Email郵件配置常見參數:
SMTP server 郵件服務器的地址
Default Content Type 內容展示的格式,通常選擇HTML
Default Recipients 默認收件人
Use SMTP Authentication 使用SMTP身份驗證
User Name 郵件發送帳戶的用戶名
基於 Jenkins 自動部署網站的流程大體分爲:需求分析----原型分析---開發代碼---提交測試---- Jenkins內網部署---確認上線--- Jenkins 備份數據--- Jenkins 外網部署--發佈完畢--- Jenkins網站測試等,若是發現外網部署的代碼有異常,能夠經過 Jenkins及時回滾,如圖
常見問題 :
一、用jenkins怎麼實現發佈和回滾?
回答:發佈:jenkins配置好代碼路徑(SVN或GIT),而後拉代碼,打tag。須要編譯就編譯,編譯以後推送到發佈服務器(jenkins裏面能夠調腳本),而後從分發服務器往下分發到業務服務器上。
回滾:按照版本號到發佈服務器找到對應的版本推送
連接 :
Jenkins介紹:Jenkins使用教程 : https://www.2cto.com/kf/201712/707935.html
Jenkins 系列 : https://yq.aliyun.com/wenzhang/blog_2636?spm=a2c4e.11155472.0.0.2ab86b04oK6x8g
Jenkins部署Maven項目到Tomcat.txt : http://www.voidcn.com/code/p-qdirodfe-q.html
Jenkins 系列 : https://testerhome.com/search?q=Jenkins
Linux下安裝配置Jenkins : http://blog.51cto.com/fangwei009/2087624
實戰Jenkins+SVN+tomcat持續集成發佈 : http://blog.51cto.com/fangwei009/1977933
Centos7.3系統下搭建Jenkins+ant+Jmeter持續集成自動化搭建步驟 : http://blog.51cto.com/fangwei009/1954030
Jenkins+Ant+Jmeter搭建持續集成的接口測試平臺(轉) : http://blog.51cto.com/fangwei009/1952504
jenkins實現自動化部署及服務重啓-初級 : http://blog.51cto.com/vekergu/1627955
JMeter學習(三十七)Jmeter錄製手機app腳本 : http://blog.51cto.com/fangwei009/1911634
ant+jmeter 在Linux環境下接口自動化測試環境搭建(2) : http://blog.51cto.com/fangwei009/1911218
ant+jmeter+Jenkins接口自動化測試實戰(1) ; http://blog.51cto.com/fangwei009/1910388
jmeter下載及安裝配置 : http://blog.51cto.com/fangwei009/1910385
Windows下ant環境搭建 : http://blog.51cto.com/fangwei009/1910384
持續集成接口自動化-jmeter+ant+jenkins(一) : http://blog.51cto.com/fangwei009/1906033
Jenkins+Jmeter+Ant自動化集成環境搭建 : http://blog.51cto.com/fangwei009/1906030
windows下安裝jenkins : http://blog.51cto.com/fangwei009/1882542
Jmeter分佈式壓測 : http://blog.51cto.com/fangwei009/1886976
使用JMeter建立數據庫(Mysql)測試 : http://blog.51cto.com/fangwei009/1877567
JMeter建立FTP測試服務器上傳下載性能 : http://blog.51cto.com/fangwei009/1866834
使用Jmeter進行http接口測試 : http://blog.51cto.com/fangwei009/1773724
JMeter安裝教程 : http://blog.51cto.com/fangwei009/1751611
windows服務器部署多個不一樣端口的tomcat : http://blog.51cto.com/fangwei009/1857337
windows查看端口占用以及關閉相應的進程 : http://blog.51cto.com/fangwei009/1854142
Jenkins與Docker的自動化CI/CD實戰 : https://mp.weixin.qq.com/s/gZl9nQuPtMsekjNBcdfE8g
jenkins 按標籤發佈 : http://blog.51cto.com/sgk2011/1927169
jenkins實戰安裝java maven項目 : http://blog.51cto.com/sgk2011/1926750
jenkins實戰之發佈一個php小的項目 : http://blog.51cto.com/sgk2011/1926295
jenkins的安裝配置 置頂 : http://blog.51cto.com/sgk2011/1926270
Jenkins+Maven+SVN+Nexus 搭建持續集成環境 : http://blog.51cto.com/abcdocker/2137268
Jenkins 自動化部署上線 : http://blog.51cto.com/abcdocker/2136114
Jenkins (8篇) ; https://www.cnblogs.com/sparkdev/tag/CI%2FCD/
Jenkins 系列 : https://www.cnblogs.com/fawaikuangtu123/category/1386781.html
CentOS 7 Gitlab+Jenkins持續集成+自動化部署 : https://www.cnblogs.com/bigdevilking/p/9544476.html
CentOS 7 部署Gitlab+Jenkins持續集成(CI)環境 :https://www.cnblogs.com/bigdevilking/p/9543092.html
CentOS 7 部署GitLab : https://www.cnblogs.com/bigdevilking/p/9539368.html