PlatformIO 在 GitHub Actions 中使用缓存加速
发布: (2025年12月30日 GMT+8 21:56)
2 min read
原文: Dev.to
Source: Dev.to
官方文档中的示例
官方文档提供了在 GitHub Actions 中使用 PlatformIO 的示例工作流。
name: PlatformIO CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
~/.platformio/.cache
key: ${{ runner.os }}-pio
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install PlatformIO Core
run: pip install --upgrade platformio
- name: Build PlatformIO Project
run: pio run
先安装 PlatformIO CLI pio,再使用 pio run 进行构建。PlatformIO CLI 是用 Python 编写的,所以需要先安装 Python。对 Python 包和 PlatformIO 文件同时进行缓存,可在下载速度不稳定或 PlatformIO 包体积较大时缩短工作流时长。
改进工作流
上述工作流每次运行都会解压包,这会耗时。对已解压的文件进行缓存可以省去解压步骤。~/.platformio/ 目录下保存了下载缓存文件和已解压的包。
- uses: actions/cache@v4
with:
path: |
~/.cache/pip
# ~/.platformio/.cache
~/.platformio/
key: ${{ runner.os }}-pio
注意:在缓存刷新之前,包不会被更新。
实验
下面的实验比较了三种工作流模式:不使用缓存、下载缓存 和 解压缓存。
- 测量步骤:缓存恢复、PlatformIO 安装以及构建。
- 取 5 次运行的平均值(第一次运行因未命中缓存而被忽略)。
- 目标任务:仅构建(不运行单元测试)。
- 源代码:仅包含
while(1)和return 0;的int main()。 - 构建针对 NUCLEO‑F303K8 HAL 库;其他设置为默认。
结果
| 运行次数 | 不使用缓存 (s) | 下载缓存 (s) | 解压缓存 (s) |
|---|---|---|---|
| 1 | 32 | 18 | 12 |
| 2 | 34 | 22 | 13 |
| 3 | 32 | 17 | 11 |
| 4 | 35 | 17 | 12 |
| 5 | 31 | 19 | 10 |
| 平均值 | 32.8 | 18.6 | 11.6 |
下载缓存将时长缩短约 14 秒,而解压缓存再额外节省约 7 秒。