如何在Cypress测试脚本中访问Drone CI配置的环境变量
解决Drone Secrets在Cypress测试中无法访问的问题
先说明echo显示****的原因
这是Drone的默认安全行为,会自动屏蔽敏感环境变量的输出,说明你的密钥已经成功注入到构建环境中,无需担心。
正确的配置与访问方式
1. 修改Drone的production.yml配置
Cypress的浏览器进程不会直接继承系统环境变量,需要在启动时显式传递。修改commands部分:
commands: # 替换原echo命令,启动Cypress并传递密钥变量 - npx cypress run --env CYPRESS_CLIENT_KEY_PROD=$CYPRESS_CLIENT_KEY_PROD,CYPRESS_CLIENT_KEY_STAG=$CYPRESS_CLIENT_KEY_STAG
如果项目package.json中有测试脚本(比如"test": "cypress run"),也可以写成:
commands: - npm run test -- --env CYPRESS_CLIENT_KEY_PROD=$CYPRESS_CLIENT_KEY_PROD,CYPRESS_CLIENT_KEY_STAG=$CYPRESS_CLIENT_KEY_STAG
2. 测试文件中正确获取密钥
在Cypress测试代码(.spec.js文件)里,使用Cypress.env()方法传入变量名获取:
export function xClientKey() { return Cypress.env('CYPRESS_CLIENT_KEY_PROD'); };
如果是在Node环境文件(比如cypress.config.js、插件文件)中,则可以用process.env.CYPRESS_CLIENT_KEY_PROD。
3. 额外注意事项
- 确认Drone中配置的密钥已授权给当前仓库使用(仓库设置的Secrets选项卡可查看)
- 不要在测试代码中打印密钥值,既存在泄露风险,也会被Drone自动屏蔽
- Cypress 10+版本中,
Cypress.env()是测试代码获取环境变量的标准方式,不推荐使用点语法Cypress.env.CYPRESS_CLIENT_KEY_PROD
内容的提问来源于stack exchange,提问作者Tamal_bruce
相关产品推荐
相关产品推荐

