我有许多微服务在 kubernetes/devspace 环境中本地运行。
基于 this 和 this,IntelliJ 和 PhpStorm 不支持从 devspace 或 kubectl 内运行 PHPUnit 测试。
因此,与此同时,我只是通过
Run | Edit Configurations...
: 手动运行 bash 脚本作为脚本
#!/usr/bin/env bash
devspace enter -c foo php artisan config:clear;
kubectl exec -it deploy/foo -- \
vendor/bin/phpunit \
tests/MyExamples/ExampleTest.php -v \
--log-junit reports/unitreport0.xml \
-d memory_limit=-1
有没有更好的方法使用 devspace 来做到这一点? 我希望至少能够将其与测试运行程序集成,而不是运行脚本。
如果没有,有没有办法在 IntelliJ/PhpStorm 中提取当前的测试名称或类,以便我可以将其作为参数传递到脚本中?
另外,有什么方法可以使 IntelliJ/PhpStorm 中的线条可点击吗?
/bar/foo/tests/MyExamples/ExampleTest.php:123
我认为在 IntelliJ/PHPStorm 中执行此操作的最佳方法是使用
sshd
。 这在 devspace 中得到了很好的支持,只需少量的配置。
首先,将此行添加到
devspace.yaml
文件中以在您的实例上设置 sshd:
ssh: {}
然后您应该可以通过 ssh 登录。 请注意,您将在
.ssh/config
文件中附加一些行,因此您可能需要验证这些设置:
ssh foo.bar.devspace
然后在 IntelliJ 中,转到
File
→ Settings
→ Tools
→ SSH Configurations
,添加一个新条目:
主持人:
foo.bar.devspace
用户名:
devspace
端口:
10659
(注意:在 ~/.ssh/config 文件中确认此值。默认值 22 可能不正确)
身份验证类型:
Key pair
私钥文件:
/Users/<myusername>/.devspace/ssh/id_devspace_ecdsa
(将myusername替换为你自己的用户名)
确保选中解析配置文件 ~/.ssh/config
然后,在
File
→ Remote Development
中,单击 SSH Connection
→ New Connection
,然后从 连接 下拉列表中选择我们刚刚创建的连接(所有其他字段应显示为灰色),然后单击 检查连接并继续。 (如果这不起作用,您的 shell 可能设置不正确——确保 $SHELL
未设置为 devspace 内的 /sbin/nologin
之类的内容)。
在“选择 IDE 和项目”对话框中,选择 IDE 和版本,并将项目目录设置为某个值——看起来您不能将其设置为空,所以也许您的主目录可以工作。 当 docker 桌面在 devspace 客户端上安装 Intelllj/PHPStorm 时,您可能会收到一些确认对话框。
运行 Intellij——它将连接到您的开发空间环境。 您可以从容器加载您的项目。它可能会提示您安装 PHP 插件并重新启动。
现在您应该能够运行单元测试——单击测试旁边的绿色箭头以确保其有效。 您还应该能够使用断点调试单元测试。
在工作中遇到同样的问题。我们正在使用 kind/skaffold 运行本地 kubernetes 开发环境,您可以通过调整 skaffold 配置以包含 phpunit.xml 来在 kind 集群中运行测试容器。但是,您只能使用终端命令来执行此操作,到目前为止我发现的所有内容,phpstorm 本身并不支持在 kubernetes 中运行测试,因此您必须运行手动终端命令才能执行此操作。
我更喜欢使用集成的 phpstorm 单元测试工具,但它看起来不可能。如果您找到了方法,请告诉我。