CI/CD Pipeline Errors
GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and resource limits.
Understanding CI/CD errors
CI failures that do not reproduce locally are almost always about environment, permissions or resource limits rather than about your code. CI runners have less memory than a laptop, a deliberately restricted token, a clean cache, and often a different CPU architecture. Treating a CI failure as a code bug before checking those four things wastes an enormous amount of time.
How to debug CI/CD errors
- Re-run the job with debug logging enabled (
ACTIONS_STEP_DEBUG=truein GitHub Actions,CI_DEBUG_TRACEin GitLab). The default log deliberately hides the most useful lines. - Print the environment early:
env | sort,node -v,free -m,df -h. Half of all "works on my machine" CI bugs are visible in that output. - Check token permissions explicitly. GitHub's
GITHUB_TOKENdefaults to read-only in many organisations and produces the misleadingResource not accessible by integrationerror. - Remember that secrets are not available to workflows triggered by pull requests from forks. This is a security feature, not a misconfiguration.
- Reproduce locally in the same container image the runner uses, rather than on your host, before changing pipeline configuration.
Tools worth reaching for
ACTIONS_STEP_DEBUGact (local Actions runner)docker run <runner image>free -m / df -h in-job
All 18 CI/CD errors
- Bazel: no such target / no such packageA label does not resolve: the package has no BUILD file, the target name is wrong, or it is not visible to the caller.
- Bitbucket Pipelines: Memory limit exceededThe pipeline step exceeded the allocated memory (default 4GB). The build process or tests consumed too much RAM.
- CircleCI: Container ran out of memoryBuild process exceeded container memory limit. Need larger resource class or Optimise build.
- GitHub Actions: Failed to save cache (unable to reserve cache) NewTwo concurrent jobs tried to save the same cache key, or the repository is at its 10 GB cache limit. Cache save…
- GitHub Actions: Invalid workflow file, unexpected value NewThe workflow failed schema validation before any job started. Usually an indentation slip that nests a key under the…
- GitHub Actions: OIDC token request failed (not authorized) NewThe workflow tried to exchange a GitHub OIDC token for cloud credentials but was refused. Either the job did not…
- GitHub Actions: refusing to allow an OAuth App to create or update workflow NewA push that adds or edits anything under .github/workflows was rejected because the token lacks the workflow scope. It…
- GitHub Actions: Resource not accessible by integrationWorkflow on fork PR lacks permission to access secrets or write operations.
- GitHub Actions: Secret not available in fork PRsSecrets are not passed to workflows triggered by pull requests from forks for security reasons.
- GitHub Actions: The runner has received a shutdown signal NewThe job died with the machine under it rather than failing. On hosted runners it usually means the process exhausted…
- GitHub Actions: this action uses a deprecated Node version NewGitHub retires the Node runtimes that JavaScript actions execute on. An action pinned to an old major continues to run…
- GitHub Actions: Usage limit exceededFree tier minutes exhausted or concurrent job limit reached. Need to upgrade plan or wait for quota reset.
- GitLab CI: Artifact expiredBuild artifact has expired based on retention policy. Cannot download or use in dependent jobs.
- GitLab CI: jobs config should contain at least one visible job NewEvery job in the pipeline is hidden or excluded. Names starting with a dot are templates rather than jobs, and rules…
- GitLab CI: No runner availableNo registered GitLab runner matches the job's tags or the runner is offline.
- Jenkins: Agent is offlineA Jenkins build agent/node is disconnected. The agent process may have crashed, network issues, or the machine is down.
- Jenkins: Workspace cleanup failedCannot clean workspace due to permission issues or file locks. Prevents build from starting.
- Vercel build: framework detection failedVercel could not detect framework/output directory. Missing dependencies or build config.
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 10Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 14Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 10Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 11OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 11Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 12NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 11Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 10Cache stampedes, stale content, Varnish and CloudFront failures.
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 10Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 10NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 9GenServer timeouts, supervision failures and Mix compilation problems.
- Email 8Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 13Validation, depth limits, N+1 queries and fragment problems.
- gRPC 10Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 8404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 9Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 14Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 17Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 12Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 6GC pauses, thread pool starvation and event loop blocking.
- PHP 11Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 17nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 8Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 11Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 6Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 11Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 13Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 13S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 10Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 8VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 7Gas estimation, nonce management and reverted transactions.
- WebAssembly 7Compile errors, memory bounds and host binding mismatches.
- WebServer 10nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 10Installer failures, missing runtimes, update errors and permission problems.