我正在尝试使用CircleCI来运行自动化测试。我有一个config.yml文件包含秘密,我不想出于obvius原因上传到我的仓库。
因此,我在“项目设置”部分创建了一组env varialbes:
VR_API_KEY = some_value
CLARIFAI_CLIENT_ID = some_value
CLARIFAI_CLIENT_SECRET = some_value
IMAGGA_API_KEY = some_value
IMAGGA_API_SECRET = some_value
config.yml,我删除了实际值,看起来像这样
visual-recognition:
api-key: ${VR_API_KEY}
clarifai:
client-id: ${CLARIFAI_CLIENT_ID}
client-secret: ${CLARIFAI_CLIENT_SECRET}
imagga:
api-key: ${IMAGGA_API_KEY}
api-secret: ${IMAGGA_API_SECRET}
我有一个基本上创建API客户端实例并配置所有内容的测试,此测试失败,因为它看起来像CircleCI没有正确替换值...这里是一些打印的输出(这是当值是从config.yml读取)
-------------------- >> begin captured stdout << ---------------------
Checking tagger queries clarifai API
${CLARIFAI_CLIENT_ID}
${CLARIFAI_CLIENT_SECRET}
COULD NOT LOAD: 'UNAUTHORIZED'
--------------------- >> end captured stdout << ----------------------
可能没有加载:'UNAUTHORIZED'是预期的,因为无效的凭据会导致Oauth舞蹈失败
任何线索?谢谢!
意思是没有替代,因此所有测试都会失败....我在这里做错了...顺便说一下,我还没有circle.yml文件......我需要一个吗? ?
谢谢!
编辑:如果有人遇到同样的问题,解决方案相当简单,我已经简单地加密了config.yml文件,如下所示
https://github.com/circleci/encrypted-files
然后在circle.yml中添加一条指令给decypher,并将输出文件命名为config.yml ...就是这样!
dependencies:
pre:
# update locally with:
# openssl aes-256-cbc -e -in secret-env-plain -out secret-env-cipher -k $KEY
- openssl aes-256-cbc -d -in config-cipher -k $KEY >> config.yml
答案 0 :(得分:0)
CircleCI还支持输入环境变量(CircleCI Environment Variables)。不要将环境变量的值放在代码中,而是转到项目设置 - &gt;环境变量。然后只需单击添加名称和值的变量。您可以通过名称正常访问环境变量。