赛普拉斯:使用 bitbucket 管道更改 baseUrl(命令行)

Cypress: Change baseUrl with bitbucket pipeline (command line)

我们正在使用 Cypress 和 Bitbucket 管道。我们有几个开发环境,我想根据我通过 Bitbucket 管道 select 的分支动态更改基础url。

Bitbucket 管道中 运行 Cypress 命令的脚本如下所示:

script:
          - ./hybris-url-mapping.sh $CYPRESS_BASE_URL
          - cd /working
          - npx cypress run  --env baseUrl=$CYPRESS_BASE_URL

应该根据 selected 分支更改 URL 的脚本 (./hybris-url-mapping.sh) 如下所示

if [[ $BITBUCKET_BRANCH == 'develop' ]]; then CYPRESS_BASE_URL="develop_url" ; fi
if [[ $BITBUCKET_BRANCH == 'staging' ]]; then CYPRESS_BASE_URL="staging_url" ; fi
if [[ $BITBUCKET_BRANCH == 'staging2' ]]; then CYPRESS_BASE_URL="staging2_url" ; fi
if [[ $BITBUCKET_BRANCH == 'release' ]]; then CYPRESS_BASE_URL="prod_url" ; fi
echo $CYPRESS_BASE_URL

现在我们来解决问题。不幸的是它不起作用。至少在 echo $CYPRESS_BASE_URL 中,根据分支返回了正确的 URL,但在命令行 npx cypress run --env baseUrl=$CYPRESS_BASE_URL 中未设置为 baseUrlcypress.json中的url总是被使用:

{
  "baseUrl": "local_url"
}

我试过 npx cypress run --env baseUrl=$CYPRESS_BASE_URL 并且 npx cypress run --config baseUrl=$CYPRESS_BASE_URL 但都不起作用。 我做错了什么?

您在另一个 shell 中设置变量 CYPRESS_BASE_URL,因此当 hybris-url-mapping.sh 退出时,它不会导出到父 shell。这是一项安全功能,无法更改。

唯一的方法是回显它并执行命令替换:

$ CYPRESS_BASE_URL=$(./hybris-url-mapping.sh)

或:

$ CYPRESS_BASE_URL=`./hybris-url-mapping.sh`

在这一行之后,您将在 CYPRESS_BASE_URL 中得到您在 hybris-url-mapping.sh 中回显的任何内容。