Rancher Desktop 是一个开源项目,它将 Kubernetes 和容器管理带入桌面。它可以在 Windows、macOS 和 Linux 上运行。本自述文件涉及 Rancher Desktop 的开发。有关 Rancher Desktop 的面向用户的信息,请参阅 rancherdesktop.io。有关面向用户的文档,请参阅 docs.rancherdesktop.io。
Rancher Desktop 是一个主要用 TypeScript 编写的 Electron 应用程序。它捆绑了多种其他技术,以提供一个有凝聚力的应用程序。它包括一个用 Go 编写的命令行工具rdctl
。大多数开发人员活动,例如运行开发构建、构建/打包 Rancher Desktop、运行单元测试和运行端到端测试,都是通过yarn
脚本完成的。存在一些例外情况,例如运行 BATS 测试。
在 Windows 上从源代码构建有两种选项:使用开发 VM 设置或使用现有 Windows 安装进行手动开发环境设置。
下载 Microsoft Windows 10 开发虚拟机。以下所有步骤都应在该虚拟机中完成。
打开 PowerShell 提示符(按 Windows 键 + X
并打开Windows PowerShell
)。
运行自动设置脚本:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb 'https://github.com/rancher-sandbox/rancher-desktop/raw/main/scripts/windows-setup.ps1' |埃克斯
关闭特权 PowerShell 提示符。
确保.npmrc
文件中的msbuild_path
和msvs_version
配置正确。运行以下命令来设置这些属性:
npm config set msvs_versionnpm config set msbuild_path
例如,对于 Visual Studio 2022:
npm config set msvs_version 2022 npm config set msbuild_path "C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe"
如果您在尝试运行npm config set...
时收到错误消息,请运行npm config edit
然后添加如下行
msvs_version=2022 msbuild_path=C:Program Files (x86)Microsoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe
不要将等号右侧的值引用起来。不需要引号,并且某些处理器可能会将它们视为路径的文字部分,然后失败。
配置git
以处理源自 linux 和 macOS 的文件:
git config --global --replace-all core.autocrlf false git config --global --replace-all core.eol lf
如果您发现lint:go
测试神秘地失败,则可能是行结尾不正确。
您现在可以克隆存储库并运行yarn
。
在计算机上安装适用于 Linux 的 Windows 子系统 (WSL)。如果已安装 WSL,请跳过此步骤。
打开 PowerShell 提示符(按 Windows 键 + X
并打开Windows PowerShell
)。
通过iwr -useb get.scoop.sh | iex
。
安装 7zip、git、go、mingw、nvm,并通过scoop install 7zip git go mingw nvm python unzip
解压缩。使用nvm list
检查节点版本。如果未安装节点 v20 或将其设置为当前版本,请使用nvm install 20
安装并使用nvm use 20.xx.xx
设置为当前版本。
通过npm install --global yarn
安装 Yarn 包管理器
安装 Visual Studio 2017 或更高版本。截至撰写本文时,最新版本可从 [https://visualstudio.microsoft.com/downloads/] 获取;如果改变了,一个好的搜索引擎应该能找到它。
确保您已安装Windows SDK
组件。此 Visual Studio 文档描述了安装组件的步骤。还需要选择使用 C++ 工作负载的桌面开发。
配置git
以处理源自 linux 和 macOS 的文件:
git config --global --replace-all core.autocrlf false git config --global --replace-all core.eol lf
如果您发现lint:go
测试神秘地失败,则可能是行结尾不正确。 9. 确保在.npmrc
文件中正确配置msbuild_path
和msvs_version
。运行以下命令来设置这些属性:
npm config set msvs_versionnpm config set msbuild_path
例如,对于 Visual Studio 2022:
npm config set msvs_version 2022 npm config set msbuild_path "C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe"
如果您在尝试运行npm config set...
时收到错误消息,请运行npm config edit
然后添加如下行
msvs_version=2022 msbuild_path=C:Program Files (x86)Microsoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe
不要将等号右侧的值引用起来。它们不是必需的,并且某些处理器可能会将它们视为路径的文字部分,然后失败。
您现在可以克隆存储库并运行yarn
。
安装nvm
以获取 Node.js 和 npm:
请参阅https://github.com/nvm-sh/nvm#installing-and-updating并运行curl
或wget
命令来安装nvm。
请注意,此脚本将处理nvm
的代码添加到配置文件(如~/.bash_profile
)。要将nvm
的访问权限添加到当前 shell 会话,您需要source
该文件。
目前我们使用 Node 20 构建 Rancher Desktop。要安装它,请运行:
nvm install 20.17
接下来,您需要安装纱线包管理器:
npm install --global yarn
如果尚未安装 go,您还需要运行brew install go
。
然后你可以使用以下命令安装依赖项:
yarn
⚠️ 在配备 M1 芯片的 Mac 上工作?在安装依赖项并运行任何 npm 脚本之前,您需要设置
M1
环境变量:export M1=1 yarn如果您之前安装了依赖项而没有先设置
M1
,那么您需要运行git clean -fdx
来清除所有缓存的资源,并在运行yarn
之前使用正确的架构重新下载。
确保您已安装以下软件:
Node.js v20。确保您安装了任何开发包。例如,在 openSUSE Leap 15.6 上,您需要安装nodejs20
和nodejs20-devel
。
纱线经典
转到 1.22 或更高版本。
node-gyp
文档安装中描述的依赖项。这是安装ffi-napi
npm 包所必需的。这些文档提到“适当的 C/C++ 编译器工具链”。您可以为此安装gcc
和g++
。
然后你可以使用以下命令安装依赖项:
yarn
然后,您可以按照如下所述运行 Rancher Desktop。第一次运行可能会失败 - 如果发生这种情况,请尝试恢复出厂设置并重新运行,这已知可以解决此问题。
安装依赖项后,您可以使用以下命令运行 Rancher Desktop 的开发版本:
yarn dev
要运行单元测试:
yarn test
要运行集成测试:
yarn test:e2e
Rancher 可以在 Windows、macOS 或 Linux 上从源代码构建。目前不支持交叉编译。要运行构建,请执行以下操作:
yarn build yarn package
构建输出转到dist/
。
Chrome 远程调试器允许您使用 Chrome 开发者工具调试 Electron 应用程序。您可以使用它来访问可能输出到渲染器进程的开发人员控制台的日志消息。这对于在 Rancher Desktop 的生产版本中获取额外的调试信息特别有帮助。
要启用远程调试,请使用--remote-debugging-port
参数启动 Rancher Desktop。
在 Linux 上,使用以下命令启动 Rancher Desktop:
rancher-desktop --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
在 macOS 上,使用以下命令启动 Rancher Desktop:
/Applications/Rancher Desktop.app/Contents/MacOS/Rancher Desktop --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
在 Windows 上,使用以下命令启动 Rancher Desktop:
cd 'C:Program FilesRancher Desktop'& '.Rancher Desktop.exe' --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
Rancher Desktop 启动后,打开 Chrome 并导航到http://localhost:8315/
。选择可用的目标来启动远程调试 Rancher Desktop。
要远程调试扩展,请遵循与远程调试构建相同的过程。但是,您需要在导航到http://localhost:8315/
之前加载扩展。 Rancher Desktop 和加载的扩展都应列为可用目标。
以下步骤已在 Linux 上使用 GoLand 进行了测试,但也可能以类似的方式适用于其他 JetBrains IDE。
安装 Node.js 插件(通过File > Settings > Plugins
)
转到“运行/调试配置”对话框(通过Run > Edit Configurations...
)
使用以下设置添加新的 Node.js 配置:
名称:调试配置的名称,例如rancher desktop
节点解释器:选择您安装的节点解释器,例如/usr/bin/node
节点参数: scripts/ts-wrapper.js scripts/dev.ts
工作目录:选择项目的工作目录,例如~/src/rancher-desktop
保存配置
您现在可以设置断点并单击“调试'rancher Desktop'”开始调试
每次提交都会触发 GitHub Actions 运行,从而导致应用程序包( .exe
和.dmg
)作为工件上传。如果您想测试构建系统构建的 Rancher Desktop 的最新版本,这可能会很有用。您可以从已完成的package
操作的“摘要”页面下载这些工件。
与 Windows 和 macOS 类似,Rancher Desktop 的 Linux 版本是根据每次提交构建的。然而在 Linux 上,只有部分过程是由 GitHub Actions 完成的。最后一部分是由 Open Build Service 完成的。
Rancher Desktop 存储库有两个频道: dev
和stable
。 stable
是大多数用户使用的渠道。它是指导用户在官方文档中添加的文档,也是包含从官方版本创建的版本的文档。 dev
是我们在这里感兴趣的通道:它包含从main
分支上以及与格式release-*
匹配的任何分支上进行的最新提交创建的构建。要了解如何安装开发存储库,请参阅下文。
使用dev
存储库时,了解dev
存储库中可用的 Rancher Desktop 版本的格式非常重要。版本的格式如下:
. . .
在哪里:
priority
是一个无意义的数字,它的存在是为了在更新时赋予从main
分支构建的版本优先于从release-*
分支构建的版本。
branch
是分支名称;由于包格式的限制,破折号被删除。
commit_time
是用于进行构建的提交的 UNIX 时间戳。
commit
是用于构建的提交的缩短哈希。
.deb
开发存储库您可以通过以下步骤添加存储库:
curl -s https://download.opensuse.org/repositories/isv:/Rancher:/dev/deb/Release.key | gpg --dearmor | sudo dd status=none of=/usr/share/keyrings/isv-rancher-dev-archive-keyring.gpg echo 'deb [signed-by=/usr/share/keyrings/isv-rancher-dev-archive-keyring.gpg] https://download.opensuse.org/repositories/isv:/Rancher:/dev/deb/ ./' | sudo dd status=none of=/etc/apt/sources.list.d/isv-rancher-dev.list sudo apt update
您可以通过以下方式查看可用版本:
apt list -a rancher-desktop
找到要安装的版本后,您可以使用以下命令进行安装:
sudo apt install rancher-desktop=
即使您已经安装了 Rancher Desktop 的某个版本,此操作也有效。
.rpm
开发存储库您可以使用以下命令添加存储库:
sudo zypper addrepo https://download.opensuse.org/repositories/isv:/Rancher:/dev/rpm/isv:Rancher:dev.repo sudo zypper refresh
您可以通过以下方式查看可用版本:
zypper search -s rancher-desktop
最后,安装您想要的版本:
zypper install --oldpackage rancher-desktop=
即使您已经安装了 Rancher Desktop 的某个版本,此操作也有效。
AppImage 没有存储库,但您可以在此处访问最新开发的 AppImage 版本。
Rancher Desktop 支持有限的基于 HTTP 的 API。该 API 在pkg/rancher-desktop/assets/specs/command-api.yaml
中定义,您可以在go/src/rdctl
的客户端代码中查看如何调用它的示例。
该 API 目前处于版本 1,但仍被视为内部和实验性的,如有更改,恕不另行通知。在某些时候,我们预计对 API 的必要更改将通过警告和弃用通知进行处理。
请参阅有关贡献的文档。
请参阅 docs 目录以获取更多开发人员文档。