在Cake Build中隐藏服务密码

时间:2017-03-13 10:50:34

标签: c# cakebuild

我正在使用Cake构建来构建和部署项目,但在我的脚本中,我有一些服务密码,我不想公开。

是否可以从外部文件(也许是JSON?)中读取密码,我不会将其推送给Github?所以这个文件只能在我的电脑里。

有没有一种标准的方法可以用Cake做到这一点?

1 个答案:

答案 0 :(得分:9)

最简单的方法是将该密码存储为运行构建的系统上的环境变量。然后,您可以使用EnvironmentVariable别名来请求该值,然后在您的脚本中使用它:

http://cakebuild.net/api/Cake.Common/EnvironmentAliases/F508FA2B

这就是我们如何存储/使用与Cake本身的构建过程相关的秘密。请看这里的例子:

https://github.com/cake-build/cake/blob/develop/build/credentials.cake#L15

从此链接中获取以下代码段:

public static BuildCredentials GetGitHubCredentials(ICakeContext context)
{
    return new BuildCredentials(
        context.EnvironmentVariable("CAKE_GITHUB_USERNAME"),
        context.EnvironmentVariable("CAKE_GITHUB_PASSWORD"));
}

我们正在读取两个环境变量,用户名和密码,然后在脚本执行中使用。

注意: context变量的存在是由于我们正在辅助函数中完成工作,其中主要的Cake Context作为参数传入。如果您直接在其中一个任务中访问Environment别名,则不需要这样做。

假设您正在使用某种形式的持续集成,那么可能有办法通过配置文件或通过用户界面以安全的方式指定这些环境变量的值。