我在gitlab-CI中运行end2end测试,请参阅https://docs.cypress.io/guides/guides/continuous-integration.html。
我在部署应用程序后运行它。
它运作良好,但我想更改基本网址,以便针对我的prod或我的暂存环境运行它。可以通过环境var传递给测试。
我不想为每个环境编写测试作业,然后我想通过env var获取环境URL,但$CI_ENVIRONMENT_URL
仅在部署作业上可用,而不是在下一个作业中。
deploy-prod:
stage: deploy
script:
- some commands
environment:
name: prod
url: http://myprod.com
only:
- master
deploy-staging:
stage: deploy
script:
- some other commands
environment:
name: staging
url: http://mystaging.com
only:
- staging
test:
stage: after-deploy
script:
- CYPRESS_baseUrl=$CI_ENVIRONMENT_URL cypress run
我希望$CI_ENVIRONMENT_URL
等于http://mystaging.com或http://myprod.com,具体取决于之前的部署作业。但它是空的,似乎$CI_ENVIRONMENT_URL
仅在部署作业中可用。
是否可以将作业中的变量传递给下一个作业?
答案 0 :(得分:4)
您可以使用artifacts功能:将$CI_ENVIRONMENT_URL
写入文件:
echo $CI_ENVIRONMENT_URL > environmentUrl.txt
将其保存为工件,然后在下一个作业中读取它:
$CI_ENVIRONMENT_URL=`cat environmentUrl.txt`