Предоставление локального демона Docker миникубе - конфигурация Jenkins. json: системе не удается найти указанный путь - PullRequest
0 голосов
/ 06 января 2020

Я использую Jenkins на Windows 10, установлен Docker набор инструментов и мини-куб (также на Windows 10).

Я могу "сопоставить" локальные Docker изображения с мини-кубом с помощью этого Команда Powershell: minikube docker-env | Invoke-Expression, все работает как положено.

Я хочу сделать то же самое, используя Jenkinsfile

stage('Build1') {
         steps {
            powershell """
            minikube docker-env | Invoke-Expression
            """

         }
      }

Но Дженкинс ищет файл конфигурации. json в неправильном месте:

powershell.exe : * 
At C:\Program Files (x86)\Jenkins\workspace\api-gateway_master@tmp\durable-355fdbbe\powershellWrapper.ps1:3 char:1
+ & powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Comm ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (* :String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

X Error getting config: CreateFile C:\Windows\system32\config\systemprofile\.minikube\profiles\minikube\config.json: The system cannot find the path specified.

Файл конфигурации фактически находится в пути userprofile: C:\Users\username\.minikube\profiles\minikube\config.json.

Та же ошибка с командой оболочки (Git для Windows)

stage('Build1') {
         steps {
           sh 'eval $(minikube docker-env)'

         }
      }



++ minikube docker-env
* 
X Error getting config: CreateFile C:\Windows\system32\config\systemprofile\.minikube\profiles\minikube\config.json: The system cannot find the path specified.

Также создал новый мини-куб Брэда с этим переключателем: - -insecure-registry windows 10 IP:5000

РЕДАКТИРОВАТЬ: После применения предложения согласно комментарию:

Созданная переменная среды в Jenkins:

MINIKUBE_HOME=C:\Users\user\.minikube

Теперь получаем:

++ minikube docker-env
* 
X Error getting host status
* Error: [MACHINE_DOES_NOT_EXIST] state: machine does not exist
* Suggestion: Run 'minikube delete' to delete the stale VM, or and ensure that minikube is running as the same user you are issuing this command with

Сделано minikube stop, удалена виртуальная мини-куб из Virtual Box, удалена папка C:\Users\user\.minikube, minikube start, ошибок нет, но при запуске конвейера Jenkins та же ошибка .

1 Ответ

1 голос
/ 09 января 2020

Как насчет этого, чтобы сделать гладкую интеграцию minikube внутри конвейера Jenkins, просто примените подсказку, полученную при выводе последней ошибки.

Убедитесь, что minikube работает как тот же пользователь, которого вы выдаваете эта команда с.

Предполагая, что ваш главный сервер Jenkins работает как служба Windows (в контексте учетной записи локальной системы по умолчанию), измените ее на выделенную учетную запись локального пользователя (например, ". \ user ") - то же самое, что вы создали свой экземпляр мини-куба.

Другой вариант: используйте выделенные учетные данные с вашим конвейером

В конце концов вы можете переключиться на другую настройку (сложную) путь):

Запуск Jenkins внутри вашего (Minikube) кластера Kubernetes с плагином Kubernetes для Jenkins и Docker -вне -of- Docker groovy конвейер (он использует хост docker daemon - в вашем случае из Minikube).

...