提高 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:cinpm 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 工作流操作归档工件中的文件以修复此警告?

架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)

性能测试流程