使用公共存储库中的Travis-CI构建通知挂钩保留API密钥完整性

Ste*_*ann 11 encryption continuous-integration yaml environment-variables travis-ci

上下文:

我已经开源了一个存储库,由Travis-CI测试.Travis为测试运行提供了构建通知挂钩,因此您可以在IRC,Flowdock,Campfire和HipChat中获得通知.要配置这些挂钩,您必须向.travis.yml配置文件添加设置,这是公共的.对于Hipchat,它看起来像这样:

notifications:
  hipchat: [api token]@[room name]
Run Code Online (Sandbox Code Playgroud)

如果我只是以纯文本形式放置我的令牌,那么每个人都可以看到我的API令牌并访问/垃圾邮件我的聊天室.除此之外,特拉维斯还增加了安全的环境变量.基本上,您可以使用密钥加密字符串并将它们专门绑定到存储库,因此Travis可以访问秘密API密钥.

你在当地做什么:

gem install travis
travis encrypt github-user/repo MY_SECRET_ENV=super_secret
Run Code Online (Sandbox Code Playgroud)

你投入了什么 .travis.yml

secure: <encrypted string here>
Run Code Online (Sandbox Code Playgroud)

问题:

不幸的是,文件是不是过于冗长,谷歌并没有帮助,计算器不帮助还没有,我不能得到这个工作.

这是我的第一次尝试:

travis encrypt github-user/repo HIPCHAT=super_secret

secure: <encrypted string here>
notifications:
  hipchat: <%= ENV['HIPCHAT'] %>@hipchat-room
Run Code Online (Sandbox Code Playgroud)

由于这不起作用,我去了freenode上的travis irc,这就是他们的建议

travis encrypt github-user/repo key@hipchat-room

notifications:
  hipchat:
    secure: <encrypted string here>
Run Code Online (Sandbox Code Playgroud)

你可能已经猜到了(为什么我要再次写这个问题?)这也不起作用.我希望你能帮我解决这个问题.非常感谢你

编辑:我对自己非常怀疑.我试图检查API密钥,它正在工作.这取决于特拉维斯.

2编辑:因为这似乎是一个错误,这里是相应的GitHub问题

sar*_*dne 4

斯蒂芬,

你能尝试一下这个吗:

notifications:
  hipchat:
    - secure: "encrypted string"
Run Code Online (Sandbox Code Playgroud)

如果您不想弄乱提交历史记录,可以将其推送到单独的分支上,Travis 应该为您测试该分支。

——亨里克

  • 字符串解密方式存在错误,因此所有通知引擎都无法访问解密的字符串。现在这个问题已经得到解决。 (2认同)