如何在环境url中定义环境变量[Gitlab CI]

时间:2019-06-10 11:01:07

标签: gitlab gitlab-ci environment

请帮助。使用CI工具时出现问题。

这是我的.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"

我已经在test中定义了EnvDocker > Pipelines > Environments环境

但是它没有从CI作业中的https://word.mymusise.com/env_test.txt导出环境。

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

我在export TEST="test"中定义了https://word.mymusise.com/env_test.txt,但似乎不起作用。

我该怎么办... Orz

Gitlab版本:11.4.0-ee

1 个答案:

答案 0 :(得分:1)

您要运行可通过http协议访问的文本文件中的命令。

使用curl,您可以下载文件并将其打印在curl的标准输出中。使用命令替换$(),您可以获取标准输出。然后您可以执行命令本身(非常不安全,可能存在多个转义问题)。

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

一种更安全的选择是下载文件并执行/来源。

 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"

下载外壳程序脚本并执行它是自动执行任务的一种常用方法,通常使用curl url | bash。 gitlab不“本地”支持它,我认为不应该。