如何抑制部分FAKE输出?

时间:2016-09-26 01:40:24

标签: f# travis-ci f#-fake paket

我有一个库,我用FAKE构建,打包并推送到NuGet。工作正常。

现在,我想做所有这些,包括"推"部分,在连续模式下,通过Travis CI。我知道存在安全问题,但似乎我可以通过将NuGet API密钥放在Travis环境变量中来安全地(至少在原则上)这样做,所以它是not available to external pull requests,并且只在建立一个专门的专门分支。

当FAKE遇见特拉维斯时,问题出现了。

  1. 事实证明,当我使用Paket.Push helper时,整个paket.exe命令行将作为FAKE的输出发出,并使用我的NuGet API密钥完成。
  2. 与此同时,事实证明Travis允许任何未经过身份验证的爱管闲事的人查看any project的完整构建日志。我的NuGet API密钥就在那里。
  3. 我知道我可以通过将其重定向到/dev/null.travis.yml)来禁用FAKE的整个输出,但我希望保留大多数输出,只需用密钥隐藏该特定部分。

    我在PaketPushParams structure中找不到任何相关参数,谷歌也没有找到任何相关参数。下一步是查看FAKE源代码,看看输出是否有条件,但我想我先问。我无法成为第一个达到此目标的人。 : - )

1 个答案:

答案 0 :(得分:2)

我也没有找到Google的答案,但我确实知道在哪里查看FAKE源代码,所以我继续这样做。

实际运行相关任务看起来像Paket.Push helper calls ExecProcessExecProcess最终调用ExecProcessWithLambdas来完成工作,ExecProcessWithLambdas中的行将进程名称和参数输出到FAKE日志checks the enableProcessTracing variable first,并且不会输出进程如果该变量为false,则为name和arguments。 enableProcessTracing变量为undocumented, but mutable,因此您应该可以设置它。我自己还没有尝试过,但原则上你应该可以这样做:

ProcessHelper.enableProcessTracing <- false // Logging off
// Do security-sensitive work here
ProcessHelper.enableProcessTracing <- true  // Logging back on for rest of build

这样做你需要的吗?