赛普拉斯:使用 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
中未设置为 baseUrl
。 cypress.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
中回显的任何内容。
我们正在使用 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
中未设置为 baseUrl
。 cypress.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
中回显的任何内容。