在工作過程中,由於經常要提版本給測試,再由測試負責發布,經常會出現,提測一個產品,需要發布多個服務,包括網站,網站的服務,網站的后台管理已經后台管理的服務。總之,一次提測,要發布的東西會非常多,開發麻煩,測試更加麻煩,所以為了解決這個問題,決定采用Jenkins來實現一鍵發布。
一、安裝Jenkins
Jenkins下載地址:https://jenkins.io/
選擇windows版本進行下載
下載完成后進行安裝,默認安裝即可,安裝后Jenkins的訪問地址為localhost:8080,默認用戶admin,密碼位於安裝目錄的secrets\initialAdminPassword文件中。
*安裝Jenkins之前,先檢查一下8080端口是否被占用,被占用的話,Jenkins則不能正常安裝。
二、配置Jenkins
1.安裝插件:
選擇管理插件,在管理插件中,安裝:
Subversion Plug-in
MSBuild Plugin
Publish Over FTP
2.配置MSBuild:
首先指定MSBuild在本地的路徑,以便Jenkins進行調用。在最后的參數一項中,根據自己的實際需要,進行MSBuild的參數配置。
Jenkins中可配置多個MSBuild,以便供不同編譯環境使用。
我使用的vs2013所以只配置了這一個msbuild。
3.配置FTP
在系統設置中找到Publish over FTP,填寫相關參數來配置ftp的信息。
可以配置不同站ftp信息,實現發布到多個ftp站點。
三、新建任務
選擇第一個“構建一個自由風格的軟件項目”。
源代碼管理選擇Subversion,填寫相關信息,如下:
獲取源代碼時,可以指定版本進行獲取,只需在源代碼路徑后面 加上 “@版本號”,如:https://localhost/svn/SvnTest/@15
構建環境,勾選Delete workspace before build starts,構建之前刪除工作區。
1.構建:
/p:Configuration=Release 生成Release版本
/p:WebProjectOutputDir 項目輸出位置
/p:OutputPath 項目dll輸出位置
*注:如果生成以后需要使用ftp進行發布的話,請將項目生成到\Jenkins\workspace\中去。同時路徑中存在空格時,要在路徑上加上雙引號,否則會出先報錯:
MSBUILD : error MSB1008: 只能指定一個項目。
例如:
/p:WebProjectOutputDir="C:\Program Files (x86)\Jenkins\workspace\ TestPub \Build"
/p:OutputPath="C:\Program Files (x86)\Jenkins\workspace\ TestPub\Build\bin"
2.通過FTP發布
點擊增加構建后操作步驟,並選擇下圖紅框內的選項。
在Send build artifacts over FTP中,選擇之前配置好的FTP信息進行FTP傳輸。
Source files:表示當前上傳的文件位置,該位置默認根目錄為“Jenkins\workspace\項目名”文件夾。
Remove prefix:表示上傳時,是否排除忽略某些文件夾。如上圖中,如果該項為空,則在FTP指定位置上傳Build文件夾及其內容。
點擊Add Transfer Set,配置需要替換的特殊內容:
作用:例如,從svn獲取到的項目配置為開發環境的配置,但是,發布測試環境需要測試環境的配置文件,這樣只需要提前提前配置好的文件,而不需要人為去修改配置文件,就可以實現一鍵發布,同時減少人為修改配置出現錯誤的幾率。
*注:在服務器配置ftp時,要啟用基本身份驗證,否則Jenkins連接ftp時會不能通過驗證。
*注:FTP發布的文件禁止出現中文,否則會報錯
ERROR: Exception when publishing, exception message [Could not write file. Server message: [550 The filename, directory name, or volume label syntax is incorrect.]]
四、配置多任務項目
很多時候,我們發布的並不是單個項目,而是一組相關的項目才能完成一輪測試,所以我們可以將不同的單個任務組合成一個項目進行發布。
步驟如下:首先下載插件
Multijob plugin
然后創建一個MultiJob Project
其他不需要管,只需要配置構建,選擇MultiJob Phase,填入已經配置好的Job就可以了。
到此配置就全部結束了,只需要去點擊立即構建就可以了。注意控制台的輸出。