Gitlab Ci 文件变量内容而不是路径

tic*_*evi 6 variables pipeline gitlab-ci

我正在尝试建立一个管道来构建和测试我们的项目。A 已在组级别设置文件变量,以在 mvn 设置和证书的管道变量中使用

问题是,mvn_settings 文件被解析为文本而不是路径。所以我的构建失败了。

$ mvn $MAVEN_CLI_OPTS compile
Unable to parse command line options: Unrecognized option: --><!--
Run Code Online (Sandbox Code Playgroud)

如果我“回声”$mvn_settings我就得到了路径。另外,当我对管道正在工作的路径进行硬编码时,我的管道:

variables:
  ...
  MAVEN_CLI_OPTS: "--batch-mode -s '$mvn_settings'"

...
before_script:
  -  keytool -importcert -file "$db_trust" -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -trustcacerts -noprompt

generate:
  stage: generate
  script:
    - mvn $MAVEN_CLI_OPTS compile
  artifacts:
    paths:
      - target/
    expire_in: 3 days

...
Run Code Online (Sandbox Code Playgroud)

有什么方法可以确定管道何时使用内容以及何时使用路径?

MrB*_*rta 4

当您在 .gitlab-ci.yml 文件的变量部分使用文件变量时,该变量将扩展为包含内容而不是文件名。这是 GitLab 中的一个错误,他们可能会在即将发布的版本中修复。这是 GitLab 上的问题:

https://gitlab.com/gitlab-org/gitlab/issues/29407

他们已将其标记为P2,这意味着他们将在标记后的 60 天内尝试修复它。不过,他们似乎错过了本月的最后期限。

同时,您可能必须在需要时手动使用该变量。如果您有一个巨大的 .gitlab-ci.yml 文件,您可能可以使用yaml 锚点extends 关键字来重用部分脚本,而不必依赖变量扩展。