캐시 가속을 활용한 GitHub Actions에서의 PlatformIO

발행: (2025년 12월 30일 오후 10:56 GMT+9)
3 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

Note: 캐시가 새로 고쳐지기 전까지는 패키지가 업데이트되지 않습니다.

실험

다음 실험에서는 세 가지 워크플로우 패턴을 비교합니다: 캐시 없음, 다운로드 캐시, 압축 해제 캐시.

  • 측정 단계: 캐시 복원, PlatformIO 설치, 빌드.
  • 5회 실행 평균(첫 실행은 캐시가 히트되지 않으므로 제외).
  • 대상 작업: 빌드(단위 테스트 없음).
  • 소스 코드: int main()while(1)return 0;만 포함.
  • 빌드는 NUCLEO‑F303K8 HAL 라이브러리를 중심으로 수행; 기타 설정은 기본값.

결과

Run캐시 없음 (s)다운로드 캐시 (s)압축 해제 캐시 (s)
1321812
2342213
3321711
4351712
5311910
Average32.818.611.6

다운로드 캐시를 사용하면 약 14초 정도 시간이 단축되고, 압축 해제 캐시를 추가하면 추가로 7초 정도 더 절약됩니다.

Back to Blog

관련 글

더 보기 »