之前對Jenkins管理SVN源碼的邏輯不太清楚,簡單研究了一下。對於一般的開發通常會有以下三個環境:
1、svn服務器
2、Jenkins服務器
3、開發服務器(部署測試版web應用或者其他應用)
當然以上三者也可以在同一個服務器上,只是不同的工作目錄
簡要闡述一下Jenkins的工作原理:
a,首先更新svn上面的源代碼或其他文件到Jenkins指定的工作區間
b,在Jenkins工作區做一定的加工,例如:簡單的打包(mvn打包)或壓縮文件。
c,將目標產物部署到開發或者生產服務器。通常的做法是遠程ssh目標服務器,上傳產物(war包或者其他文件),遠程啟動服務。
- 配置SVN,下面👇的圖配置的是svn的信息,注意Local module directory指的是相對於Jenkins工作目錄的,如果這里是.代表該job在Jenkins的工作目錄,作為svn更新的目錄。此處的配置和步驟a設置對應。
- 配置在工作區執行任務(通常為打war/jar包壓縮等工作),下圖為簡單的壓縮歸檔打包,--exclude-vcs為不包括svn的配置文件。此步驟和上面的步驟b對應。
對於maven項目來說,這一步為打包,如下圖:
- 第三部通常是傳輸目標產物到服務器(開發或者生產),然后啟動服務等操作。通常是通過ssh到遠程服務器進行。下圖的name為實現配置好的ssh連接,也就是要ssh的服務器。下面的Transfer為目標產物傳輸步驟。
Source files:代表當前Jenkins工作目錄步驟b處理好的產物
Remove prefix:字面意思就是移除目錄前綴,比如:jenkins中目標產物的全路徑是biz-web/target/*.war,但是只想把war拷貝過去,這個時候Remove prefix就填biz-web/target
Remote directory:是相對於ssh目錄的,如果不存在則會在遠程服務器相對於ssh根目錄創建改目錄。
Exec command:就是在遠程server在執行的命令,比如啟動web服務,我們這里有一個用法定期執行服務器上的集計job(由shell調用kettle執行job)