繁体   English   中英

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

[英]Gitlab Ci File Variable content instead of path

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

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

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

如果我“回显” $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 锚点extends 关键字来重用部分脚本,而不必依赖于变量扩展。

假设您在 CI/CD 设置中将文件变量命名为ENV_FILE_DEV ,您可以将其作为一种解决方法:

variables:
  ENV_FILE: $CI_PROJECT_DIR/../$CI_PROJECT_NAME.tmp/ENV_FILE_DEV

然后ENV_FILE变量将作为完整路径可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM