在CircleCI

时间:2016-08-01 22:31:22

标签: python circleci

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

CircleCI还支持输入环境变量(CircleCI Environment Variables)。不要将环境变量的值放在代码中,而是转到项目设置 - &gt;环境变量。然后只需单击添加名称和值的变量。您可以通过名称正常访问环境变量。