mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
CI: Remove .cache caching from GitHub Actions workflows (#6097)
## Overview Removes **all `actions/cache` steps** from GitHub Actions workflows after empirical testing showed that they actually **slow down CI/CD by 11%** rather than speeding it up. ## Context As discussed in #5988, the codebase has evolved with components moving into the `/packages` directory structure. The review comment suggested removing the entire `actions/cache` step rather than just the `.cache` path to properly evaluate performance impact. ## Performance Benchmark Results Empirical testing on this PR (commits38695ae0bvsab16635c5) revealed that **removing cache steps improves CI performance across all workflows**: | Workflow | WITHOUT Cache | WITH Cache | Improvement | |----------|---------------|------------|-------------| | **CI: Lint Format** | 208s (3m 28s) | 226s (3m 46s) | **-18s (-8.7%)** ⚡ | | **CI: Tests Unit** | 160s (2m 40s) | 177s (2m 57s) | **-17s (-10.6%)** ⚡ | | **CI: Tests Storybook** | 65s (1m 5s) | 78s (1m 18s) | **-13s (-20.0%)** ⚡ | | **Total Pipeline** | **433s (7m 13s)** | **481s (8m 1s)** | **-48s (-11.1%)** ⚡ | ### Why is caching slower? 1. **Cache overhead exceeds benefits**: Time spent saving/restoring cache > time saved from cached content 2. **Complex cache key computation**: Hash calculations for file patterns add processing time 3. **Network I/O cost**: Each cache step adds network round-trips 4. **Tools already optimize incrementally**: ESLint, Vitest, Prettier handle their own incremental checks efficiently ## Changes Removed the entire `actions/cache` step from 8 workflow files: - `ci-lint-format.yaml` - Removed tool outputs cache (.eslintcache, .prettierCache, .knip-cache, tsconfig.tsbuildinfo) - `ci-tests-storybook.yaml` - Removed storybook-static and tsconfig.tsbuildinfo cache (both jobs) - `ci-tests-unit.yaml` - Removed coverage and .vitest-cache - `api-update-electron-api-types.yaml` - Removed tsconfig.tsbuildinfo cache - `api-update-manager-api-types.yaml` - Removed tool cache and ComfyUI-Manager repo cache - `api-update-registry-api-types.yaml` - Removed tool cache and comfy-api repo cache - `release-draft-create.yaml` - Removed tsconfig.tsbuildinfo cache - `release-pypi-dev.yaml` - Removed dist and tsconfig.tsbuildinfo cache **What remains cached:** - ✅ pnpm packages via `cache: 'pnpm'` in setup-node actions (the most valuable cache) - ✅ Tool-specific incremental caches generated fresh each run - ✅ Docker layer caching (where applicable) ## Testing - ✅ Empirical performance testing completed (see benchmark results above) - ✅ All cache steps removed successfully - ✅ No structural changes to workflow logic - ✅ pnpm package caching remains active ## Conclusion The benchmark data clearly shows that removing `actions/cache` steps results in **faster, simpler CI workflows**. The overhead of cache management exceeds any benefit, especially with pnpm package caching already handling the most time-consuming dependency installations. **Recommendation: ✅ Proceed with this change** ## Test Methodology 1. **WITHOUT cache** (commit [38695ae0b](https://github.com/Comfy-Org/ComfyUI_frontend/commit/38695ae0b)): Removed all `actions/cache` steps → [Workflow run](https://github.com/Comfy-Org/ComfyUI_frontend/actions/runs/18654024806) 2. **WITH cache** (commit [ab16635c5](https://github.com/Comfy-Org/ComfyUI_frontend/commit/ab16635c5)): Temporarily restored all `actions/cache` steps → [Workflow run](https://github.com/Comfy-Org/ComfyUI_frontend/actions/runs/18654143363) 3. **Final state** (commit [3ce876f87](https://github.com/Comfy-Org/ComfyUI_frontend/commit/3ce876f87)): Restored no-cache version (current) Fixes #5988 --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: snomiao <7323030+snomiao@users.noreply.github.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -26,15 +26,6 @@ jobs:
|
||||
node-version: lts/*
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
key: electron-types-tools-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
electron-types-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Update electron types
|
||||
run: pnpm install --workspace-root @comfyorg/comfyui-electron-types@latest
|
||||
|
||||
|
||||
@@ -31,26 +31,9 @@ jobs:
|
||||
node-version: lts/*
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
key: update-manager-tools-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
update-manager-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Cache ComfyUI-Manager repository
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ComfyUI-Manager
|
||||
key: comfyui-manager-repo-${{ runner.os }}-${{ github.run_id }}
|
||||
restore-keys: |
|
||||
comfyui-manager-repo-${{ runner.os }}-
|
||||
|
||||
- name: Checkout ComfyUI-Manager repository
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
|
||||
@@ -30,26 +30,9 @@ jobs:
|
||||
node-version: lts/*
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
key: update-registry-tools-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
update-registry-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Cache comfy-api repository
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: comfy-api
|
||||
key: comfy-api-repo-${{ runner.os }}-${{ github.run_id }}
|
||||
restore-keys: |
|
||||
comfy-api-repo-${{ runner.os }}-
|
||||
|
||||
- name: Checkout comfy-api repository
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
|
||||
15
.github/workflows/ci-lint-format.yaml
vendored
15
.github/workflows/ci-lint-format.yaml
vendored
@@ -33,21 +33,6 @@ jobs:
|
||||
node-version: 'lts/*'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
.eslintcache
|
||||
tsconfig.tsbuildinfo
|
||||
.prettierCache
|
||||
.knip-cache
|
||||
key: lint-format-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('src/**/*.{ts,vue,js,mts}', '*.config.*', '.eslintrc.*', '.prettierrc.*', 'tsconfig.json') }}
|
||||
restore-keys: |
|
||||
lint-format-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-
|
||||
lint-format-cache-${{ runner.os }}-
|
||||
ci-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
|
||||
26
.github/workflows/ci-tests-storybook.yaml
vendored
26
.github/workflows/ci-tests-storybook.yaml
vendored
@@ -50,19 +50,6 @@ jobs:
|
||||
node-version: '20'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
storybook-static
|
||||
tsconfig.tsbuildinfo
|
||||
key: storybook-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('src/**/*.{ts,vue,js}', '*.config.*', '.storybook/**/*') }}
|
||||
restore-keys: |
|
||||
storybook-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-
|
||||
storybook-cache-${{ runner.os }}-
|
||||
storybook-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
@@ -115,19 +102,6 @@ jobs:
|
||||
node-version: '20'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
storybook-static
|
||||
tsconfig.tsbuildinfo
|
||||
key: storybook-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('src/**/*.{ts,vue,js}', '*.config.*', '.storybook/**/*') }}
|
||||
restore-keys: |
|
||||
storybook-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-
|
||||
storybook-cache-${{ runner.os }}-
|
||||
storybook-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
|
||||
13
.github/workflows/ci-tests-unit.yaml
vendored
13
.github/workflows/ci-tests-unit.yaml
vendored
@@ -29,19 +29,6 @@ jobs:
|
||||
node-version: "lts/*"
|
||||
cache: "pnpm"
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
coverage
|
||||
.vitest-cache
|
||||
key: vitest-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('src/**/*.{ts,vue,js}', 'vitest.config.*', 'tsconfig.json') }}
|
||||
restore-keys: |
|
||||
vitest-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}-
|
||||
vitest-cache-${{ runner.os }}-
|
||||
test-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
|
||||
10
.github/workflows/release-draft-create.yaml
vendored
10
.github/workflows/release-draft-create.yaml
vendored
@@ -28,16 +28,6 @@ jobs:
|
||||
node-version: 'lts/*'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
tsconfig.tsbuildinfo
|
||||
key: release-tools-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
release-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Get current version
|
||||
id: current_version
|
||||
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
||||
|
||||
11
.github/workflows/release-pypi-dev.yaml
vendored
11
.github/workflows/release-pypi-dev.yaml
vendored
@@ -25,17 +25,6 @@ jobs:
|
||||
node-version: 'lts/*'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Cache tool outputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
.cache
|
||||
dist
|
||||
tsconfig.tsbuildinfo
|
||||
key: dev-release-tools-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
dev-release-tools-cache-${{ runner.os }}-
|
||||
|
||||
- name: Get current version
|
||||
id: current_version
|
||||
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
||||
|
||||
Reference in New Issue
Block a user