【问题标题】: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: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

      【讨论】:

        猜你喜欢
        • 2011-10-25
        • 1970-01-01
        • 2010-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        相关资源
        最近更新 更多