“ docker push”在带有Windows运行程序的gitlabci中需要1个参数

时间:2019-11-14 17:15:25

标签: docker gitlab-ci gitlab-ci-runner

我有一个非常简单的gitlab ci任务。只需从Dockerfile构建映像并将其推送到gitlab docker存储库:

- echo $CI_REGISTRY_IMAGE
- docker build -t $CI_REGISTRY_IMAGE . 
- docker push "$CI_REGISTRY_IMAGE:latest"

这是我的输出:

$ echo $CI_REGISTRY_IMAGE
vb-git.example.com:8888/my/test
$ docker build -t $CI_REGISTRY_IMAGE .
Sending build context to Docker daemon  131.1kB

Step 1/1 : FROM openjdk
 ---> b853c027c6f5
Successfully built b853c027c6f5
Successfully tagged my.example.com:8888/my/test:latest
$ docker push $CI_REGISTRY_IMAGE:latest
"docker push" requires exactly 1 argument.
See 'docker push --help'.

Usage:  docker push [OPTIONS] NAME[:TAG]

我怀疑这与Windows Shell executor无法正确解析推送行有关。当我像下面这样写推时,它会起作用:

- docker push my.example.com:8888/my/test:latest

但是如何使用gitlabci变量执行此操作,以使Windows Shell执行程序不会混淆?

2 个答案:

答案 0 :(得分:0)

尝试     docker push "${$CI_REGISTRY_IMAGE}:latest"

答案 1 :(得分:0)

这样写:

docker push "$($CI_REGISTRY_IMAGE):latest"

在powershell中,您使用:来获取变量的属性。例如,您将获得如下环境变量路径:

$Env:Path

如果您不想获取该属性,则可以先将其放在$( )块中,然后手动对其求值。