![](/img/trans.png)
[英]How to access variables in gitlab-ci.yml using gitlab-ci-multi-runner on windows
[英]Error using the PWD to define variables in .gitlab-ci.yml
我剛剛注意到,當在script
下訪問PWD
變量時,它會按預期工作,例如:
test:
script:
- docker run --rm -v $PWD/wd image [options]
但是當上面的內容被包含$PWD
的變量替換時,這會失敗。 事實上,像下面這樣的指令會導致錯誤:
variables:
DOCKER_RUN: "docker run --rm -v $PWD:/wd"
test:
script:
- $DOCKER_RUN image [options]
這是因為變量DOCKER_RUN
在這里被解釋為“docker run --rm -v:/wd”。 也就是說,就像PWD
是空的一樣,我無法理解為什么。
我也一直在探索 gitlab 預定義變量,但找不到PWD
的合適替代品,而不是通過組合它們,例如。 使用"${CI_BUILDS_DIR}/${CI_PROJECT_NAMESPACE}"
,這也會導致錯誤。
您可以在定義變量時嘗試使用$$PWD
。 然后 GitLab 不應該嘗試解釋變量,而只是將字符串docker run --rm -v $PWD:/wd
存儲在變量DOCKER_RUN
中。 正如您所寫,GitLab 在解析 .gitlab-ci.yml 文件時嘗試解釋變量$PWD
。 這是在 git 服務器上完成的,當前工作目錄在這種情況下沒有意義。
當您在作業中使用$PWD
時,這將作為普通 shell 腳本在 gitlab-runner 上執行。 那么當前的工作目錄就很有意義了!
我用$CI_PROJECT_DIR
...
test:
stage: test
variables:
PYTHONPATH: "$CI_PROJECT_DIR"
script:
- export
- pytest test/integration
這個技巧[借自 github 問題似乎解決了這個問題=(https://github.com/moby/moby/issues/4830#issuecomment-264366876):
啊,派對遲到了,我搜索,看到了這個,並意識到如果你想要一個“相對”的路徑,你可以這樣做:
docker run -v `pwd`/contrib:/tmp/contrib...
如果您從 shell 腳本運行,這很好,您將從某個地方運行它,非常適合本地開發,當您站立一些圖像並希望將這些文件夾放在手邊時。
所以我的命令是:
docker run --rm -t -v `pwd`/frontend:/app snyk/snyk:node
哪個正確擴展了pwd
。 這僅適用於 Linux 跑步者,不適用於 windows。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.