【发布时间】:2021-06-15 23:16:08
【问题描述】:
在运行我的 gitlab ci 时,我需要检查指定的 svn 目录是否存在。
我正在使用脚本:
variables:
DIR_CHECK: "default"
stages:
- setup
- test
- otherDebugJob
.csharp:
only:
changes:
- "**/*.cs"
- "**/*.js"
setup:
script:
- $DIR_CHECK = $(svn ls https://server.fsl.local:port/svn/myco/personal/TestNotReal --depth empty)
- echo $DIR_CHECK
test:
script:
- echo "DIR_CHECK is blank"
- echo $DIR_CHECK
rules:
- if: $DIR_CHECK == ''
otherDebugJob:
script:
- echo "DIR_CHECK is not blank"
- echo $DIR_CHECK
rules:
- if: $DIR_CHECK != ''
svn 命令有效并回显正确的回复,但$DIR_CHECK 没有设置为原始默认。它不存储从 svn 命令返回的字符串。
如何将 exe 返回的字符串存储在 gitlab ci 的变量中?
试运行:
执行作业脚本的“step_script”阶段 00:00 $ $DIR_CHECK = $(svn ls https://server.fsl.local:port/svn/myco/personal/TestNotReal --depth empty) svn: E170000: Illegal repository URL https://server.fsl.local:port/svn/myco/personal/TestNotReal' $ echo $DIR_CHECK 清理基于文件的变量 00:01 作业成功
【问题讨论】:
-
试试
DIR_CHECK=$(your-command)(没有$,=周围没有空格)。 -
@AdamMarshall,感谢您的建议,但结果是一样的 :-(
-
哦,我最初误读了您的管道定义。在单个作业中创建(或修改)变量时,它仅存在于该作业中。如果您在您的
setup作业脚本中添加您的echo $DIR_CHECK,它应该会显示svn 命令的输出。然后,当test作业运行时,它使用全局变量,因为它在test作业中不存在。 -
我不确定这是否有效 - 我已经附上了上面的测试运行。如果是这种情况,我如何在一个块中设置一个变量并在另一个块中引用它?
标签: bash svn gitlab gitlab-ci script