处理环境变量

通常,Jenkins执行的构建脚本以环境变量的形式传递参数。必威国际有限公司例如,参数化的自由式项目将参数值作为环境变量传递给Shell和Batch构建步骤。环境变量的其他常见来源是构建的触发器或原因。如果构建了一个拉请求,那么环境变量可能包含拉请求ID甚至拉请求的名称。

必威国际有限公司Jenkins用户和管理员需要了解涉及环境变量的潜在问题及其对构建行为的影响。

设置特殊环境变量

特殊的环境变量可以改变构建脚本的行为:路径(或路径通常用于查找在构建期间启动的程序,因此重写它的值可能会产生意想不到的效果,因为可能会启动其他通常预期之外的程序。

不太为人所知的变量,比如LD_PRELOAD(在Linux上)DYLD_LIBRARY_PATH(在macOS上)可能有类似的效果。许多其他环境变量被不同的程序读取,设置它们可能会改变行为。

任何可以使用自己选择的名称添加环境变量的用户都可以通过这种方式修改构建的行为。虽然这对于具有Job/Configure权限的用户来说是一个有用的特性,但是管理员应该检查插件是否能够从不需要权限来配置作业的源代码中添加任意环境变量到构建环境中。

设置不安全的环境变量值

不是所有在构建过程中经常调用的脚本和脚本解释器都是为这个用例设计的,可能需要特别小心地过滤或净化环境变量值。

这种问题行为的一个例子是Windows Batch。cmd.exe.默认情况下评估读取变量时的值。包含有效批处理命令的变量值可能导致Jenkins执行这些命令。必威国际有限公司看到这个报告查阅问题概要。而Windows Batch允许以一种防止这个问题的方式编写脚本(使用EnableDelayedExpansion变量!其他脚本或脚本解释器可能不会。此外,管理员可能不希望让每个编写构建脚本的Jenkins用户都意识到这个问题。必威国际有限公司

由于Jenk必威国际有限公司ins 2.248和LTS 2.249.1,管理员可以全局定义用于传递的环境变量的过滤器,以构建支持它们的步骤。内置的shell和Windows批量构建步骤支持这些过滤器,可以提供各种管道步骤管道:节点和进程2.36和更新。此功能可用于更改或删除包含潜在不安全元字符的变量(例如在Windows批处理的情况下)来自这些构建步骤的环境,甚至失败了构建步骤。

下面的插件实现了过滤潜在不安全环境变量的有用功能:



这个页面有用吗?

请通过这个提交你对这个页面的反馈快速形成

或者,如果您不希望填写快速表格,您可以简单地指示您是否找到此页面有用吗?


看到现有的反馈在这里