我有.travis.yml
一些安全(加密)的env变量。现在我需要解密这些变量以在不同的项目中使用它们。
有没有简单的方法(触发提交并在控制台输出中打印它们除外)?
答案 0 :(得分:22)
您不能从我理解的本地解密,但您可以恢复键/值。从本质上讲,它们必须经过解密才能在构建过程中使用。
***********@to2.tmate.io
env
。这将打印所有环境变量,因此您必须为您的安全变量挖掘一些,但它们会在那里。
答案 1 :(得分:18)
我认为你不能解密它。公钥用于加密数据,只能用travis无法提供的私钥解密。
答案 2 :(得分:1)
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会扫描所有标准输出并过滤该特定值。 (Du)
这根本不是一件坏事,因为无论如何您都不希望控制台日志中显示的已恢复机密可供世界使用。解决方案是在需要安装的命令行工具ccrypt
的帮助下,使用另一个KNOWN_SECRET对其进行加密。base64
十分方便,因为它已经在Travis CI的构建机器上,本地git bash(如果在Windows上使用git)或外壳程序(如果使用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