jenkins 配置工作目錄
最近多個專案都要用jenkins,部署在同一臺伺服器上。由於各專案間有衝突,需要調整每個專案的jenkins工作目錄。
1、在tomcat目錄下的 conf目錄,新建一個jenkins.xml 配置檔案,配置JENKINS_HOME
<Context docBase="/usr/local/xxx/apache-tomcat-9.0.4/webapps/jenkins.war"> <Environment name="JENKINS_HOME" type="java.lang.String" value="/usr/local/xxx/apache-tomcat-9.0.4/jenkins_home" override="true"/> <Context>
上述配置中,docBase="/usr/local/xxx/apache-tomcat-9.0.4/webapps/jenkins.war"
這一段是jenkins.war包的絕對路徑;value="/usr/local/xxx/apache-tomcat-9.0.4/jenkins_home"
這一段是配置新的工作目錄的絕對路徑;
配置好後,若之前從未啟動過jenkins,那麼先啟動服務;
啟動完成後,/webapps/目錄下會生成jenkins目錄(若Jenkins.war包在webapps/目錄),而後在jenkins目錄中修改WEB-INF/web.xml
檔案。
配置env-entry-name
為JENKINS_HOME
env-entry-value
為新的工作目錄。
<env-entry>
<env-entry-name>JENKINS_HOME</env-entry-name> <env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/usr/local/xxx/apache-tomcat-9.0.4/jenkins_home</env-entry-value>
</env-entry>
上述操作完畢後,重啟tomcat, 至此新的工作目錄已經配置好了。新配置的工作目錄下,生成了一堆檔案。
[[email protected] jenkins_home]# ls
config.xml jenkins.CLI.xml jobs nodeMonitors.xml queue.xml.bak secrets
hudson.model.UpdateCenter.xml jenkins.install.InstallUtil.lastExecVersion jobs20181126.zip nodes secret.key userContent
identity.key.enc jenkins.install.UpgradeWizard.state logs plugins secret.key.not-so-secret users
jenkins工作目錄配置完畢了,卻遇到了新的問題:
配置了三個專案A,B,C;配置好後在谷歌瀏覽器下訪問各個專案。按照上述的配置規則,訪問url為:http://ip:port/jenkins/
。由於都在同一伺服器上,所以ip
是一樣的,所不同的是port
。
這引起了一個小麻煩。當你訪問A專案時,重新整理已登陸的B/C專案時,會發現B/C專案會退出登入。第一反應是配置項等可能有衝突,抱著試試看的想法,A專案用谷歌瀏覽器開啟,B專案用火狐瀏覽器開啟,發現功能正常,並不會出現兩個不能同時線上狀態的情況。
於是乎,想到了可能是瀏覽器儲存的COOKIE等衝突了。通過觀察發現,在同一瀏覽器訪問不同專案時,cookie
中的JSESSIONID
的值會變化。
看了下各個值,覺得瀏覽器可能根據Domain
+Path
這兩個欄位來區分。同一臺伺服器下,Domain
不可變化,只能更改Path
。經測試,更改Path
後,以上問題得到解決。
更改Path
操作如下:
1、進入專案目錄,關閉服務;
2、修改進入webapp
目錄下
3、若存在jenkins.war包,則刪除該war包,或者更改字尾名(例如:jenkins.bak)
4、修改jenkins
目錄名為 jenkins_xx
5、啟動服務
6、由於專案名稱由原來的jenkins
更名為 jenkins_xx
,所以瀏覽器訪問地址也需更改:http://ip:port/jenkins_xx/
注:如果一開始就知道這個cookie
中JSESSIONID
會衝突的問題,可以在jenkins.war
包未解壓時,更名為jenkins_xx.war
也能達到相同的效果。