Использование Docker для Windows в декларативном конвейере Jenkins

Я настраиваю рабочий процесс CI с декларативным конвейером Jenkins и агентами Docker-for-Windows через Dockerfile.

Примечание. К сожалению, в настоящее время использование демона Docker на основе Linux не является решением, поскольку мне нужно запускать двоичные файлы Windows.

Установка. Мастер Jenkins работает в Linux 16.04 через Docker. Агент сборки Jenkins

  • Windows 10 Корпоративная 1709 (16299.551)
  • Докер для Windows 17.12.0-се

Docker 18.x вызывал у меня головную боль при попытке использовать контейнеры Windows, поэтому я откатился на 17.x. У меня все еще были некоторые проблемы при попытке запуска с Jenkins и nohup, не находящимся на пути, но они были решены с помощью добавление двоичных файлов Git в путь поиска Windows (другая ссылка). Я подозреваю, что моя текущая проблема может быть связана.

Код: я пытаюсь инициализировать Jenkinsfile и запустить внутри простую распечатку hello-world.

/Дженкинсфайл

pipeline {
  agent none
  stages {
    stage('Docker Test') {
      agent {
        dockerfile {
          filename 'Dockerfile'
          label 'windocker'
        }
      }
      steps {
        println 'Hello, World!'
      }
    }
  }
}

/Докерфайл

FROM python:3.7-windowsservercore
RUN python -m pip install --upgrade pip

По сути, это должно быть чистое изображение, которое просто печатает «Hello, World!». Но на Дженкинсе это не работает!

Вывод из журнала:

[C:\jenkins\workspace\dockerfilecd4c215a] Running shell script
+ docker build -t cbe5e0bb1fa45f7ec37a2b15566f84aa9bd08f5d -f Dockerfile .
Sending build context to Docker daemon  337.4kB

Step 1/2 : FROM python:3.7-windowsservercore
 ---> 340689b75c39
Step 2/2 : RUN python -m pip install --upgrade pip
 ---> Using cache
 ---> a93f446a877f
Successfully built a93f446a877f
Successfully tagged cbe5e0bb1fa45f7ec37a2b15566f84aa9bd08f5d:latest
[C:\jenkins\workspace\dockerfilecd4c215a] Running shell script
+ docker inspect -f . cbe5e0bb1fa45f7ec37a2b15566f84aa9bd08f5d
.
Cannot run program "id": CreateProcess error=2, The system cannot find the file specified

person casparjespersen    schedule 26.07.2018    source источник


Ответы (1)


Проблема в том, что на данный момент windows не поддерживается. Он вызывает команду linux «id», чтобы получить текущий идентификатор пользователя.

В Jenkins есть открытый запрос на извлечение и JIRA Ticket для поддержки конвейера докеров Windows:

person Michael Brunner    schedule 02.02.2019
comment
Запрос на вытягивание объединен, и теперь должна быть возможность использовать контейнеры Windows с докером. - person Michael Brunner; 07.01.2020