簡體   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