在CI / CD设置中设置的GitLab CI / CD未设置变量

时间:2019-03-16 08:27:59

标签: gitlab gitlab-ci-runner

我正在运行gitlab作业,在该作业中,我试图取消设置CI / CD设置中的某些变量。

例如,我有 SOME_VARIABLE设置为 然后,在工作定义中,我正在尝试 URL url = new URL ("https://www.dailymotion.com/video/" + dataSet.get(position).getId()); URI uri = url.toURI(); //I need URI value here downloadVideoFromURI();

但是在工作本身上我仍然会得到

function convertToCSV(tableData, delimiter = ',') { if (!Array.isArray(tableData) || !tableData.length) { throw new Error('Table data should be a non-empty array of column/value rows'); } var colNames = Object.keys(tableData[0]); var rows = tableData.map(rowData => { var row = []; for (var key in rowData) { // I noticed that members column is an array, not sure how you handle it // but here it joins the members with comma and wraps the whole thing in // double quotes if (Array.isArray(rowData[key]) && rowData[key].length) { row.push('"' + rowData[key].join(',') + '"'); } else { row.push(rowData[key]); } } return row.join(delimiter); }); rows.unshift(colNames.join(delimiter)); return rows.join("\n") } const csv = convertToCSV([ {"id_group":"1","name":"Visitor","members":[],"total":"0","discount":"0"}, {"id_group":"2","name":"Guest","members":[],"total":"0","discount":"0"} ]) console.info(csv)

代替

variables: SOME_VARIABLE: "" script: - echo SOME_VARIABLE - [%SOME_VARIABLE%]

有人遇到过吗?

3 个答案:

答案 0 :(得分:1)

我不得不回答这个问题,因为它可能不太明显。

原来,当您在Windows上设置变量时,您必须说

set v=some_value

要取消设置,必须为

set v=

不是

set v=''

当您将其设置为空字符串时,就是这样:

$ set v=""
$ echo %v%
""

如果将其正确设置为空,则会得到:

$ set v=
$ echo %v%
%v%

但是在gitlab中,您不能将值保留为空,例如

variables:
   v:

因为它的语法无效。

所以我要做的是在脚本区域中取消设置变量:

script:
  - set v=
  - run_my_script_that_needs_v_unset

然后该脚本按需工作。

(我想它可以在其他平台上类似地完成。)

答案 1 :(得分:0)

项目CI / CD变量优先于YAML定义的变量。这是优先顺序。

  1. 触发器变量或计划的管道变量。
  2. 项目级变量或受保护的变量。
  3. 组级变量或受保护的变量。
  4. YAML定义的工作级变量。
  5. YAML定义的全局变量。
  6. 部署变量。
  7. 预定义的环境变量。

来自GitLab CI/CD Variables: Priority of variables

答案 2 :(得分:0)

您不需要s1,只需=

示例:

set <varible-name>