Travis CI可以在同一个仓库的不同货叉中使用加密文件吗?

时间:2015-11-06 01:50:22

标签: github travis-ci

我正在尝试将Travis CI版本用于我自己的私有分支和组织的回购。

我使用travis encrypt-file命令加密了配置文件,它似乎在我自己的fork的travis设置中创建了两个环境变量,如:“encrypted_d1234_key”和“encrypted_d1234_iv”。

当构建运行以解密配置文件时使用它们,如下所示:

openssl aes-256-cbc -K $encrypted_d1234_key -iv $encrypted_d1234_iv -in test.config.enc -out test.config -d

我可以以某种方式将这些安全环境变量复制到我的 org的repo 的设置中,这样构建就可以解密配置文件,无论它是在我的fork还是我的org的fork中。

或者有更好的方法来处理这些情况吗?

这可能与以下问题相同:What do I need for Travis-CI to decrypt secure variables on my fork?

1 个答案:

答案 0 :(得分:3)

我找到了一种方法来实现这一目标。由于您无法获得Travis为您生成的密钥,因此您只需生成自己的密钥即可。然后,加密您的秘密商品并将密钥推送到任何需要它们的私人仓库(以及您信任的成员):

openssl aes-256-cbc -K 1000000000000000000000000000000000000000000000000000000000000001 -iv 10000000000000000000000000000001 -in test.config -out test.config.enc

现在,我们为Travis提供密钥,Travis以per-repo为基础存储它们。这些命令将它们存储在任何设置为" origin"在git:

travis env set encrypted_d1234_key 1000000000000000000000000000000000000000000000000000000000000001
travis env set encrypted_d1234_iv 10000000000000000000000000000001

也将它们存储在您的组织回购中。

travis env set encrypted_d1234_key 1000000000000000000000000000000000000000000000000000000000000001 -r MyOrg/MyRepo
travis env set encrypted_d1234_iv 10000000000000000000000000000001 -r MyOrg/MyRepo

这是(部分)在"手动加密" Encrypting Files文档的一部分。

请注意,有一些Security Restrictions when testing Pull Requests。 Travis为您提供了一个环境变量,因此您可以有条件地跳过需要安全配置的测试。