提高 GitHub 工作流程性能?
Posted
技术标签:
【中文标题】提高 GitHub 工作流程性能?【英文标题】:Improve GitHub workflow performance? 【发布时间】:2022-01-08 06:20:36 【问题描述】:背景
我已经创建了一个 GitHub 工作流(在.github/workflows
目录中),
放在那里的每个命令都运行良好,
和ng build
在 5 分钟内完成。
问题是我的Jasmine
单元测试(将Chrome
指定为跑步者)需要多个小时,我执行如下:
ng test
在我的本地设备上,上述单元测试只需要 1 分钟。
在 CI 工作流程中,我确实指定了 Ubuntu 最新版,
但我认为它运行“无头”(没有 UI 支持,在模拟任何 UI 代码时会很慢)。
问题
有什么方法可以运行 GitHub 的工作流和/或操作而不是“无头”? (通过这种方式,以某种方式提高性能。)
【问题讨论】:
【参考方案1】:我认为它也在您的 CI 中以监视模式运行,因此永远不会停止。尝试创建一个新脚本并在您的 ci/管道中运行这个新脚本。
// 我们正在关闭手表并将浏览器指定为 Chrome。
"test": "ng test",
"test:ci": "ng test --browser Chrome --watch=false"
CI 中的 npm run test
现在应该是 npm run test:ci
。 npm run test:ci
应该可以在本地为您工作,也可以在测试只运行一次的地方工作。
如果这不起作用,请尝试关注this。对 karma.conf.js
和脚本进行了一些更改以使其在 Bitbucket CI 中工作,但我认为您不需要这个。
【讨论】:
【参考方案2】:无需强制 GitHub 的“无头”服务器有头(GUI 支持)。
现在我们可以简单地配置 Jasmine
(或者更确切地说是 Karma
的目标浏览器)来运行 Headless。
将 Workflow 的 run
更改为:
npx ng test --no-watch --no-progress --browsers=ChromeHeadlessCI
并确保您的 karma.conf.js
具有正确的设置,例如:
browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'],
customLaunchers:
ChromeHeadlessCI:
base: 'ChromeHeadless',
flags: ['--no-sandbox']
,
另请参阅:https://angular.io/guide/testing#configure-cli-for-ci-testing-in-chrome
【讨论】:
以上是关于提高 GitHub 工作流程性能?的主要内容,如果未能解决你的问题,请参考以下文章
架构设计:系统间通信(23)——提高ActiveMQ工作性能(中)
如何为 github 工作流操作归档工件中的文件以修复此警告?