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)
1321812
2342213
3321711
4351712
5311910
平均值32.818.611.6

下载缓存将时长缩短约 14 秒,而解压缓存再额外节省约 7 秒

Back to Blog

相关文章

阅读更多 »