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

Gitlab Ci File Variable content instead of path

我正在尝试设置用于构建和测试我们项目的管道。 A 已设置在组级别归档变量以在管道内使用 Variables for mvn settings and certificate

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

$ mvn $MAVEN_CLI_OPTS compile
Unable to parse command line options: Unrecognized option: --><!--

如果我 "echo" $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

...

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

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

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

他们用 P2 标记了它,这意味着他们将尝试在标记后的 60 天内修复它。不过他们好像错过了这个月的截止日期。

与此同时,您可能需要在需要时手动使用变量。如果你有一个巨大的 .gitlab-ci.yml 文件,你可以使用 yaml anchors or the extends keyword 来重用你的脚本的一部分,而不必依赖于变量扩展。