我正在开发一种解决方案,以简化失败的Jenkins构建的动手调试。这涉及到SSH到正确的Jenkins节点并直接在WORKSPACE上进行,因此您可以交互地尝试可以解决问题的不同更改。
当我解决了在正确的目录中启动SSH session 的问题时,有一点遗漏:您的shell遗漏了Jenkins定义的原始环境变量,这些对于之后运行任何命令都是至关重要的。因此,构建的第一个命令不是set > .envrc
,它会将所有内容保存到此shell文件中。
我的示例涉及direnv
工具,该工具能够自动加载.envrc
文件。出于安全方面的考虑,该工具不会自动加载这些文件,并显示一条消息direnv: error .envrc is blocked. Run
direnv allow to approve its content.
因此,我当前的解决方案是在正确的文件夹中结束后手动运行direnv allow
。
我该如何自动执行此操作,因此不必键入它?提示可能没问题,因为它只涉及按一个键而不是键入〜12。
请注意,我没有被迫使用direnv
本身,我接受其他解决方案。
最佳答案
从v2.15.0开始,您现在可以使用direnv的whitelist configuration实现您所描述的内容:
例如,假设包含要评估而无需运行.envrc
的direnv allow
的目录层次结构位于/home/foo/bar
下。
创建文件/home/foo/.config/direnv/config.toml
,使其包含以下内容:
[whitelist]
prefix = [ "/home/foo/bar" ]
或者,如果您有一个要列入白名单的特定路径的固定列表,则可以使用
exact
而不是prefix
:[whitelist]
exact = [ "/home/foo/projectA", "/home/foo/projectB" ]