[英]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.