近日很荣幸地收到了阿里云邀请做一个对于阿里旗下无影云桌面的评测,从官网上理解到阿里云无影云桌面原名为弹性云桌面,交融了无影产品技术后更名降级,可广泛应用于具备高数据安全管控、高性能计算等要求的平安办公、金融、设计、影视、教育等畛域。
我是一个程序员,最近一年的工作是参加开发一个开源的电商前端 (Storefront) 我的项目,代号 Spartacus,应用的编程语言是 TypeScript,开发框架是 Angular. 这是咱们我的项目的 Github 代码仓库:
https://github.com/SAP/spartacus
这是从本地开发环境运行 Spartacus 的一些截图:
很快乐地承受了阿里的评测邀请之后,我就在推敲:无影云桌面是否用来进步我日常开发 Spartacus Storefront 的工作效率?
作为一个开源的电商前端利用,Spartacus 有着欠缺的端到端自动化测试,咱们应用自动化测试框架 Cypress 来进行 UI 端到端测试和回归测试。每次开发人员应用 git 提交代码更改到 Github 仓库时,会触发基于 Travis CI 的继续集成脚本,在 CI 服务器上执行所有的 Cypress 自动化测试用例。
上面是 CI 服务器上运行 Cypress 自动化测试的命令行:
yarn –cwd ./projects/storefrontapp-e2e-cypress run cy:run:ci
在我理论的开发过程中,我不时会遇到这种状况,本地批改了代码之后,单元测试全副通过,而后提交代码,发现 CI 服务器上的某些 Cypress 自动化测试用例执行失败。
因为咱们在 Travis CI 上执行的脚本内容较多,build 一次须要破费 40 多分钟的工夫,所以靠在 CI 服务器上执行 Cypress 回归测试用例的形式来发现本地提交代码的缺点,效率切实低下。
因而,我就有了一个想法:把 Spartacus Cypress 自动化测试放到无影云桌面进行。这样,每次我在本地批改完代码之后,如果无影云桌面里能立刻辨认到这些代码批改,并在云桌面里运行所有的 Cypress 自动化测试,等全副测试都通过后,我再提交代码。这样,借助无影云桌面弱小的计算性能,我能够当时把所有可能引起回归测试失败的代码缺点都检测进去,这样能尽可能进步我提交代码之后,Travis CI build 的一次通过率。
首先我在无影云桌面里装置了 Angular 开发必备的开发和构建工具,比方 yarn, npm, Node.js 等。下图是在云桌面上应用 Angular CLI 启动命令行的截图:
下图是命令行启动的 Spartacus Storefront 运行在无影云桌面的 Chrome 浏览器里的截图,和在本地电脑里运行没有任何差异:
感激无影云桌面弱小的磁盘映射性能,我可能间接在 PC 云桌面客户端里,间接通过图形界面以及命令行的形式,拜访到我本地操作系统 C 盘的数据。下图的本地磁盘 C:DESKTOP-IC6UIET 图标, 代表的就是我本地计算机的 C 盘。
通过 UNC 地址:\Client\C$\Code,能够在无影云桌面 powershell 命令行里拜访本地操作系统 C 盘下的数据,命令行操作形式同在本地电脑应用没有任何区别:
如果在无影云桌面里能够间接用命令行启动我本地电脑 C 盘的 Spartacus 利用,那就是最现实的状况了。于是我应用命令行,将本地电脑的 UNC 门路 \Client\C$, 映射成无影云桌面里的 Z 盘:
net use Z: \Client\C$\
而后在云桌面里关上 powershell,进入 Z 盘,应用 Angular CLI 的 ng serve 命令启动 Spartacus:
然而期待了很长时间后,依然没有看到 ng serve 命令的输入。同无影云桌面的反对人员沟通过,得悉这种间接在云桌面里运行本机利用的场景不被反对。
不过问题也不大,我在云桌面里应用 git 将 Spartacus 源代码克隆到云桌面的本地目录 C:\code\spa\spartacus-develop,而后每次我的本机目录 Z:\Code\SPA\spartacus 有代码批改时,应用一个 powershell script 间接将产生批改的文件,从本机目录拷贝到云桌面即可。
在无影云桌面里应用如下的 powershell script, 即可将本地批改的文件主动同步到云桌面的本地目录:
$sourcePath = "Z:\Code\SPA\spartacus";
$targetPath = "C:\code\spa\spartacus-develop";
$modifiedFilesList = "C:\code\spa\modifiedFilesList.txt";
function syncFile {
$modifiedFiles = Get-Content $modifiedFilesList
foreach($file in $modifiedFiles) {
echo $file;
Copy-Item $file -Destination $targetPath;
}
echo "done";
}
git ls-files -m > $modifiedFilesList;
syncFile;
而后就能够在无影云桌面里启动 Cypress 了。尽管能够采取默认的 headless 形式运行所有回归测试用例,但既然云桌面提供了显示桌面,不利用起来有点惋惜,所以我抉择了以交互式形式运行 Cypress.
顺利的在无影云桌面上关上了 Cypress 的交互式运行桌面:
在无影云桌面里十分流畅地实现了 Cypress 的回归测试,并且在非 headless 模式下,可能直观地察看到当测试用例执行失败时,以后利用的 UI 界面,十分不便定位问题。
对于在无影云桌面里执行 Cypress 回归测试的动态效果,能够查看我这个视频。
https://www.zhihu.com/zvideo/…
抉择在无影云桌面而不是本地运行 Cypress 回归测试,我次要基于以下几点思考:
(1) 节俭本地贵重的 CPU 和内存资源,用于执行一些技术附加值更高的非技术工作。
(2) 利用无影云桌面的手机客户端,我能够做到即便人不在电脑背后,也能随时监控 Cypress 测试的执行后果。
上面的截图是通过 Android 客户端登录到无影云桌面的截图:
能够看到在手机上查看 Cypress 的执行后果还是十分不便的:
如果感觉手机屏幕过小,看不清楚显示的内容,云桌面的手机客户端贴心地提供了批改显示分辨率的性能:
抉择主动适应屏幕后,就会依照手机的理论屏幕尺寸,动静调整桌面的显示成果,便于在手机客户端上实现一些简略的云桌面操作。
综上所述,这算是一次让我称心的通过无影云桌面进步我日常工作效率的体验之旅。后续我在 Angular 开发工作中,还会持续注意,思考是否有更多的开发步骤,可能迁徙到云桌面里实现。这里也感激阿里推出的这款如此优良的云桌面产品,在寰球疫情的大环境下,给大家的近程工作带来了更多的便当。
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: