加速 CI [GitHub Actions],您可以立即完成!
对于那些因 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

zustand异步操作中的数据更新问题在使用zustand状态管理库时,经常会遇到异步操作导致数据更新不及时的问题。�...
