Problem
GitHub Actions jobs intermittently fail before compilation or test execution because Maven Central returns HTTP 429 responses while Gradle resolves build dependencies.
Recent failures affected the build, Javadoc, and integration-test workflows. The integration workflow expands into a large matrix, and every job builds pyroscope.jar independently inside Docker. This creates a burst of duplicate dependency downloads from the same runner infrastructure.
Example error:
Could not resolve all artifacts for configuration 'classpath'.
Could not GET https://repo.maven.apache.org/maven2/...
Received status code 429 from server: Too Many Requests
These failures are infrastructure-related and can make unrelated changes appear broken.
Expected behavior
CI dependency resolution should remain reliable when the complete build and integration matrices run concurrently.
Proposed mitigation
- enable Gradle dependency caching in build, test, and Javadoc jobs
- cache dependencies before upgrading the Gradle wrapper for newer Java versions
- limit integration-test matrix concurrency
A longer-term improvement would be to build pyroscope.jar once and reuse it across integration jobs instead of running shadowJar independently in every Docker build.
Related
Problem
GitHub Actions jobs intermittently fail before compilation or test execution because Maven Central returns HTTP 429 responses while Gradle resolves build dependencies.
Recent failures affected the build, Javadoc, and integration-test workflows. The integration workflow expands into a large matrix, and every job builds
pyroscope.jarindependently inside Docker. This creates a burst of duplicate dependency downloads from the same runner infrastructure.Example error:
These failures are infrastructure-related and can make unrelated changes appear broken.
Expected behavior
CI dependency resolution should remain reliable when the complete build and integration matrices run concurrently.
Proposed mitigation
A longer-term improvement would be to build
pyroscope.jaronce and reuse it across integration jobs instead of runningshadowJarindependently in every Docker build.Related