【发布时间】:2015-10-09 18:08:12
【问题描述】:
我有 .travis.yml 和一些安全(加密)环境变量。现在我需要对这些变量进行解密,以便在不同的项目中使用它们。
有没有简单的方法来做到这一点(除了触发提交并在控制台输出中打印它们)?
【问题讨论】:
标签: travis-ci
我有 .travis.yml 和一些安全(加密)环境变量。现在我需要对这些变量进行解密,以便在不同的项目中使用它们。
有没有简单的方法来做到这一点(除了触发提交并在控制台输出中打印它们)?
【问题讨论】:
标签: travis-ci
我不认为你可以解密它。公钥用于加密数据,只能用travis不提供的私钥解密。
【讨论】:
据我所知,您无法在本地解密,但您可以恢复键/值。从本质上讲,它们必须被解密才能在构建过程中使用。
***********@to2.tmate.io SSH 进入实例
env。这将打印所有环境变量,因此您将不得不挖掘一些安全变量,但它们会在那里。
【讨论】:
.travis.yml 中的解密命令来揭示您的秘密。命令如openssl aes-256-cbc -K $encrypted_..._key -iv $encrypted_..._iv -in secrets.tar.enc -out secrets.tar -d
env获取它,可以吗?
Daniel's answer here 可能会起作用,但出于安全考虑,它依赖于the Debug Mode of Travis CI, which is disabled for public repositories by default。
实际上还有另一种方法。它受到this blog post "RECOVER LOST TRAVISCI VARIABLES – TWO WAYS" 的启发和简化。
先解释一下:
echo $SECRET 不会从控制台日志中显示它,因为 Travis-CI 会扫描所有标准输出并过滤该特定值。 (呃。)
这根本不是一件坏事,因为无论如何您都不希望您恢复的秘密显示在控制台日志中可供全世界使用。解决方案是在需要安装的命令行工具ccrypt 的帮助下,使用另一个 KNOWN_SECRET 对其进行加密。base64 派上用场了,因为它已经在 Travis CI 的构建机器和本地 git bash(如果您在 Windows 上使用 git)或 shell(如果您使用 Linux)中可用。李>
TL;DR:就像 1-2-3 一样简单!
.travis.yml 以包含以下内容。sudo: required
install:
- sudo apt-get install -y ccrypt
- echo $UNKNOWN_SECRET > info.txt
- ccencrypt info.txt -K $KNOWN_SECRET
- cat info.txt.cpt | base64
将上述更改提交到实验分支,并触发 Travis CI 运行。浏览控制台日志,找到该行输出,例如A1B2C3D4...。
在你的本地机器上,运行这个:
echo `A1B2C3D4...` | base64 -d > info.txt.cpt
sudo apt-get install -y ccrypt # If you haven't already
ccrypt –d info.txt.cpt
# When prompt, type in the KNOWN_SECRET, and then you will have info.txt in plain text
【讨论】:
ccrypt 的使用不正确,然后您将其加密了两次?您可以先在本地进行一些试运行以使其正确。