mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04:00
## Summary Applies the CI performance optimizations from #12090 to Claude Code workflows. ## Changes ### `claude.yml` & `claude-dependabot.yml` - **pnpm caching**: Replaced manual `actions/cache` with `setup-node` built-in `cache: "pnpm"` - Removes 4 steps (set pnpm store dir, cache step, manual config) → 1 step ### `claude-ci-failure-auto-fix.yml` - **Added dev environment setup** with optimized caching - Now Claude can run lint/tests when fixing CI failures (previously could only edit files) - Uses the same optimized caching patterns ## Dependency This PR is based on #12090 and will merge after it. ## Testing - Workflow YAML syntax validated - Patterns match proven #12090 implementation - CI caching changes fail gracefully to uncached builds ## Linear Fixes [SECRT-1950](https://linear.app/autogpt/issue/SECRT-1950) ## Future Enhancements E2E test data caching could be added to Claude workflows if needed for running integration tests. Currently Claude workflows set up a dev environment but don't run E2E tests by default. <!-- greptile_comment --> <h2>Greptile Overview</h2> <details><summary><h3>Greptile Summary</h3></summary> Applies proven CI performance optimizations to Claude workflows by simplifying pnpm caching and adding dev environment setup to the auto-fix workflow. **Key changes:** - Replaced manual pnpm cache configuration (4 steps) with built-in `setup-node` `cache: "pnpm"` support in `claude.yml` and `claude-dependabot.yml` - Added complete dev environment setup (Python/Poetry + Node.js/pnpm) to `claude-ci-failure-auto-fix.yml` so Claude can run linting and tests when fixing CI failures - Correctly orders `corepack enable` before `setup-node` to ensure pnpm is available for caching The changes mirror the optimizations from PR #12090 and maintain consistency across all Claude workflows. </details> <details><summary><h3>Confidence Score: 5/5</h3></summary> - This PR is safe to merge with minimal risk - The changes are CI infrastructure optimizations that mirror proven patterns from PR #12090. The pnpm caching simplification reduces complexity without changing functionality (caching failures gracefully fall back to uncached builds). The dev environment setup in the auto-fix workflow is additive and enables Claude to run linting/tests. All YAML syntax is correct and the step ordering follows best practices. - No files require special attention </details> <details><summary><h3>Sequence Diagram</h3></summary> ```mermaid sequenceDiagram participant GHA as GitHub Actions participant Corepack as Corepack participant SetupNode as setup-node@v6 participant Cache as GHA Cache participant pnpm as pnpm Note over GHA,pnpm: Before (Manual Caching) GHA->>SetupNode: Set up Node.js 22 SetupNode-->>GHA: Node.js ready GHA->>Corepack: Enable corepack Corepack-->>GHA: pnpm available GHA->>pnpm: Configure store directory pnpm-->>GHA: Store path set GHA->>Cache: actions/cache (manual key) Cache-->>GHA: Cache restored/missed GHA->>pnpm: Install dependencies pnpm-->>GHA: Dependencies installed Note over GHA,pnpm: After (Built-in Caching) GHA->>Corepack: Enable corepack Corepack-->>GHA: pnpm available GHA->>SetupNode: Set up Node.js 22<br/>cache: "pnpm"<br/>cache-dependency-path: pnpm-lock.yaml SetupNode->>Cache: Auto-detect pnpm store Cache-->>SetupNode: Cache restored/missed SetupNode-->>GHA: Node.js + cache ready GHA->>pnpm: Install dependencies pnpm-->>GHA: Dependencies installed ``` </details> <sub>Last reviewed commit: f1681a0</sub> <!-- greptile_other_comments_section --> <!-- /greptile_comment --> --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co> Co-authored-by: Ubbe <hi@ubbe.dev>
4.8 KiB
4.8 KiB
Implementation Plan: SECRT-1950 - Apply E2E CI Optimizations to Claude Code Workflows
Ticket
Summary
Apply Pwuts's CI performance optimizations from PR #12090 to Claude Code workflows.
Reference PR
https://github.com/Significant-Gravitas/AutoGPT/pull/12090
Analysis
Current State (claude.yml)
pnpm caching (lines 104-118):
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
- name: Enable corepack
run: corepack enable
- name: Set pnpm store directory
run: |
pnpm config set store-dir ~/.pnpm-store
echo "PNPM_HOME=$HOME/.pnpm-store" >> $GITHUB_ENV
- name: Cache frontend dependencies
uses: actions/cache@v5
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml', 'autogpt_platform/frontend/package.json') }}
restore-keys: |
${{ runner.os }}-pnpm-${{ hashFiles('autogpt_platform/frontend/pnpm-lock.yaml') }}
${{ runner.os }}-pnpm-
Docker setup (lines 134-165):
- Uses
docker-buildx-action@v3 - Has manual Docker image caching via
actions/cache - Runs
docker compose upwithout buildx bake optimization
Pwuts's Optimizations (PR #12090)
- Simplified pnpm caching - Use
setup-nodebuilt-in cache:
- name: Enable corepack
run: corepack enable
- name: Set up Node
uses: actions/setup-node@v6
with:
node-version: "22.18.0"
cache: "pnpm"
cache-dependency-path: autogpt_platform/frontend/pnpm-lock.yaml
- Docker build caching via buildx bake:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker-container
driver-opts: network=host
- name: Expose GHA cache to docker buildx CLI
uses: crazy-max/ghaction-github-runtime@v3
- name: Build Docker images (with cache)
run: |
pip install pyyaml
docker compose -f docker-compose.yml config > docker-compose.resolved.yml
python ../.github/workflows/scripts/docker-ci-fix-compose-build-cache.py \
--source docker-compose.resolved.yml \
--cache-from "type=gha" \
--cache-to "type=gha,mode=max" \
...
docker buildx bake --allow=fs.read=.. -f docker-compose.resolved.yml --load
Proposed Changes
1. Update pnpm caching in claude.yml
Before:
- Manual cache key generation
- Separate
actions/cachestep - Manual pnpm store directory config
After:
- Use
setup-nodebuilt-incache: "pnpm"option - Remove manual cache step
- Keep
corepack enablebeforesetup-node
2. Update Docker build in claude.yml
Before:
- Manual Docker layer caching via
actions/cachewith/tmp/.buildx-cache - Simple
docker compose build
After:
- Use
crazy-max/ghaction-github-runtime@v3to expose GHA cache - Use
docker-ci-fix-compose-build-cache.pyscript - Build with
docker buildx bake
3. Apply same changes to other Claude workflows
claude-dependabot.yml- Check if it has similar patternsclaude-ci-failure-auto-fix.yml- Check if it has similar patternscopilot-setup-steps.yml- Reusable workflow, may be the source of truth
Files to Modify
.github/workflows/claude.yml.github/workflows/claude-dependabot.yml(if applicable).github/workflows/claude-ci-failure-auto-fix.yml(if applicable)
Dependencies
- PR #12090 must be merged first (provides the
docker-ci-fix-compose-build-cache.pyscript) - Backend Dockerfile optimizations (already in PR #12090)
Test Plan
- Create PR with changes
- Trigger Claude workflow manually or via
@claudemention on a test issue - Compare CI runtime before/after
- Verify Claude agent still works correctly (can checkout, build, run tests)
Risk Assessment
Low risk:
- These are CI infrastructure changes, not code changes
- If caching fails, builds fall back to uncached (slower but works)
- Changes mirror proven patterns from PR #12090
Questions for Reviewer
- Should we wait for PR #12090 to merge before creating this PR?
- Does
copilot-setup-steps.ymlneed updating, or is it a separate concern? - Any concerns about cache key collisions between frontend E2E and Claude workflows?
Verified
- ✅
claude-dependabot.yml: Has same pnpm caching pattern asclaude.yml(manualactions/cache) — NEEDS UPDATE - ✅
claude-ci-failure-auto-fix.yml: Simple workflow with no pnpm or Docker caching — NO CHANGES NEEDED - ✅ Script path:
docker-ci-fix-compose-build-cache.pywill be at.github/workflows/scripts/after PR #12090 merges - ✅ Test seed caching: NOT APPLICABLE — Claude workflows spin up a dev environment but don't run E2E tests with pre-seeded data. The seed caching in PR #12090 is specific to the frontend E2E test suite which needs consistent test data. Claude just needs the services running.