2016-09-26 76 views
2

我有一个库,我用FAKE构建,打包并推送到NuGet。工作正常。如何抑制部分FAKE输出?

现在,我想通过Travis CI在连续模式下完成所有操作,包括“推”部分。我知道存在安全问题,但似乎我可以通过将NuGet API密钥放置在Travis环境变量中(至少原则上)来安全地进行此操作,因此它是not available to external pull requests,并且仅在构建特殊专用分支时才推送。

问题出现在FAKE遇到Travis时。

  1. 原来,当我使用Paket.Push helper,整个paket.exe命令行发出假冒的输出,完全与我的NuGet API密钥。
  2. 与此同时,事实证明,特拉维斯让任何未经过身份验证的个人可以看到完整的构建日志any project。我的NuGet API密钥就在那里。

我知道,我可以通过它重定向到/dev/null(在.travis.yml)禁止从FAKE输出的整体,但我想保持的输出,只是隐藏与关键特定部分。

我在PaketPushParams structure中找不到任何相关参数,Google也没有找到任何相关参数。接下来的步骤是查看FAKE源代码,看看输出是否有条件,但我想我会先问。我不能成为第一个打人的人。 :-)

回答

2

我也没有找到Google的答案,但我知道或多或少在FAKE源代码中查找的位置,所以我继续做下去。

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

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

这是否做你所需要的?

+0

是的!这工作!非常感谢你! –