在从GitLab设置Windows CI管道时,我遇到了与Windows gitlab-runner docker executor相关的众多问题,这些问题正在使用Docker不再接受的旧API(1.18) .

当Gitlab / CI尝试连接到跑步者时,该问题会导致以下错误消息:

Running with gitlab-runner 11.2.0 (35e8515d) on Windows VS2017 x64 0825d1d7 
Using Docker executor with image buildtools2017 ... 
ERROR: Preparation failed: Error response from daemon: **client version 1.18 is too old.** Minimum supported API version is 1.24, please upgrade your client to a newer version (executor_docker.go:1148:0s)

引用的'buildtools2017'泊坞窗图像是Microsoft "official" .

该图像似乎对我正在使用的当前(实验性)Docker版本(18.06.1-ce-win74)以及稳定版本有效 .

整个GitLab维基上的问题是described . Andrew Leech(?)甚至分叉和修改了跑步者,以便它能够正确连接,并在blogpost中提供他的脚本和评论 . 这似乎给出了一些结果:

C:\gitlab-runner>gitlab-runner.exe -v
Version:      10.8.0~beta.551.g67a6ccc7
Git revision: 67a6ccc7
Git branch:   windows-container-executor
GO version:   go1.9.4
Built:        2018-07-30T08:57:44+00:00
OS/Arch:      windows/amd64

GitLab维基表示他们正在等待,直到可以发布更稳定的解决方案 . 目前已经超过一年的破窗户码头跑步者..

安德鲁的blogpostlink to his gitlab-runner.exe实际上描述了使用PowerShell运行程序然后启动Docker实例的不同解决方法 . 所有令牌信息都暴露出来,我不知道如何设置它,它似乎也依赖于使用旧版构建工具的外部图像 .

看起来这个docker runner现在连接了,但是如果我没有正确看待,Gitlab-runner docker runner似乎并不同意所使用的' build directory ' . 我的repo中的第一个Gitlab / CI脚本只是一个 echo 命令,因此错误与ci脚本内容无关,但我不确定它是什么 . 如果有船坞的人知道发生了什么,这对我有帮助 .

Using Docker executor with image buildtools2017 ...
ERROR: Preparation failed: build directory needs to be absolute and non-root path

干杯,