远程开发概述
远程开发使您可以使用远程机器、开发容器、WSL 或各种提供商来检出和加载您的项目,进行索引、分析、构建、运行、调试和测试代码。
通过远程开发,您可以执行以下操作:
在与本地运行的操作系统不同的操作系统上编辑、构建或调试应用程序。
使用比本地机器更大或更强大的硬件进行开发。
将笔记本电脑用作瘦客户端,无需在本地机器上托管源代码。
随时随地工作,同时敏感信息仅托管在公司的服务器上。
连接
远程主机是托管源代码并运行前端 IDE 的物理或虚拟机器。 您连接到后端,后端透明地提供对所有 IDE 功能的完全访问。
可以通过多种场景建立与远程机器的连接:
SSH 连接
从本地机器通过 SSH 连接到远程服务器,或反之亦然(从服务器上已安装的 IDE 连接到本地机器)。
您可以使用以下几种方法:
JetBrains Toolbox 应用 :支持在 Linux、macOS 和 Windows 上的连接。 有关更多信息,请参阅 Toolbox App页面。
RubyMine :从 RubyMine 欢迎屏幕连接到您的远程项目。 更多信息请参阅 从 RubyMine 连接到远程服务器。
JetBrains Gateway :您可以使用 JetBrains Gateway 通过 SSH 连接到 Linux 机器。 您还可以连接到各种开发环境。
欲了解更多信息,请参阅 连接并使用 JetBrains Gateway。
Dev Container 连接
在远程机器上启动 Dev Container 时,Development Container 连接适用于远程文件系统中包含 JSON 文件的项目或从 Git 仓库克隆的项目。
有关此工作流程的描述,请参阅 为远程项目启动 Dev Container。
WSL 连接
在配置 IDE 后端直接在 WSL2 中启动时,使用 WSL 连接。 JetBrains Gateway 为此类场景提供了原生的 WSL 支持。
有关更多信息,请参阅 连接到在 WSL2 上运行的项目。
开发环境
通过 JetBrains Gateway,还可以连接到运行在 JetBrains CodeCanvas、Gitpod、Google Cloud、GitHub Codespaces、Amazon CodeCatalyst 和 Coder 上的各种开发环境。
有关如何连接到每个环境的更多信息,请参阅 连接并使用 JetBrains Gateway。
可扩展性
IDE 后端
后端可以通过以下方式扩展各种 RubyMine 插件:
通过将必需插件解压到 相应的目录中
通过运行以下代码(需要网络连接到 JetBrains Marketplace):
remote-dev-server installPlugins <PLUGIN_ID1> <PLUGIN_ID2> ...请查看以下示例:
remote-dev-server installPlugins IdeaVIM
如果插件提供了一组新的检查和功能,所有这些都会显示在 JetBrains Client 上。
欲了解更多信息,请参阅 安装插件。
JetBrains Gateway SDK
JetBrains Gateway 可以像任何其他基于 IntelliJ 平台的产品一样进行扩展。
您可以使用以下几种方法:
使用 https://github.com/JetBrains/gradle-intellij-plugin/ 设置一个新项目(
gradle-intellij-plugin应 >= 1.1.4)请使用以下设置针对 JetBrains Gateway 构建您的插件:
intellij { version.set("213.2667-CUSTOM-SNAPSHOT") type.set("GW") instrumentCode.set(false) }您可以在 https://www.jetbrains.com.cn/intellij-repository/snapshots 查看可用版本(参见 group com.jetbrains.gateway)
编排
除了基本的 SSH 和 Code With Me 连接外,供应商可以为自己的编排服务定制 JetBrains Gateway。 这可以在 JetBrains 与供应商之间的自定义协议中完成。
JetBrains Gateway 基于 IntelliJ 平台,拥有用于与 JetBrains Client 连接和交互的 API。
请查看以下示例:
一个大型组织希望编写自己的编排工具。 由于安全原因,基本的 SSH 流程是不够的。 该组织编写了一个内部插件并将其交付给开发人员。 开发人员可以在 JetBrains Gateway 或 RubyMine 上的笔记本电脑中安装此插件。
这是对 API 的一个非常简要的介绍(它们尚未最终确定,实际上这也不是完整作用域,但它们解释了整体思路)。
JetBrains Client
JetBrains Client 并非为连接部分的扩展性而设计。 不过,您可以开发并安装各种 RubyMine 插件,这些插件可以修改 UI、键盘快捷键、主题和其他涉及 IDE UI 交互的部分,但不会影响其功能。