Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get environment URL in a job after the deployment job?

I run an end2end test in gitlab-CI , see https://docs.cypress.io/guides/guides/continuous-integration.html.

I run it after I deploy my app.

It works well but I want to change the base url in order to run it against my prod or my staging env. It is possible via an environment var passed to the test.

I don’t want to write a test job per environment, then I would like to get the environment URL via env var, but the $CI_ENVIRONMENT_URL is only available on the deploy job, not in the next one.

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

I expect $CI_ENVIRONMENT_URL equal http://mystaging.com or http://myprod.com depending the previous deploy job has been run. But it is empty, seems $CI_ENVIRONMENT_URL is only available in deploy job.

Is it possible to pass a variable from on job to a next job?

like image 535
Sylvain PRAS Avatar asked Nov 15 '25 13:11

Sylvain PRAS


1 Answers

You can use artifacts feature: write the $CI_ENVIRONMENT_URL in a file:

echo $CI_ENVIRONMENT_URL > environmentUrl.txt

save it as artifact, and then read it in the next job:

$CI_ENVIRONMENT_URL=`cat environmentUrl.txt`
like image 97
rpadovani Avatar answered Nov 18 '25 21:11

rpadovani



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!