Цель:
На узле 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. Любая помощь или предложения будут прекрасны.