【问题标题】:gitlab ci cannot build windows containergitlab ci 无法构建 windows 容器
【发布时间】:2019-01-26 17:23:12
【问题描述】:

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

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

FROM mcr.microsoft.com/windows/servercore:ltsc2019
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}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG} . 
  - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG}

它失败了:

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

找gitlab-runner的文档,好像支持https://docs.gitlab.com/runner/executors/#selecting-the-executor

有没有办法从在线服务构建一个 windows 容器?

【问题讨论】:

  • 跑步机的配置是什么?看起来您正在使用 Linux 容器运行 Linux docker runner。
  • @JakubKania:我猜跑步者使用默认配置,如何配置使用 Windows 跑步者?我的测试可在gitlab.com/mpromonet/dockertest
  • 设置您自己的跑步者,而不是使用共享的跑步者。

标签: docker gitlab gitlab-ci


【解决方案1】:

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

今天,我们很高兴地宣布,由 GitLab 提供测试版。当我们开始推出这个 对我们社区的重要服务,我们邀请您帮助塑造 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

【讨论】:

  • 发帖前提供的这个配置你试过了吗?我只是想知道,因为我注意到您正在使用共享跑步者,尽管其中一个限制是我们不能在配置中使用 imageservice,如下所述:docs.gitlab.com/ee/user/gitlab_com/…
  • @FC.Araujo:是的,当我发布答案时它正在运行,昨天它还在运行gitlab.com/mpromonet/dockerwindows/-/jobs/446698288
  • 真棒@mpromonet,令人惊讶的是文档可能不匹配 100%,感谢分享! ?
  • 是的可能!你能试一试只是仔细检查一下吗?我计划很快在私有实例上拥有一个 Windows 共享运行器,可能我也可以在几天内进行测试。
  • @FC.Araujo:删除图像适用于,答案已更新,删除了这个令人困惑的字段,不需要
【解决方案2】:

GitLab 1.11 (May 2019) 应该支持这一点

GitLab Runner 的 Windows 容器执行器

在 GitLab 11.11 中,我们很高兴为 GitLab Runner 添加了一个新的执行器,以便在 Windows 上使用 Docker 容器。

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

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2017-05-15
      • 1970-01-01
      相关资源
      最近更新 更多