jenkins 配置工作目录
最近多个项目都要用jenkins,部署在同一台服务器上。由于各项目间有冲突,需要调整每个项目的jenkins工作目录。1、在tomcat目录下的 conf目录,新建一个jenkins.xml 配置文件,配置JENKINS_HOME<Context docBase="/usr/local/xxx/apache-tomcat-9.0.4/weba
最近多个项目都要用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, 至此新的工作目录已经配置好了。新配置的工作目录下,生成了一堆文件。
[root@test-cdh 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
也能达到相同的效果。
更多推荐
所有评论(0)