1. 程式人生 > >jenkins 配置工作目錄

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-nameJENKINS_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的值會變化。
jessionid
看了下各個值,覺得瀏覽器可能根據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/

注:如果一開始就知道這個cookieJSESSIONID會衝突的問題,可以在jenkins.war包未解壓時,更名為jenkins_xx.war也能達到相同的效果。