无法在 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;`