无法在 gitlab 中设置变量-ci.yml
Unable to set Variable in gitlab-ci.yml
在这个删节版的 gitlab-ci.yaml 文件中。全局变量 APP_VERSION 可以填充或留空。在它留空的情况下,我想将变量设置为version_cache/version.txt中存在的版本值。如果 APP_VERSION 已经包含一个版本,那么它将使用那个版本。
variable:
APP_VERSION: ""
build_image:
stage: build_image
before_script:
- APP_VERSION=if [ -z $APP_VERSION ]; then echo $(cat version_cache/version.txt); else echo $APP_VERSION; fi;
当跑步者运行这个时,我得到
bash: eval: line 128: syntax error near unexpected token `then'
跑步者使用 zsh。我在 SO 上看到一个示例,其中以这种方式设置变量,但我无法理解缺少的语法。
检查shellcheck后,试试:
$(if [ -z "$APP_VERSION" ]; then cat version_cache/version.txt; else echo "$APP_VERSION"; fi;)
问题似乎是您正在尝试为 APP_VERSION
赋值,但您传递的是实际代码,not
结果如您所愿。添加 `` 向 bash 说明您需要命令的结果。作为 VonC 答案的补充
尝试改变
- APP_VERSION=if [ -z $APP_VERSION ]; then echo $(cat version_cache/version.txt); else echo $APP_VERSION; fi;
到
- APP_VERSION=`if [ -z "$APP_VERSION" ]; then cat version_cache/version.txt; else echo "$APP_VERSION"; fi;`
在这个删节版的 gitlab-ci.yaml 文件中。全局变量 APP_VERSION 可以填充或留空。在它留空的情况下,我想将变量设置为version_cache/version.txt中存在的版本值。如果 APP_VERSION 已经包含一个版本,那么它将使用那个版本。
variable:
APP_VERSION: ""
build_image:
stage: build_image
before_script:
- APP_VERSION=if [ -z $APP_VERSION ]; then echo $(cat version_cache/version.txt); else echo $APP_VERSION; fi;
当跑步者运行这个时,我得到
bash: eval: line 128: syntax error near unexpected token `then'
跑步者使用 zsh。我在 SO 上看到一个示例,其中以这种方式设置变量,但我无法理解缺少的语法。
检查shellcheck后,试试:
$(if [ -z "$APP_VERSION" ]; then cat version_cache/version.txt; else echo "$APP_VERSION"; fi;)
问题似乎是您正在尝试为 APP_VERSION
赋值,但您传递的是实际代码,not
结果如您所愿。添加 `` 向 bash 说明您需要命令的结果。作为 VonC 答案的补充
尝试改变
- APP_VERSION=if [ -z $APP_VERSION ]; then echo $(cat version_cache/version.txt); else echo $APP_VERSION; fi;
到
- APP_VERSION=`if [ -z "$APP_VERSION" ]; then cat version_cache/version.txt; else echo "$APP_VERSION"; fi;`