我有一个用FAKE、打包和推送到NuGet构建的库。没问题。
现在,我想通过Travis CI在连续模式下完成所有这些,包括"推送"部分。我知道存在安全问题,但似乎我可以通过将NuGet API密钥放在Travis环境变量中来安全地(至少在原则上)做到这一点,因此它不可用于外部拉取请求,并且只有在构建特殊的专用分支时才推送。
问题来了,当FAKE遇到Travis。
- 原来,当我使用Paket。Push helper,整个
paket.exe
命令行作为FAKE的输出发出,完成我的NuGet API密钥。 同时,事实证明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
那能满足你的需要吗?