【问题标题】:Improve GitHub workflow performance?提高 GitHub 工作流程性能?
【发布时间】:2022-01-08 06:20:36
【问题描述】:
背景
- 我已经创建了一个 GitHub 工作流(在
.github/workflows 目录中),
- 放在那里的每个命令都运行良好,
- 和
ng build 在 5 分钟内完成。
- 问题是我的
Jasmine 单元测试(将Chrome 指定为跑步者)需要多个小时,我执行如下:
ng test
- 在我的本地设备上,上述单元测试只需要 1 分钟。
- 在 CI 工作流程中,我确实指定了 Ubuntu 最新版,
- 但我认为它运行“无头”(没有 UI 支持,在模拟任何 UI 代码时会很慢)。
问题
有什么方法可以运行 GitHub 的工作流和/或操作而不是“无头”?
(通过这种方式,以某种方式提高性能。)
【问题讨论】:
标签:
angular
github
jasmine
continuous-integration
github-actions
【解决方案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