我正在开发一种解决方案,简化了失败的Jenkins构建的实际调试。这涉及SSH到正确的Jenkins节点并直接进入WORKSPACE,这样您就可以交互式地尝试可以解决问题的不同更改。
虽然我解决了在正确的目录中启动SSH会话的问题,但是有一个缺失的部分:您的shell缺少Jenkins定义的原始环境变量,这些对于在此之后运行任何命令至关重要。因此,构建的第一个命令不是set > .envrc
,而是将所有命令保存到此shell文件中。
我的示例是指direnv
工具,它可以自动加载.envrc
个文件。出于安全考虑,此工具不会自动加载这些文件并提供消息direnv: error .envrc is blocked. Run
direnv allow to approve its content.
所以我目前的解决方案是在最终到达正确的文件夹后手动运行direnv allow
。
如何自动执行此操作,因此我不必输入此内容?提示可能没问题,因为它只涉及按一个键而不是键入~12。
请注意,我没有被迫使用direnv
本身,我愿意接受其他解决方案。
答案 0 :(得分:0)
从v2.15.0开始,您现在可以使用direnv的whitelist configuration来实现您所描述的内容:
指定白名单指令可标记特定的目录层次结构 或“受信任”的特定目录-direnv将评估任何 匹配.envrc文件,无论它们是否 特别允许。应谨慎使用此功能,因为 任何能够将文件写入该目录的人(包括 VCS储存库上的合作者)将能够执行任意 计算机上的代码。
例如,假设包含要评估而无需运行direnv allow
的{{1}} s的目录层次结构位于/home/foo/bar
下。
创建文件/home/foo/.config/direnv/config.toml
,使其包含以下内容:
[whitelist]
prefix = [ "/home/foo/bar" ]
或者,如果您有一个要列入白名单的特定路径的固定列表,则可以使用exact
而不是prefix
:
[whitelist]
exact = [ "/home/foo/projectA", "/home/foo/projectB" ]