2

我正在开发一种解决方案,以简化对失败的 Jenkins 构建的手动调试。这涉及通过 SSH 连接到正确的 Jenkins 节点并直接在 WORKSPACE 上进行,这样您就可以交互式地尝试可以解决您的问题的不同更改。

虽然我解决了在正确目录中启动 SSH 会话的问题,但缺少一点:您的 shell 缺少 Jenkins 定义的原始环境变量,这些对于之后运行任何命令至关重要。因此,构建的第一个命令不是set > .envrc将所有内容都保存到这个 shell 文件中。

我的例子是指direnv能够自动加载.envrc文件的工具。出于安全考虑,此工具不会自动加载这些文件并给出消息direnv: error .envrc is blocked. Rundirenv allowto approve its content.

所以我目前的解决方案是direnv allow在进入正确的文件夹后手动运行。

我怎样才能自动化这个,所以我不必输入这个?提示可能没问题,因为它只涉及按一个键而不是键入 ~12。

请注意,我不是被迫使用direnv自己,我对其他解决方案持开放态度。

4

1 回答 1

2

从 v2.15.0 开始,您现在可以使用 direnv 的白名单配置来实现您所描述的:

指定白名单指令将特定目录层次结构或特定目录标记为“受信任” - direnv 将评估任何匹配的 .envrc 文件,无论它们是否被明确允许。应该非常小心地使用此功能,因为任何能够将文件写入该目录的人(包括 VCS 存储库上的协作者)都可以在您的计算机上执行任意代码。

例如,假设包含.envrc要评估而无需运行的 s的目录层次结构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" ]
于 2018-07-19T11:57:35.787 回答