如何在部署作业后获取作业中的环境URL?

时间:2018-04-17 14:14:14

标签: gitlab gitlab-ci

我在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.comhttp://myprod.com,具体取决于之前的部署作业。但它是空的,似乎$CI_ENVIRONMENT_URL仅在部署作业中可用。

是否可以将作业中的变量传递给下一个作业?

1 个答案:

答案 0 :(得分:4)

您可以使用artifacts功能:将$CI_ENVIRONMENT_URL写入文件:

echo $CI_ENVIRONMENT_URL > environmentUrl.txt

将其保存为工件,然后在下一个作业中读取它:

$CI_ENVIRONMENT_URL=`cat environmentUrl.txt`