gitlab ci无法建立Windows容器

时间:2019-01-26 17:23:13

标签: docker gitlab gitlab-ci

我正在尝试使用https://gitlab.com构建Windows容器,但是我没有找到是否支持此容器。

我用一个非常简单的Dockerfile进行了测试:

FROM microsoft/nanoserver:latest
CMD echo "Hello World from Windows"

使用.gitlab-ci.yml

image: docker
services:
- docker:dind

variables:
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2

before_script:
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

windows:
  stage: build
  script:
  - docker build -t ${CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG}-windows . -f Dockerfile.windows
  - docker push ${CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG}-windows

它失败:

  

图像操作系统“ windows”不能在此平台上使用
  错误:作业失败:退出代码1

正在寻找gitlab-runner的文档,似乎支持https://docs.gitlab.com/runner/executors/#selecting-the-executor

是否可以通过在线服务构建Windows容器?

3 个答案:

答案 0 :(得分:3)

January 2020起,可以使用Windows Shared Runners (beta)使用在线服务来构建Windows容器。

今天,我们很高兴地宣布,由...托管的Windows Shared Runners GitLab提供beta版。当我们开始推广这个 对我们社区的重要服务,我们邀请您帮助塑造 GitLab.com上Windows生态系统的CI / CD工具的开发方向

例如,使用以下.gitlab-ci.yml

windows:
  stage: build
  tags:
  - shared-windows
  - windows
  - windows-1809
  script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG} . 
  - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG}

使用简单的Dockerfile

FROM mcr.microsoft.com/windows/servercore:ltsc2019
CMD echo "Hello World from Windows"

管道执行result enter image description here

答案 1 :(得分:1)

据我所知,GitLab.com提供的运行程序均基于Linux。您需要为自己的运行器提供基于Windows的Docker引擎,以构建Windows Docker映像。

答案 2 :(得分:1)

GitLab 1.11 (May 219)

应该支持
  

用于GitLab Runner的Windows容器执行器

     

在GitLab 11.11中,我们很高兴向GitLab Runner添加新的执行程序,以在Windows上使用Docker容器。

https://about.gitlab.com/images/11_11/windows-container.png

  

以前,使用shell执行程序来编排Docker命令是Windows的主要方法,但是通过此更新,您现在可以直接在Windows上使用Docker容器,就像在Linux主机上一样。< br />   这为我们的Microsoft平台用户打开了更高级的管道编排和管理之门。

     

此更新中包括改进的对整个GitLab CI / CD的PowerShell的支持,以及针对各种版本的Windows容器的新帮助程序映像。
  请注意,您自己的Windows运行程序可以与GitLab.com一起使用,但当前不作为共享公共设备的一部分提供。

这来自issue 535:请参见the documentation "Using Windows containers"

It has limitations,但这是一个很好的第一步。