我使用ansible-test
在github上测试我的收藏集(使用Actions)。对于与外部API的集成测试,它需要一个秘密(令牌)。通常,我将环境变量用于CI中的机密,但是ansible-test
在运行任何测试之前会有意清除它们。
我绝对不想使用普通的cat $SECRET > secret
,因为它可能会错误地在Galaxy上存档/发布。
有没有安全的方法可以将机密传递给集成角色?
答案 0 :(得分:1)
我只是花了一些时间试图弄清楚同样的事情。
基本上不可能以安全的方式将 GHA 的机密传递给 ansible-test
。
环境变量不会暴露给 ansible-test
,请参阅:https://docs.ansible.com/ansible/latest/dev_guide/testing_running_locally.html#environment-variables
您也不能将它们作为选项或参数传递给 ansible-test
。
最好的办法(虽然不安全)是用 integration_config.yml
传递这些变量:https://docs.ansible.com/ansible/latest/dev_guide/testing_integration.html#integration-config-yml
答案 1 :(得分:0)
是的,GitHub为此提供了秘密。 来自https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsenv
steps:
- name: My first action
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FIRST_NAME: Mona
LAST_NAME: Octocat
您还可以通过bash将它们传递给任何命令。您最多可以创建100个机密。
答案 2 :(得分:0)
按照与 rndmh3ro
相同的方法,我创建和 integration_config.yml.tpl
文件如下:
---
my_var: ${MY_VAR}
my_other_var: ${MY_OTHER_VAR}
我使用以下 bash 脚本 integration_config.sh
#!/bin/bash
cd "$(dirname "$0")"
truncate -s 0 integration_config.yml
while read -r line;
do
echo $line
eval 'echo "'"$line"'" >> integration_config.yml'
done < "integration_config.yml.tpl"
# !! Don't forget the trailing blank line in your template
echo ""
echo "=>"
echo ""
cat integration_config.yml
而且效果很好:)