JENKINS_HOME 环境变量用于 2 个相互冲突的目的

标签 jenkins jenkins-plugins

看起来 Jenkins 将环境变量 $JENKINS_HOME 用于两个不同的目的,并且对于每个目的它将获得不同的值。

目的#1:首先,JENKINS_HOME 是本地文件系统上的一个目录,用于存储 Jenkins 创建的文件。 Jenkins 使用此目录作为磁盘空间来执行构建和保存存档。因此示例值可能是:

export JENKINS_HOME=/var/jenkins

这里描述了这个目的:

目的#2: 还有另一个 Jenkins 使用 JENKINS_HOME 环境变量的例子,那是为了监控外部作业。但是这次 JENKINS_HOME 是一个 URL,像这样:

export JENKINS_HOME=http://user:pw@myserver.acme.org/path/to/jenkins/

这里描述了这个目的:

因此,Jenkins 使用相同的环境变量似乎很奇怪,但它的值会根据用途而改变。我认为外部作业会为环境变量使用另一个名称,例如 JENKINS_URL。我想作为一种解决方法,我可以只在 Servlet 容器(对我来说是 Tomcat)而不是在操作系统中设置环境变量,所以没有冲突。尽管如此,首先存在这种变量冲突这一事实似乎很奇怪。有什么我想念的吗?

最佳答案

这很令人困惑,但第二个目的是在外部进程中监控 Jenkins 作业,而不是在 Jenkins 内部;所以在这种情况下不是 Jenkins 使用 $JENKINS_HOME 值并且没有冲突。不过,他们本可以为变量选择一个更好的名称。

在大多数其他情况下,Jenkins 主 URL 被称为 JENKINS_URL - 请参阅 Jenkins CLI documentation例如。

关于JENKINS_HOME 环境变量用于 2 个相互冲突的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819382/

相关文章:

unity-game-engine - 使用 Jenkins Xcode 插件构建项目时出现异常

python - 在 jenkins 中运行 python 脚本

jenkins - 通过 Jenkins CI 工具执行 AUTO IT EXE

jenkins - 任何预定义的 Jenkins Job 将它们转换为 DSL

docker - Kubernetes Jenkins 交换空间问题

java - 作为 Jenkins 构建的一部分运行 Spock 测试

jenkins - 如何使用groovy在声明性jenkins管道中填充环境变量

testing - 步骤 ‘Run Tests on AWS Device Farm’ 由于异常 : javax.net.ssl.SSLHandshakeException 而中止:无法生成 secret

jenkins - "Trigger builds remotely"在Jenkins中安装Build Token Root Plugin后没有出现

docker - 如何防止容器向全世界公开端口,但可以访问互联网?