【发布时间】:2018-06-13 16:08:54
【问题描述】:
我的任务是在一个 tomcat Web 服务器上运行两个 Jenkins 实例。在我的 server.xml 文件中,我为两个 Jenkins 设置了 2 个具有不同端口、主机等的服务名称。
但是,我遇到的问题是它们都使用相同的 JENKINS_HOME 目录。第一个例子,我让它使用默认位置(在我的例子中是 /home/jenkins/.jenkins)。第二个实例,我希望它使用/home/jenkins/.j2。但是,我很难做到这一点。
来自我的 server.xml 文件的片段
<!-- first instance of Jenkins. it is using the default Jenkins home and working fine -->
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<!-- trying to force it to use the second Jenkins home for the second instance of Jenkins -->
<!-- got this trick from another stackoverflow answer -->
<Context docBase="/glide/bigdata/tomcat/webapps2/jenkins.war" path="" reloadable="true">
<Environment name="JENKINS_HOME" value="/home/jenkins/.j2" type="java.lang.String"/>
</Context>
<!-- second instance of Jenkins. not working nicely -->
<Service name="j2">
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="j2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps2" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
我可以在 catalina.out 日志文件中看到它正在扩展各自的战争文件,但 JENKINS_HOME 仍然是 /home/jenkins/.jenkins 。 我需要做什么才能使第二个实例使用第二个 Jenkins 主页?提前感谢您的帮助。
【问题讨论】:
-
这可能没有效果,因为我很久没有设置 jenkins 并且不知道设置的用途,但是您是否尝试过为每个设置使用不同的重定向端口?
-
@mad.meesh,不,它没有改变任何东西=(第一个实例是默认设置,所以我将重定向端口号保持不变。我更改了第二个实例,它改变了任何东西更好。
-
啊。没想到会。好吧,我记得还有另一个配置文件……一个更像 bash 的配置。我没记错吗?你应该可以在那里改变变量。问题是
JENKINS_HOME类似于一个类似 bash 的变量,在你在这里发布的 sn-p 中,我根本看不到声明的变量 -
我的意思是我看到你尝试使用
Environment name设置它,但就像我说的,我认为这是在其他地方完成的 -
@mad.meesh,所以默认的 JENKINS_HOME 是 /home/someuser/.jenkins。我让一审接受,这对我来说很好。第二个实例是我想将 JENKINS_HOME 更改为不同目录的地方,因为它们应该是应用程序的两个独立实例。我想我明白你在说什么,有一个名为“setenv.sh”的文件并在其中声明 JENKINS_HOME。问题是,我不希望两者都使用同一个主目录。我希望两者都使用不同的 JENKINS_HOME 目录