mymusise
mymusise

Reputation: 399

How to define the environment variable in environments url [Gitlab CI]

Help, please. I have problems when using the CI tool.

Here's my .gitlab-ci.yaml

stages:
  - test

test:
  stage: test
  environment:
    name: test
    url: https://word.mymusise.com/env_test.txt
  script: echo "Running tests TEST=$TEST"

And I've define the test environment in EnvDocker > Pipelines > Environments

But it didn't export the environment from https://word.mymusise.com/env_test.txt in the CI job.

Running with gitlab-runner 11.4.2 (cf91d5e1)
  on gitlab-ci runner a0e18516
Using Docker executor with image ubuntu:16.04 ...
Pulling docker image ubuntu:16.04 ...
Using docker image sha256:2a697363a8709093834e852b26bedb1d85b316c613120720fea9524f0e98e4a2 for ubuntu:16.04 ...
Running on runner-a0e18516-project-123-concurrent-0 via gitlab...
Fetching changes...
HEAD is now at d12c05b Update .gitlab-ci.yml
From https://gitlab.kingdomai.com/mymusise/envdocker
   d12c05b..1a3954f  master     -> origin/master
Checking out 1a3954f8 as master...
Skipping Git submodules setup
$ echo "Running tests TEST=$TEST"
Running tests TEST=
Job succeeded

I define export TEST="test" in https://word.mymusise.com/env_test.txt, but it seems not working.

What should I do... Orz

Gitlab version: 11.4.0-ee

Upvotes: 0

Views: 846

Answers (1)

KamilCuk
KamilCuk

Reputation: 140880

You want to run commands that are inside the text file that is accessible via http protocol.

With curl you can download the file and print it on curl's standard output. With command substitution $() you can grab the standard output. Then you can execute the commands itself (very unsafe, there might be multiple escaping issues).

 script: 
   - $(curl "$url")
   - echo "Running tests TEST=$TEST"

A safer alternative would be to just download the file and execute/source it.

 script: 
   - curl "$url" > ./run_this.sh
   # don't forget to add executable right to the file ;)
   - chmod +x ./run_this.sh
   - source ./run_this.sh
   # pick out the trash
   - rm ./run_this.sh
   # rest of your script.
   - echo "Running tests TEST=$TEST"

Downloading a shell script and executing it is a popular way of automating tasks, usually with curl url | bash. It is not supported "natively" by gitlab and I don't think it should be.

Upvotes: 1

Related Questions