Общая библиотека Jenkins с контейнерами Docker для Windows - PullRequest
0 голосов
/ 11 января 2019

Цель:
На узле Windows Jenkins я бы хотел клонировать проект GitHub в Docker-контейнере Windows и запускать команды maven с помощью Jenkinsfile.

Проблема:
Я не могу развернуть свой контейнер Docker в Jenkins из-за неверной спецификации тома. Кто-нибудь знает обходной путь или как решить эту проблему?

Подробности:
В настоящее время у меня есть декларативный конвейер с такой схемой:

/**
 * Defines declarative pipelne for a standard maven build.
 */
def call(body) {
  def config = [:]
  body.resolveStrategy = Closure.DELEGATE_FIRST
  body.delegate = config
  body()

  pipeline {
    agent {
      label "WINDOWS-64-DOCKER"
    }

    stages {
      stage('Maven') {
        agent {
          docker {
            image 'enterprise-repos.net/my-org/windows-maven3-jdk7'
            reuseNode true
          }
        }

        steps {
          script {
            def script = "mvn clean install"
            sh returnStdout: false, script: script
          }
        }
      }
    }
  }
}

В Jenkins она генерирует следующую команду:

Windows_Docker does not seem to be running inside a container
$ docker run -t -d -u 18:18 -w c:\jenkins\workspace\git_hub_project 
-v c:\jenkins\workspace\git_hub_project:c:\jenkins\workspace\git_hub_project:rw,z 
-v c:\jenkins\workspace\git_hub_project@tmp:c:\jenkins\workspace\git_hub_project@tmp:rw,z 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** 
-e ******** -e ******** -e ******** -e ******** -e ******** -e ******** 
enterprise-repos.net/my-org/windows-maven3-jdk7 cat

Ошибка:

java.io.IOException: Failed to run image 'enterprise-repos.net/my-org/windows-maven3-jdk7'. Error: docker: 
Error response from daemon: invalid volume specification: 'c:\jenkins\workspace\git_hub_project:c:\jenkins\workspace\git_hub_project:rw,z'.
See 'docker run --help'.

Переменная среды Path для Windows Узел Jenkins:

C:\Program Files\java\jre1.8.0_172\bin;
C:\Windows\Sun\Java\bin;
C:\Windows\system32;
C:\Windows;
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Windows\System32\OpenSSH\;
C:\Program Files\Docker;
C:\ProgramData\chocolatey\bin;
C:\Program Files\Git\cmd;
C:\Users\jenkins\AppData\Local\Microsoft\WindowsApps;
C:\Program Files\Git\mingw64\bin;
C:\Program Files\Git\usr\bin;
C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;
.

Версия Docker:

Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.3
 Git commit:        33a45cd0a2
 Built:             unknown-buildtime
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.24)
  Go version:       go1.10.3
  Git commit:       33a45cd0a2
  Built:            11/07/2018 00:24:12
  OS/Arch:          windows/amd64
  Experimental:     false

Предположение: С моим текущим пониманием, я не уверен, как генерируется эта команда docker, но я считаю, что моя проблема - флаг z после rw,z, так как узел Jenkins образ Windows и Docker также является Windows. Любая помощь или предложения будут прекрасны.

...