如何修改Jenkins插件以阻止它在构建页面上放置链接?

时间:2014-10-14 19:49:33

标签: java jenkins jenkins-plugins

我正在尝试修改现有的EnvInject插件,以便隐藏它在构建页面上的Environment Variables链接。如果我正确理解Jenkins API,我应该能够通过找到Action接口的实现位置并让getIconFileName()返回null来实现此目的。

我发现该方法在EnvInjectAction.java中实现并修改为返回null,但这没有效果 - 链接在构建页面上仍然可见。我甚至尝试修改getDisplayName()getUrlName()也返回null,但这也没有效果。以下是修改后的方法:

public String getIconFileName() {
        return null;
}

我已经注意遵循Jenkins插件教程中deploying a custom build of a core plugin的说明,我也尝试重新启动Jenkins运行的机器,但都无济于事。

我显然缺少一些重要的东西,但我无法弄清楚它可能是什么。我还需要做些什么来使插件显示环境变量链接?

2 个答案:

答案 0 :(得分:1)

你为什么要这样做?隐藏敏感信息?

您是否意识到即使您删除了链接,也可以通过以下方式显示变量:
http://jenkins/job/YourJob/1/injectedEnvVars

或根据EnvInjectPlugin-VariablesTraceability

&#34;您还可以通过以下方式获取构建环境变量 HTTP GET URL: <jenkins_url>/job/<job_name>/<build_number>/injectedEnvVars/export&#34;

但是,如果仅删除链接并修改插件,则必须将以下内容添加到Jenkins&#39; run/jenkins/war/css/style.css

a[href*='/injectedEnvVars'] {
  display: none;
}

制作适应style.css的备份副本,因为它可能会被:

覆盖
$ sudo service jenkins --full-restart

更新

您可以使用具有以下内容的自定义CSS:

管理Jenkins →配置系统→主题主题CSS的网址...

答案 1 :(得分:0)

作为克服评论限制的答案。

我查看了该插件的来源,我可以说我已选择EnvInjectAction.java's getDisplayName()来应用这些更改。因为它包含return "Environment Variables";,并且是整个项目中唯一包含该字符串的文件。

我注意到EnvIinjectAction已被弃用,但无论如何都不会造成任何伤害。

您是否尝试返回空字符串或任意字符串进行测试而不是null。也许Jenkins本身不喜欢这种方法返回null。 (但接下来的问题是,为什么它仍然会显示插件的原始字符串。)

我甚至下载了jenkins-1.585核心源并搜索了getDisplayName()的调用,以检查返回的值是如何处理的,但src/main/java.中有332个我仍在尝试查找合适的。

您是否在计算机上的本地Jenkins上尝试了更改的插件?在不是由您自己维护的服务器上安装插件时可能出现了问题。

您是否考虑过contacting the maintainer Gregory Boissinot?