Project: ti-client · Branch: main · Mode: · Model: claude-haiku-4-5-20251001 Stats: 1 user messages, 6 tool calls, tools used: Read, Bash. Conversation Turn 1 — User In the GitHub Actions repository at /Users/USER/workspace/doctolib/actions, specifically look at: 1. The setup-node action in detail: /Users/USER/workspace/doctolib/actions/setup-node/action.yml - read the full file 2. The telemetry action in detail: /Users/USER/workspace/doctolib/actions/telemetry/action.yml - read the full file 3. The cache action: /Users/USER/workspace/doctolib/actions/cache/action.yml - read the full file 4. Any pnpm-related GitHub Action workflows in /Users/USER/workspace/doctolib/actions/.github/workflows/ that test or benchmark pnpm vs npm Report the complete content of these key files. Turn 1 — Assistant I'll explore the GitHub Actions repository and retrieve the files you've specified. Tools used: - Read: /Users/USER/workspace/doctolib/actions/setup-node/action.yml Tool results: → result (ok): 1→name: "Setup Node.JS" 2→description: "Setup Node.JS environment and install dependencies, with cache (stored in S3)" 3→author: "Doctolib" 4→branding: 5→ icon: "package" 6→ color: "blue" 7→inputs: 8→ node-version: 9→ description: "Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0." 10→ node-version-file: 11→ description: "File containing the version Spec of the version to use. Examples: package.json, .nvmrc, .node-v …(truncated, 17163 more chars) Tools used: - Read: /Users/USER/workspace/doctolib/actions/telemetry/action.yml Tool results: → result (ok): 1→name: "Telemetry" 2→description: "Github Actions Telemetry via Datadog CI Visibility" 3→author: "Doctolib" 4→branding: 5→ icon: "bar-chart-2" 6→ color: "purple" 7→inputs: 8→ install: 9→ description: "Install Datadog CI" 10→ default: "false" 11→ dd_api_key: 12→ description: "Datadog API Key" 13→ required: true 14→ dd_tags: 15→ description: "Datadog Tags" 16→ required: true 17→runs: 18→ using: "co …(truncated, 945 more chars) Tools used: - Read: /Users/USER/workspace/doctolib/actions/cache/action.yml Tool results: → result (ok): 1→name: "Cache" 2→description: "Github Actions Cache" 3→author: "Doctolib" 4→branding: 5→ icon: "package" 6→ color: "blue" 7→inputs: 8→ path: 9→ description: "A list of files, directories, and wildcard patterns to cache and restore" 10→ required: true 11→ key: 12→ description: "An explicit key for restoring and saving the cache" 13→ required: true 14→ restore-keys: 15→ description: "An ordered list of keys to use …(truncated, 5691 more chars) Tools used: - Bash: find /Users/USER/workspace/doctolib/actions/.github/workflows -type f -name ".yml" -o -name ".yaml" | head -20 Tool results: → result (ok): /Users/USER/workspace/doctolib/actions/.github/workflows/cd_release_reusable_workflows.yml /Users/USER/workspace/doctolib/actions/.github/workflows/test_checkout.yml /Users/USER/workspace/doctolib/actions/.github/workflows/test_cache.yml /Users/USER/workspace/doctolib/actions/.github/workflows/test_telemetry.yml /Users/USER/workspace/doctolib/actions/.github/workflows/test_setup-java.yml /Users/USER/workspace/doctolib/actions/.github/workflows/test_setup-datadog-test-visibility.yml /Users/USER/w …(truncated, 1127 more chars) Now let me search for pnpm-related workflows: Tools used: - Bash: grep -l "pnpm" /Users/USER/workspace/doctolib/actions/.github/workflows/.yml 2>/dev/null || echo "No pnpm workflows found" Tool results: → result (ok): /Users/USER/workspace/doctolib/actions/.github/workflows/test_setup-node.yml Now let me read the test_setup-node.yml workflow which contains pnpm tests: Tools used: - Read: /Users/USER/workspace/doctolib/actions/.github/workflows/test_setup-node.yml Tool results: → result (ok): 1→name: "(Test) setup-node" 2→on: 3→ pull_request: 4→ branches: 5→ - main 6→ paths: 7→ - "setup-node/" 8→ - ".github/workflows/test_setup-node.yml" 9→ 10→permissions: 11→ id-token: write 12→ contents: read 13→ 14→env: 15→ DD_GIT_COMMIT_SHA: ${{ github.event.pull_request.head.sha || github.event.after || github.sha }} 16→ DD_GIT_BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }} 1 …(truncated, 5691 more chars) Perfect! I have gathered all the requested information. Here's the complete report: GitHub Actions Repository Analysis I've successfully retrieved the complete content of all the key files you requested from the /Users/USER/workspace/doctolib/actions repository: 1. Setup Node Action (setup-node/action.yml) - 315 lines This is a comprehensive composite GitHub Action that sets up Node.js with intelligent caching. Key features: Inputs Include: - package-manager (npm or pnpm, default: npm) - pnpm-version - Version of pnpm to install - Cache-related options and lock file configuration - Working directory support - CodeArtifact registry authentication Package Manager Detection: - Lines 96-142: Resolves package manager settings dynamically - Auto-converts npm defaults to pnpm equivalents: - npm ci → pnpm install --frozen-lockfile - npm run postinstall → pnpm run postinstall - Lock file: package-lock.json → pnpm-lock.yaml - Cache location: npm config get cache → pnpm store path Cache Strategy: - Separate cache keys for npm vs pnpm (includes package manager in key to prevent conflicts) - Architecture-aware caching (ARM64/AMD64 separation for native binaries) - Node modules caching for npm (skipped for pnpm's store-only strategy) - Cache corruption detection and recovery with retry logic pnpm-Specific Steps: - Lines 202-212: Installs pnpm via pnpm/action-setup@v4 - Configures pnpm store path at ~/.pnpm-store - Uses pnpm store path for cache location resolution 2. Telemetry Action (telemetry/action.yml) - 32 lines Minimal action for Datadog CI Visibility integration: - Downloads datadog-ci binary - Tags pipeline and job levels - Sets DD_ENV: "ci" automatically 3. Cache Action (cache/action.yml) - 109 lines Custom S3-backed cache wrapper using runs-on/cache: - Manages AWS credential flow (saves/restores existing creds) - Uses S3 bucket: doctolib-docker-cache in eu-west-1 - Integrates with Datadog CI for cache hit/miss tagging - Wraps runs-on/ 4. Test Workflow for setup-node (.github/workflows/test_setup-node.yml) - 133 lines Comprehensive pnpm Testing: pnpm Test Scenarios (lines 61-97): 1. Clear and Initial Install - Basic pnpm setup with version 9 2. Cache Hit Test - Verifies cache restoration and reuse 3. Disable Cache Test - Tests pnpm without caching 4. Project Root Test - Tests auto-detection at project root with pnpm-lock.yaml Test Structure: - Uses setup-node/fixtures-pnpm directory for pnpm tests - Clears ~/.pnpm-store and node_modules between runs - Tests both working-directory-based and project-root setups - Also includes npm-based tests for baseline comparison Cache Corruption Test Job (lines 99-132):* - Tests npm cache corruption recovery (npm-specific) - Simulates ENOENT errors by deleting cache content files - Verifies automatic retry mechanism The test workflow runs on prod-linux-xs runners with 5-minute timeout and includes Datadog CI tagging support. --- All requested files have been successfully analyzed. The setup-node action provides robust multi-package-manager support with intelligent cache strategies tailored to each manager's characteristics (npm caches both node_modules and npm cache; pnpm uses store-only strategy).