如何抑制部分FAKE输出



我有一个用FAKE、打包和推送到NuGet构建的库。没问题。

现在,我想通过Travis CI在连续模式下完成所有这些,包括"推送"部分。我知道存在安全问题,但似乎我可以通过将NuGet API密钥放在Travis环境变量中来安全地(至少在原则上)做到这一点,因此它不可用于外部拉取请求,并且只有在构建特殊的专用分支时才推送。

问题来了,当FAKE遇到Travis。

  1. 原来,当我使用Paket。Push helper,整个paket.exe命令行作为FAKE的输出发出,完成我的NuGet API密钥。
  2. 同时,事实证明Travis允许任何未经认证的爱管闲事的人看到任何项目的完整构建日志。我的NuGet API密钥就在那里。

我知道我可以通过将其重定向到/dev/null(在.travis.yml中)来禁用FAKE的整个输出,但我想保留大部分的输出,只是用密钥隐藏特定部分。

我在PaketPushParams结构中找不到任何相关参数,Google也没有显示任何内容。下一步是查看FAKE源代码,看看输出是否有条件,但我想我应该先问一下。我不可能是第一个碰到这种情况的人。: -)

我也没有在Google上找到答案,但我确实或多或少知道在哪里查找FAKE源代码,所以我继续做了。

它看起来像Paket。Push helper调用ExecProcess来实际运行相关任务。ExecProcess最终调用ExecProcessWithLambdas来完成这项工作,ExecProcessWithLambdas中将进程名和参数输出到FAKE日志的行首先检查enableProcessTracing变量,如果该变量为假,则不会输出进程名和参数。enableProcessTracing变量没有文档记录,但它是可变的,所以您应该能够设置它。我自己还没有尝试过,但原则上你应该能够这样做:

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

那能满足你的需要吗?

相关内容

  • 没有找到相关文章

最新更新