Encryption 在公共存储库中使用Travis CI构建通知挂钩保持API密钥完整性 背景:

Encryption 在公共存储库中使用Travis CI构建通知挂钩保持API密钥完整性 背景:,encryption,continuous-integration,environment-variables,yaml,travis-ci,Encryption,Continuous Integration,Environment Variables,Yaml,Travis Ci,我有,这是由特拉维斯CI测试的。Travis为测试运行提供了挂钩,因此您可以在IRC、Flowdock、Campfire和HipChat中获得通知。要配置这些挂钩,您必须将设置添加到.travis.yml配置文件中,该文件是公共的。对于Hipchat,它如下所示: notifications: hipchat: [api token]@[room name] 如果我把我的令牌以明文形式放在那里,每个人都可以看到我的API令牌并访问/垃圾邮件我的聊天室。这就是为什么特拉维斯补充说。基本上,您

我有,这是由特拉维斯CI测试的。Travis为测试运行提供了挂钩,因此您可以在IRC、Flowdock、Campfire和HipChat中获得通知。要配置这些挂钩,您必须将设置添加到
.travis.yml
配置文件中,该文件是公共的。对于Hipchat,它如下所示:

notifications:
  hipchat: [api token]@[room name]
如果我把我的令牌以明文形式放在那里,每个人都可以看到我的API令牌并访问/垃圾邮件我的聊天室。这就是为什么特拉维斯补充说。基本上,您可以使用密钥加密字符串,并将它们专门绑定到存储库,这样Travis就可以访问机密API密钥

您在当地的工作:

gem install travis
travis encrypt github-user/repo MY_SECRET_ENV=super_secret
您在
.travis.yml中输入的内容

secure: <encrypted string here>
由于这不起作用,我去了freenode上的travis irc,然后

travis加密github用户/repokey@hipchat-房间

notifications:
  hipchat:
    secure: <encrypted string here>
通知:
hipchat:
安全:
正如你可能已经猜到的(为什么我要再次写这个问题?),这也不起作用。 我希望你能帮我解决这个问题。多谢各位

编辑:我对自己很怀疑。我检查了API密钥,它正在工作。由特拉维斯决定

2Edit:由于这似乎是一个bug,这里是相应的Stephan

你能试试这个吗

notifications:
  hipchat:
    - secure: "encrypted string"
如果您不想把提交历史记录弄得乱七八糟,可以将其推到单独的分支上,Travis应该为您测试该分支


--Henrik

字符串解密的方式存在错误,因此任何通知引擎都无法访问解密的字符串。此问题现已解决。此处对安装过程有更全面的描述:
notifications:
  hipchat:
    - secure: "encrypted string"