首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改jenkins根配置config.xml位置

更改jenkins根配置config.xml位置
EN

Stack Overflow用户
提问于 2018-11-24 00:33:16
回答 1查看 500关注 0票数 0

我正在设置一个定制的Jenkins。我的家是jenkins

代码语言:javascript
复制
echo $JENKINS_HOME
/srv/jenkins

这意味着我的config.xml文件的位置是

代码语言:javascript
复制
$JENKINS_HOME/config.xml
/srv/jenkins/config.xml

但我想让詹金斯从下面读取config.xml文件

代码语言:javascript
复制
$$JENKINS_HOME/config/config.xml
/srv/jenkins/config/config.xml

你可能会问为什么?因为这是一个自定义的Jenkins,所以我在运行时在Kubernetes上的Helm图表中部署了config.xml文件,该文件将根据不同团队的自定义进行更改。我希望这个文件在我完成pod启动的InitContainer阶段的修改后仍然有效。

我试过的一件事就是创建一个软链接

代码语言:javascript
复制
jenkins@25bea2ece6a9:~$ cd /srv/jenkins/
jenkins@25bea2ece6a9:~$ ls -ltrh | grep config.xml
lrwxrwxrwx 1 jenkins root      30 Nov 23 16:01 config.xml -> /srv/jenkins/config/config.xml

当我启动Pod时,这个链接是存在的,但是在10秒内,Jenkins用一个实际的文件覆盖了这个链接,并且我的所有配置都被覆盖了。

那么,我可以告诉jenkins从其他地方读取config.xml文件吗?

EN

回答 1

Stack Overflow用户

发布于 2018-11-26 19:39:19

不,config.xml在源代码中是硬编码的,除非你想自己重新编译Jenkins,否则无法做到这一点。config.xml是由jenkins在加载时编写的。

从事代码插件配置工作的优秀人员希望将这一理念带给jenkins,但在它稳定之前(目前还不稳定),您必须使用init.groovy脚本来实现自动化。

Jenkins目前通过groovy钩子(https://wiki.jenkins.io/display/JENKINS/Groovy+Hook+Script)提供对其初始化的访问

你可以做的是编写init.groovy脚本,它可以在复制的配置上发出reload命令。

您可以使用初始化状态来完成此操作:

代码语言:javascript
复制
import hudson.init.InitMilestone

if(Jenkins.instance.getInitLevel() == InitMilestone.COMPLETED){
  // copy config.xml
  Jenkins.instance.reload()
} else { 
  // sleep for a while, do some other stuff
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53450203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档