在travis-ci上使用秘密api密钥


Answers:


99

Travis具有加密环境变量的功能(“加密环境变量”)。这可以用来保护您的秘密API密钥。我已成功将其用于Heroku API密钥。

您所要做的就是安装travis gem,加密所需的字符串,然后在中添加加密的字符串.travis.yml。加密仅对一个存储库有效。该travis命令获取您存储库的公共密钥,然后可以在构建过程中解密该字符串。

gem install --user travis
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo

这将为您提供以下输出:

Please add the following to your .travis.yml file:

  secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g="

12
不要忘记记录您正在使用的变量以及原因,因为一旦对它们进行加密,只有拥有原始密钥的人才能恢复它们。
jerseyboy

2
看起来Travis gem的较新版本更喜欢将其参数以相反的顺序进行:travis encrypt [args..] [options]即,您需要这样做travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo。首先放置选项,最后将要加密的数据显示警告。
乔丹

3
随着选项--add env.globaltravis命令,它会自动修改你的.travis.yml。
托马斯

1
@RamIdavalapati:由于机密已加密,因此认为这是安全的,是的。
奥迪

1
@ Ramesh-X:是的,因为此加密用于TravisCI。如果有人有过TravisCI控制,他们能够获得SECRET_ENV
ODI

7

根据这个特拉维斯CI文档中它说:

如果同时安装了Heroku和Travis CI命令行客户端,则可以从项目目录中运行以下命令来获取密钥,对其进行加密并将其添加到.travis.yml中:

travis encrypt $(heroku auth:token) --add deploy.api_key

请参考以下教程,根据您的操作系统安装heroku客户端


我只想验证:添加到文件中的密钥可以安全地上传到版本控制中,对吗?
vapurrmaid

5

您还可以在存储库设置中定义秘密变量

存储库设置中定义的变量对于所有构建都是相同的,并且当您重新启动旧构建时,它将使用最新值。这些变量不会自动用于派生。

在“存储库设置”中定义变量:

  • 每个存储库都不同。
  • 包含敏感数据,例如第三方凭据。

要在“存储库设置”中定义变量,请确保您已登录,导航到有问题的存储库,从齿轮菜单中选择“设置”,然后在“环境变量”部分中单击“添加新变量”。


1
不了解如何创建秘密变量。谷歌搜索时,结果说明了如何加密。
XedinUnknown

@XedinUnknown这可用于秘密变量。在链接中:“默认情况下,这些新环境变量的值在日志的导出行中隐藏。这与.travis.yml中加密变量的行为相对应。这些变量以加密方式存储在我们的系统中,并且在生成构建脚本时被解密。”
bmaupin

0

使用一组不同的API密钥,并以相同的方式进行操作。您的travis框将为您的构建运行进行设置,然后在构建完成后再次完全拆除。在构建过程中,您具有对盒子的root访问权限,因此您可以使用它进行任何操作。


4
“以同样的方式”是什么意思?我真的不喜欢将API密钥存储在存储库中(即存储在.travis.yml文件中)的想法,但是似乎没有其他方法可以在travis上配置环境变量。
BM5k

env变量将使用公共密钥进行加密,因此只有密钥的所有者才能对其进行解密。您不应该使用重要的令牌。就我而言,我使用的是travis在GitHub上已经拥有的。这很好用,并且在github内部,只要我感到travis有风险,就可以撤消该令牌。在我的仓库中有加密令牌不会使我睡不好。github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
eckes 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.