3.6.2 Role-basedAuthorization Strategy授權機制 17
-
Jenkins安裝
-
Jenkins下載
由於Jenkins是開源的,可以直接下載其源代碼自行編譯,也可以下載發布好的文件,下載地址為:http://mirrors.jenkins-ci.org/war/latest/jenkins.war
-
Jenkins 安裝
Jenkins是用Java語言開發的系統,首先要確定服務器上已經安裝JDK或者JRE。
安裝方式一
直接運行java –jar Jenkins.war,在瀏覽器中輸入 http://localhost:8080即可。
安裝方式二
安裝Tomcat。
添加環境變量JENKINS_HOME,該變量為jenkins系統的工作目錄,如下圖:
(注意:該目錄對於jenkins極為重要,系統所有相關的配置、數據文件等都存放於此,所以一定要確保該目錄有足夠的空間)。
修改Tomcat 程序conf/server.xml文件,在Host結點下添加<Context path="/jenkins" docBase="G:\WWWRoot\jenkins\jenkins.war" reloadable="true" />,其中path表示jenkins系統的訪問跨徑,docBase表示jenkins程序文件所在位置。
啟動Tomcat,輸入http://localhost:8080/jenkins打開系統,如下圖,(如能正常打開系統,表示系統安裝成功)。
-
Jenkins 目錄結構
Jenkins 所有數據存放在JENKINS_HOME所設置的目錄下,如果沒設置此變量,數據將會保存在 我的文檔/.jenkins目錄下。目錄結構如下:
JENKINS_HOME
+- config.xml (配置文件)
+- *.xml (其它配置文件)
+- userContent (用戶授權文件)
+- plugins (插件)
+- jobs
+- [JOBNAME] (存放所有的Job的文件)
+- config.xml (job 配置文件)
+- workspace (存放系統代碼)
由於Jenkins沒有數據庫存,所以備份、刪除、移動數據非常方便。備份是要備份JENKINS_HOME目錄即可,恢復時要先停止jenkins。對於移動或刪除jobs,只需要簡單地移動或刪除%JENKINS_HOEM%\jobs目錄。對於修改jobs的名字,只需要簡單地修改%JENKINS_HOEM%\jobs下對應job的文件夾的名字。對於不經常使用的job,只需要對%JENKINS_HOEM%\jobs下對應的jobs的目錄zip或tar后存儲到其他的地方。
-
Jenkins系統管理
在使用系統之前,還需要對系統進行一些基本的配置,如下圖:
-
系統配置
系統配置是Jenkins配置中非常重要的一個頁面,如下圖。
在系統配置頁面,可以配置JDK、MSBuild、源代碼控制等。幾乎所有的插件安裝后有需要配置的都會在這里呈現。
-
插件管理
Jenkins是一個可擴展的系統,其很多功能都利益於各式各樣的插件,現Jenkins中已有超過200個各種不同功能的插件。所以插件對於Jenkins是非常重要的。
Jenkins的插件安裝可離線安裝,也可在線安裝。打開插件管理頁面,如下圖:
在這里可輕松的管理插件。
注意:插件安裝完成后,一般需要重啟系統,還需要到系統配置頁面對插件進行配置,插件才能起作用。
-
創建一個任務
-
安裝MSBuild Plugin插件
在創建一個任務之前,需要添加一些必須的插件。由於例子是C#寫的,首先需安裝MSBuild插件
安裝完MSBuild Plugin插件后,還需在系統配置里進行配置。進入系統配置目錄,找到剛安裝的插件
點擊MSBuild安裝,添加MSBuild的配置,如下圖,分別添加了.NET FrameWork 4.0 32位和64位MSBuild.exe,在創建任務選擇用MSBuild構建時,將同時用32、64位的MSBuild.exe去編譯。
紅色框中是MSBuild.exe的路徑。
-
創建新任務
點擊新建Job,輸入任務名稱,如下圖,選擇構建一個自由風格的軟件項目,點擊確定按鈕,進入Job詳細配置界面。
為了能完成一次基本的構建,至少需要做如下設置,在源碼管理選項,選擇源代碼管理工具。
例子中選擇Git作為源代碼管理工具,還需安裝 Git Plugin和Git Client Plugin作為插件。系統自帶SVN插件,若用SVN做源代碼管理,則無需再去安裝插件。
選擇了代碼管理工具,還一關鍵的一步,添加構建。
點擊增加構建,選擇前面安裝的MSBuild,將構建文件設置為項目文件,如下圖:
完成這些基本配置后,點擊保存按鈕,保存配置,返回任務界面,點擊立即構建,Jenkins將會自動重源代碼服務獲取代碼,並編譯,並顯示構建狀態。
紅色圖標表示構建失敗,綠色圖標表示構建成功。可以點擊控制台輸出查看詳細的構建信息。
-
自動測試
-
相關插件安裝
對於C#語言,在自動化測試中,可以用到如下插件:
-
Jenkins MSTestRunner plugin:系統使用MSTest來測試;
-
Jenkins NUnit plugin:系統使用NUit來測試;
-
JENKINS MSTest plugin:來發布MSTest的測試結果。
本例以MSTestRunner和MSTest plugin來作為例子來說明。首先到系統的插件管理界面安裝這兩個插件,如下圖
安裝完這兩個插件后,重啟Jenkins。打開系統配置界面,還需對MSTest進行配置。
紅色框是MSTest.exe的路徑位置,該工具為VS自帶工具。
-
配置任務
安裝完前面的插件后,通過配置,就可以讓Jenkins在構建的時候自動運行測試用例。
打開任務的配置界面,在構建項,選擇添加構建,運行單元測試。
添加相關配置,測試文件為我們測試項目所生成的dll或者exe文件。測試結果文件為MSTest.exe所產生的測試結果文件,文件后綴為trx。注意:這里文件是相對路徑,相對於項目的路徑。
完成了這一步的配置,系統在構建的時候,就能自動運行測試用例,但系統還不能將測試結果展示出來,要展示結果結果,還需做如下配置。
在任務配置的構建后的操作里,選擇添加后構建后的操作,如下圖。
選擇發布MSTest 測試結果報告。
在測試報告文件中添加前面配置MSTest.exe生的結果文件。
通過這些基本的配置,系統就能在構建的時候運行測試用例,並將測試結果展示出來。
在每個任務的主頁,有測試結果的統計圖。
對於每次的測試,都有很詳細的信息展示。要查看某一次構建的測試結果,可以點擊構建歷史中的測試結果。
在測試結果頁面中,展示的測試結果的總體詳細,點擊某個測試名稱,還能顯示該測試的詳細信息。
-
代碼質量管理
-
相關插件安裝
對於C#語言,代碼質量管理可用到如下插件:
-
Jenkins FxCop Runner plugin:該插件就是在構建的時候調用FxCop來分析代碼。
-
Static Analysis Utilities
-
Jenkins Violations plugin:該插件主要用來展示各種分析工具所產生的結果。
在安裝完Jenkins FxCop Runner plugin后,還需對其進行配置。點擊系統管理,系統設置,如下圖。
點擊FxCop安裝,設置FxCop程序的路徑。
-
使用FxCop分析程序集
FxCop是一個代碼分析工具,它依照微軟.NET框架的設計規范對托管代碼assembly進行檢查。它使用基於規則的引擎,來檢查出你代碼中不合規范的部分;也可以定制自己的規則加入到這個引擎。
為了能讓FxCop在構建系統時運行,還需在任務中添加配置。在構建項目,選擇增加構建步驟,選擇FxCop exec。
添加配置信息。程序集名稱為我們需要分析的項目所生成的程序集。輸入xml文件為分析所產生的結果文件,為xml格式文件。
完成好這些配置后,系統在構建的時候將會調用配置的工具進行代碼分析。
-
使用StyleCop審查代碼
StyleCop的終極目標是讓所有人都能寫出優雅和一致的代碼,因此這些代碼具有很高的可讀性。
StyleCop不是代碼格式化(代碼美化)工具,而是代碼規范檢查工具(Code Review 工具),它不僅僅檢查代碼格式,而是編碼規范,包括命名和注釋等。
StyleCop目的是幫助項目團隊執行一系列常用的源代碼格式規范,這些規范是關於如何開發布局規整,易讀,易維護並且文檔良好的優雅代碼的 。
StyleCop現在包含了 200 個左右的最佳實踐規則(best practice rules),這些規則與 Visual Studio 2005 和 Visual Studio 2008 中默認的代碼格式化規則是一致的。
StyleCop安裝
StyleCop是微軟的開源項目,可到http://stylecop.codeplex.com/下載最新的安裝包。在安裝該工具的時候,盡量默認安裝,並且MSBuild files一定要選上,不然有可能導致不能正常使用。
為了能讓系統在構建時自動運行該工具,需編輯一下項目文件,添加如下配置:
-
展示分析結果
在任務配置頁面,構建后操作,增加構建后操作,選擇Report Violations。
在Report Violations配置頁面,設置要展示的文件。我閃這里設置FxCop、StyleCop分析所產生的文件。值得注意的是,StyleCop所產生的文件是在obj\Debug目錄下。
完成這些配置后,重新構建任務。任務構建的主頁會多出配置的分析報告。
點擊某一項,還可以進入該項的詳細分析報表。
-
用戶權限管理
-
使用系統自帶的授權機制
默認地Jenkins不包含任何的安全檢查,任何人可以修改Jenkins設置、任務和啟動構建等。顯然地在大規模的公司需要多個部門一起協調工作的時候,沒有任何安全檢查會帶來很多的問題。 我們可以通過以下2方面來增強Jenkins的安全:
-
Security Realm,用來決定用戶名和密碼,且指定用戶屬於哪個組;
-
Authorization Strategy,用來決定用戶對那些資源有訪問權限;
在系統管理,Configure Global Security頁面中啟用權限管理。
首先要啟用安全,在安全域中選擇Jenkins專有用戶數據庫,並選擇允許用戶注冊。在授權策略選項中選擇項目矩陣授權策略。設置好這些基本屬性后,就是添加用戶。
輸入用戶名,點擊添加系統就添加了用戶,但需注意,在這里只添加了用戶名,添加的用戶還不能登錄,還需返回系統注冊頁面,注冊一個與此設置的相同用戶名的用戶。如下圖:
-
Role-basedAuthorization Strategy授權機制
打開系統管理,插件管理頁面,安裝Role-basedAuthorization Strategy插件。
進入系統管理,系統設置,如下圖所示:"安全域"選擇使用Jenkins專有用戶數據庫,可以在初始化的時候勾選"允許用戶注冊";"授權策略"選擇使用"Role-Based Strategy"。
配置完成后在"系統管理"下新增選項"Manage and Assign Roles"。點擊"管理用戶"新建賬戶后即可進行賬戶,群組的安全策略配置。
點擊Manage and Assign Roles,進入如下界面,頁面有添加角色,給角色授權功能。
點擊添加角色,進入角色管理頁面。在這里有兩種角色,一種是全局角色,一種是項目角色,一般用戶需授這兩種角色。
點擊Assing Roles,界面用戶授權界面。注意:這里添加用戶的方式與前面介紹的相同。
-
構建通知
-
通過郵件通知
進行系統管理,系統設置頁面,設置郵件服務器。
配置完蛋郵件服務器后,進行任務配置頁面,配置郵件通知。
當完成一次構建后,系統將發送詳細的構建信息,如下圖。
-
通過實時消息通知
實時消息通知有兩種方式,一種是通過Jabber,另一種是通過IRC的方式通知。例子通過Jabber的方式來說明。
Jabber 是著名的Linux即時通訊服務服務器,它是一個自由開源軟件,能讓用戶自己架即時通訊服務器,可以在Internet上應用,也可以在局域網中應用。Jabber最有優勢的就是其通信協議,可以和多種即時通訊對接。
安裝Jabber實時通訊服務器
到http://www.igniterealtime.org 下載Openfire和Spark。其中Openfire為服務器,Spark為客戶端。
安裝好Openfire服務器后,啟動相關服務,在其管理界面添加用戶。這里新建用戶jenkins作為Jenkins系統的賬戶,如下圖。
為了能上Jenkins能使用Jabber服務,還需安裝下圖所顯示的兩個插件。
安裝完這兩個插件后,進行系統管理,系統設置頁面,配置Jabber插件。
完成配置后,開發人員可通過Jabber客戶端與Jenkins系統交互。Jenkins每次構建后,都將會給用戶發送消息,如下圖。
開發人員,還可以通過這個工具與Jenkins服務器交互,如下圖。