首页 > web前端 > js教程 > 加速 CI [GitHub Actions],您可以立即完成!

加速 CI [GitHub Actions],您可以立即完成!

DDD
发布: 2024-12-31 17:52:14
原创
428 人浏览过

ays to speed up CI [GitHub Actions] that you can do immediately!

对于那些因 CI 执行缓慢而感到沮丧的

以下是使用 GitHub Actions 加速 CI 执行的三种方法。

加速 CI 的三种方法 [GitHub Actions]。

本文介绍了以下三种方法。

  • 分工
  • 添加包缓存处理
  • 拆分测试并并行运行它们

拆分工作

可以拆分作业,以便每个作业并行运行

例如,单元测试的执行和 Linter 的执行通常可以独立运行。

在单独的 Job 中描述它们会比在单个 Job 中连续描述它们更有效。

jobs:.
  test:.
    runs-on: ubuntu-22.04
    steps:.
    ...

  lint: ...
    runs-on: ubuntu-22.04
    steps: ...
    ...
登录后复制

添加包缓存过程。

建议缓存软件包,以跳过耗时的软件包安装过程

使用官方的actions/cache来实现缓存流程

以下情况,只有操作系统、Node 版本或管理包信息的文件(package-lock.json)发生变化时,才会执行 npm ci,否则将使用缓存。

- name: cache and restore packages
  id: cache-npm
  uses: actions/cache@v4.0.2
  with: node_modules
    path: node_modules
    key: ${{ runner.os }}-${{ steps.tool_versions.outputs.nodejs }}-${{ hashFiles(‘**/package-lock.json’) }}

- name: install npm packages
  if: steps.cache-npm.outputs.cache-hit ! = ‘true’
  run: npm ci
  shell: bash
登录后复制

拆分并并行运行测试

如果您的测试需要很长时间才能运行,您可以通过划分测试并并行运行每个测试来加快进程

例如,对于 Jest,您可以使用矩阵策略和命令选项 --shard。矩阵策略是一种分割测试并并行运行它们的简单方法。

矩阵策略是一种为单个作业中变量中定义的每个值运行作业的方法,而 --shard 是分割测试的选项。

使用这些,您可以定义如下工作流程。

jobs:
  test:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        shard: [1/4, 2/4, 3/4, 4/4]
    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: setup environment
        uses: ./.github/actions/setup

      - name: run test
        run: npx jest --ci --shard=${{ matrix.shard }}
登录后复制

这将并行运行 4 个作业,每个作业运行四分之一的测试

我不知道除了 Jest 之外是否还有其他选项,例如 --shard,但这个想法本身可以应用于任何语言。

还有其他方法。

下面介绍了三种方法作为提高 CI 速度的简单方法。

  • 分工
  • 添加包缓存处理
  • 拆分测试并并行运行它们

但是,除了这些之外,您还可以使用更大的运行器并仅在已进行更改的区域运行测试,还有许多其他方法可以提高速度。

建议在考虑到可用的时间和财力的情况下,尽可能地提高速度。

以上是加速 CI [GitHub Actions],您可以立即完成!的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板