{
  "id": "cicd/github-actions-artifact-upload-timeout",
  "signature": "Error: Failed to upload artifact. Request timed out after 120000ms while uploading artifact 'dist'",
  "signature_zh": "上传工件失败：上传工件'dist'时请求超时120秒",
  "regex": "Failed to upload artifact.*Request timed out after \\d+ms",
  "domain": "cicd",
  "category": "network_error",
  "subcategory": null,
  "root_cause": "Artifact upload to GitHub Actions storage times out due to large file size, slow network connectivity, or server-side throttling during peak hours.",
  "root_cause_type": "generic",
  "root_cause_zh": "工件上传到GitHub Actions存储超时，原因是大文件大小、网络连接缓慢或高峰时段服务器端限流。",
  "versions": [
    {
      "version": "actions/upload-artifact@v3",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "actions/upload-artifact@v4",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "GitHub Actions hosted runner",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "Transient network issues may resolve, but if file size or throttling is the cause, retries fail repeatedly.",
      "fail_rate": 0.55,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "actions/upload-artifact does not support custom timeout; timeout is hardcoded on GitHub's side.",
      "fail_rate": 0.95,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Upload step already compresses; manual compression adds overhead and may not reduce size enough.",
      "fail_rate": 0.4,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Split artifact into smaller chunks using multiple upload steps: `tar -czf dist-part1.tar.gz dist/ && actions/upload-artifact@v4 with name: dist-part1` and repeat",
      "success_rate": 0.85,
      "how": "Split artifact into smaller chunks using multiple upload steps: `tar -czf dist-part1.tar.gz dist/ && actions/upload-artifact@v4 with name: dist-part1` and repeat",
      "condition": "",
      "sources": []
    },
    {
      "action": "Reduce artifact size by excluding unnecessary files: `actions/upload-artifact@v4 with path: dist/ --exclude '*.map'` and add .gitignore patterns",
      "success_rate": 0.8,
      "how": "Reduce artifact size by excluding unnecessary files: `actions/upload-artifact@v4 with path: dist/ --exclude '*.map'` and add .gitignore patterns",
      "condition": "",
      "sources": []
    },
    {
      "action": "Use self-hosted runner with faster network or upload via custom script using GitHub API with chunked upload",
      "success_rate": 0.9,
      "how": "Use self-hosted runner with faster network or upload via custom script using GitHub API with chunked upload",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Split artifact into smaller chunks using multiple upload steps: `tar -czf dist-part1.tar.gz dist/ && actions/upload-artifact@v4 with name: dist-part1` and repeat",
    "Reduce artifact size by excluding unnecessary files: `actions/upload-artifact@v4 with path: dist/ --exclude '*.map'` and add .gitignore patterns",
    "Use self-hosted runner with faster network or upload via custom script using GitHub API with chunked upload"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://github.com/actions/upload-artifact#readme",
  "official_doc_section": null,
  "error_code": "UPLOAD_TIMEOUT",
  "verification_tier": "ai_generated",
  "confidence": 0.88,
  "fix_success_rate": 0.78,
  "resolvable": "true",
  "first_seen": "2024-01-20",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}