mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
## 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>
94 lines
3.6 KiB
YAML
94 lines
3.6 KiB
YAML
name: "CI: Lint Format"
|
|
description: "Linting and code formatting validation for pull requests"
|
|
|
|
on:
|
|
pull_request:
|
|
branches-ignore: [wip/*, draft/*, temp/*]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
lint-and-format:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout PR
|
|
uses: actions/checkout@v5
|
|
with:
|
|
ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || github.ref }}
|
|
|
|
- name: Install pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 'lts/*'
|
|
cache: 'pnpm'
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run ESLint with auto-fix
|
|
run: pnpm lint:fix
|
|
|
|
- name: Run Prettier with auto-format
|
|
run: pnpm format
|
|
|
|
- name: Check for changes
|
|
id: verify-changed-files
|
|
run: |
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
echo "changed=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changed=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Commit changes
|
|
if: steps.verify-changed-files.outputs.changed == 'true' && github.event.pull_request.head.repo.full_name == github.repository
|
|
run: |
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add .
|
|
git commit -m "[automated] Apply ESLint and Prettier fixes"
|
|
git push
|
|
|
|
- name: Final validation
|
|
run: |
|
|
pnpm lint
|
|
pnpm format:check
|
|
pnpm knip
|
|
|
|
- name: Comment on PR about auto-fix
|
|
if: steps.verify-changed-files.outputs.changed == 'true' && github.event.pull_request.head.repo.full_name == github.repository
|
|
continue-on-error: true
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: '## 🔧 Auto-fixes Applied\n\nThis PR has been automatically updated to fix linting and formatting issues.\n\n**⚠️ Important**: Your local branch is now behind. Run `git pull` before making additional changes to avoid conflicts.\n\n### Changes made:\n- ESLint auto-fixes\n- Prettier formatting'
|
|
})
|
|
|
|
- name: Comment on PR about manual fix needed
|
|
if: steps.verify-changed-files.outputs.changed == 'true' && github.event.pull_request.head.repo.full_name != github.repository
|
|
continue-on-error: true
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: '## ⚠️ Linting/Formatting Issues Found\n\nThis PR has linting or formatting issues that need to be fixed.\n\n**Since this PR is from a fork, auto-fix cannot be applied automatically.**\n\n### Option 1: Set up pre-commit hooks (recommended)\nRun this once to automatically format code on every commit:\n```bash\npnpm prepare\n```\n\n### Option 2: Fix manually\nRun these commands and push the changes:\n```bash\npnpm lint:fix\npnpm format\n```\n\nSee [CONTRIBUTING.md](https://github.com/Comfy-Org/ComfyUI_frontend/blob/main/CONTRIBUTING.md#git-pre-commit-hooks) for more details.'
|
|
})
|