向minikube-Jenkins config.json公开本地Docker守护程序:系统找不到指定的路径
我在Windows 10上运行Jenkins,安装了Docker toolbox和minikube(也在Windows 10上) 我可以使用以下Powershell命令将本地Docker图像“映射”到minikube:向minikube-Jenkins config.json公开本地Docker守护程序:系统找不到指定的路径,jenkins,kubectl,minikube,Jenkins,Kubectl,Minikube,我在Windows 10上运行Jenkins,安装了Docker toolbox和minikube(也在Windows 10上) 我可以使用以下Powershell命令将本地Docker图像“映射”到minikube:minikube Docker env | Invoke Expression,一切正常 我想用Jenkinsfile做同样的事情 stage('Build1') { steps { powershell """ m
minikube Docker env | Invoke Expression
,一切正常
我想用Jenkinsfile做同样的事情
stage('Build1') {
steps {
powershell """
minikube docker-env | Invoke-Expression
"""
}
}
但是Jenkins在错误的位置查找config.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
shell命令出现相同错误(Git for Windows)
还使用此开关创建了新的minikube:--不安全的注册表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,从虚拟盒中删除了minikube VM,删除了文件夹
C:\Users\user\.minikube
,minikube启动
,没有错误,但在运行Jenkins管道时,出现了相同的错误。如何,要使Jenkins管道内的“minikube”集成顺利进行,只需应用上次错误输出时收到的提示
确保minikube与发出此命令的用户相同
指挥
假设Jenkins主服务器作为Windows服务运行(默认情况下,在本地系统帐户的上下文中),将其更改为专用本地用户帐户(例如“\user”)—与创建minikube实例时使用的帐户相同
另一种选择:使用专用管道
最终,您可以切换到另一个设置(困难的方式):使用和基于groovy的管道(它重用主机docker守护进程-在您的例子中是Minikube)。如何,要使Jenkins管道内部的“Minikube”集成顺利,只需应用上次错误输出时收到的提示 确保minikube与发出此命令的用户相同 指挥 假设Jenkins主服务器作为Windows服务运行(默认情况下,在本地系统帐户的上下文中),将其更改为专用本地用户帐户(例如“\user”)—与创建minikube实例时使用的帐户相同 另一种选择:使用专用管道 最终,您可以切换到另一个设置(困难的方式):
使用和基于groovy的管道(它重用主机docker守护进程-在您的情况下,它来自Minikube)。无需再与Minikube为伍
- 卸载的minikube
- 卸载的Docker工具箱
- 安装
- 在Docker桌面上启用Kubernetes(设置Kubernetes启用Kubernetes)
现在库伯内特斯和詹金斯可以使用所有的docker图像了无需再与minikube为伍了
- 卸载的minikube
- 卸载的Docker工具箱
- 安装
- 在Docker桌面上启用Kubernetes(设置Kubernetes启用Kubernetes)
现在Kubernetes和Jenkins都可以使用所有docker图像了您可以在Jenkins管道定义环境变量(MINIKUBE_HOME)中设置默认配置文件的位置吗?@xerks,但您显然向前迈出了一步。现在,您需要指定minikube的配置文件,该配置文件包含特定minikube的VM实例的配置。您可以通过两种方式来实现这一点,一种是向每个minikube子命令添加'-p',另一种是使用'minikube profile'命令全局设置它一次(使用'minikube profile list'检查现有的命令)。实际上,您的最终目标是,从minikube的VM重新使用Docker的守护程序,或者希望在CI管道中使用minikube。如果是后者,请查看本教程:我将mimikube作为VirtualBox虚拟机,Jenkins安装在windows 10的本地。我想将windows 10上的docker图像公开给Minikube。请检查我的回答,应该可以解决您的问题。顺便说一句,为什么在Windows上的管道中运行“sh”步骤而不是“powershell”?您的执行器/从机/代理是否托管在另一台计算机上?这会使您的案例更加复杂。您能否在Jenkins管道定义环境变量(MINIKUBE_HOME)中设置以指向默认配置文件的位置?@xerks,但你显然向前迈出了一步。现在,您需要指定minikube的配置文件,该配置文件包含特定minikube的VM实例的配置。您可以通过两种方式来实现这一点,一种是向每个minikube子命令添加'-p',另一种是使用'minikube profile'命令全局设置它一次(使用'minikube profile list'检查现有的命令)。实际上,您的最终目标是,从minikube的VM重新使用Docker的守护程序,或者希望在CI管道中使用minikube。如果是后者,请查看本教程:我将mimikube作为VirtualBox虚拟机,Jenkins安装在windows 10的本地。我想将windows 10上的docker图像公开给Minikube。请检查我的回答,应该可以解决您的问题。顺便说一句,为什么您在Windows上的管道中运行“sh”步骤而不是“powershell”?,您的执行器/从/代理是否托管在另一台计算机上?这会使您的情况更加复杂。这很好,整个管道中不再出现错误,所有Jenkjns步骤都使用powershell,但本地创建的docker映像不会显示在minikube中(mikube ssh和docker映像)这很奇怪,请仔细检查您是否碰巧有两个不同的Minikube VM(=2个不同的docker注册表),使用您前面提到的“minikube配置文件列表”,您在本地安装了一个docker工具箱,您没有将docker映像推送到那里而不是minikube上的远程docker注册表吗?是的,docker映像存储在“本地”(windows 10),从CMD或Powerhshell type
docker images
时,我会看到使用Jenkins管道生成的所有图像。当我手动执行管道中指定的所有命令(Powershell控制台)时,所有命令都可以正常工作,但执行相同的fr时
++ 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