You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bitbucket Pipeline中使用环境变量运行Cypress测试

Bitbucket Pipeline配置Cypress环境变量解决方法

针对你在Bitbucket Pipeline中配置Cypress测试时无法读取环境变量的问题,这里给你几个实用的解决办法:

1. 确认部署变量配置有效性

先检查Bitbucket仓库的仓库设置>部署页面,确保dev和qa环境下都添加了对应变量(比如username、password等),变量名称要和你测试代码里Cypress.env('变量名')的名称完全一致,并且勾选了"在管道中可用"的选项。

2. 生成cypress.env.json文件(适配本地逻辑)

因为本地是通过cypress.env.json传递变量,你可以在Pipeline脚本里直接生成这个文件,把Bitbucket的部署变量写入进去:
在Pipeline的script段中添加生成命令:

# 根据测试需求添加所有用到的环境变量
echo '{"username": "'"$username"'", "password": "'"$password"'"}' > cypress.env.json

这样Cypress运行时会自动读取这个文件里的变量,和本地运行逻辑完全一致。

3. 直接通过命令行传递变量(更简洁)

不需要生成文件,直接在运行Cypress命令时通过--env参数传递变量:

  • 可以修改package.json里的脚本:
"scripts": {
  "cy:run:dev": "cypress run --env username=$username,password=$password"
}
  • 或者直接在Pipeline脚本里执行:
npx cypress run --env username=$username,password=$password

4. 修正现有Pipeline的语法错误

你提供的配置里echo语句有语法问题,会导致脚本中断,要改成:

echo "username is $username"

修正后的完整Pipeline示例

image: cypress/included:10.7.0
pipelines:
  branches:
    pipeline-update-hn:
      - step:
          name: 'Run smartUi tests on Dev environment'
          deployment: dev
          script:
            - echo "username is $username"
            - npm ci
            # 方式1:生成cypress.env.json
            - echo '{"username": "'"$username"'", "password": "'"$password"'"}' > cypress.env.json
            - npm run cy:run:dev
            # 方式2:直接传递变量,替换上面两行
            # - npx cypress run --env username=$username,password=$password
          artifacts:
            - cypress/screenshots/**
            - cypress/videos/*
      # 新增QA环境测试步骤
      - step:
          name: 'Run smartUi tests on QA environment'
          deployment: qa
          script:
            - echo "username is $username"
            - npm ci
            - echo '{"username": "'"$username"'", "password": "'"$password"'"}' > cypress.env.json
            - npm run cy:run:qa
          artifacts:
            - cypress/screenshots/**
            - cypress/videos/*

注意事项

  • 敏感变量Bitbucket会自动加密,无需额外处理;
  • 确保变量名称在测试代码、Bitbucket部署变量、Pipeline脚本中完全一致;
  • 如果使用npm ci,要确保package-lock.json已经提交到仓库。

内容的提问来源于stack exchange,提问作者Heta Nanawala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:15:53