提高 GitHub 工作流性能?
Improve GitHub workflow performance?
背景
- 我创建了一个 GitHub 工作流程(在
.github/workflows
目录中),
- 放在那里的每个命令 运行 没问题,
- 和
ng build
在5分钟内完成。
- 问题是我的
Jasmine
单元测试(将 Chrome
指定为 运行ner)需要 多个小时 ,这我执行如下:
ng test
- 所述单元测试在我的本地 只需 1 分钟。
- 在 CI 工作流程中,我指定了 Ubuntu latest,
- 但我认为它 运行 是“无头的”(没有 UI 支持,在模拟任何 UI 代码时会很慢)。
问题
有什么方法可以使 运行 GitHub 的工作流程 and/or 操作不是“无头”的吗?
(由此,以某种方式提高性能。)
我想它也在你的 CI 中处于监视模式 运行ning,因此永远不会停止。尝试创建一个新脚本并 运行 在您的 ci/pipeline.
中使用这个新脚本
// 我们正在关闭手表并将浏览器指定为 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 中工作,但我认为您不需要这个。
无需强制 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']
}
},
See also: https://angular.io/guide/testing#configure-cli-for-ci-testing-in-chrome
背景
- 我创建了一个 GitHub 工作流程(在
.github/workflows
目录中), - 放在那里的每个命令 运行 没问题,
- 和
ng build
在5分钟内完成。 - 问题是我的
Jasmine
单元测试(将Chrome
指定为 运行ner)需要 多个小时 ,这我执行如下:ng test
- 所述单元测试在我的本地 只需 1 分钟。
- 在 CI 工作流程中,我指定了 Ubuntu latest,
- 但我认为它 运行 是“无头的”(没有 UI 支持,在模拟任何 UI 代码时会很慢)。
问题
有什么方法可以使 运行 GitHub 的工作流程 and/or 操作不是“无头”的吗?
(由此,以某种方式提高性能。)
我想它也在你的 CI 中处于监视模式 运行ning,因此永远不会停止。尝试创建一个新脚本并 运行 在您的 ci/pipeline.
中使用这个新脚本// 我们正在关闭手表并将浏览器指定为 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 中工作,但我认为您不需要这个。
无需强制 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']
}
},
See also: https://angular.io/guide/testing#configure-cli-for-ci-testing-in-chrome