optimize: Docker Build Times - #23420
Conversation
|
✅ No conflicts with other open PRs targeting |
There was a problem hiding this comment.
Pull request overview
Risk Rating: MEDIUM
This PR targets faster Docker image builds in CI by increasing loopinstall parallelism for remote plugin installation and adjusting the CI cache-map to persist the Go build cache more directly.
Changes:
- Add
CL_LOOPINSTALL_CONCURRENCYas a configurable knob (Make + Docker build args/env) and wire it intogo tool loopinstall. - Increase default concurrency used in Docker builds (default build arg set to
16). - Update the integration tests workflow
cache-mapentry for the Go build cache.
Areas needing scrupulous human review:
.github/workflows/integration-tests.ymlcache-mapformat and key naming (depends on behavior/schema of the externalctf-build-imageaction).
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
plugins/chainlink.Dockerfile |
Adds a build arg/env for CL_LOOPINSTALL_CONCURRENCY and passes it into plugin install make targets. |
GNUmakefile |
Introduces CL_LOOPINSTALL_CONCURRENCY and uses it for go tool loopinstall concurrency. |
core/chainlink.Dockerfile |
Mirrors the plugin Dockerfile changes to control loopinstall concurrency during image builds. |
.github/workflows/integration-tests.yml |
Changes the build step cache-map to target /root/.cache/go-build for the Go build cache. |
Suppressed comments (2)
GNUmakefile:104
- In the output-dir branch,
$(LOOPINSTALL_TESTING_ARGS)already includes the--output-installation-artifacts $(CL_LOOPINSTALL_OUTPUT_DIR)/testing.jsonflag/value, so passing it again explicitly is redundant.
install-plugins-testing: ## Build & install testing only LOOPP binaries (plugins).
if [ -n "$(CL_LOOPINSTALL_OUTPUT_DIR)" ]; then \
GOPRIVATE=github.com/smartcontractkit/* go tool loopinstall --concurrency $(CL_LOOPINSTALL_CONCURRENCY) $(LOOPINSTALL_TESTING_ARGS) --output-installation-artifacts $(CL_LOOPINSTALL_OUTPUT_DIR)/testing.json ./plugins/plugins.testing.yaml; \
else \
GNUmakefile:96
- In the output-dir branch,
$(LOOPINSTALL_PRIVATE_ARGS)already includes the--output-installation-artifacts $(CL_LOOPINSTALL_OUTPUT_DIR)/private.jsonflag/value, so the explicit--output-installation-artifacts .../private.jsonhere is redundant.
if [ -n "$(CL_LOOPINSTALL_OUTPUT_DIR)" ]; then \
GOPRIVATE=github.com/smartcontractkit/* go tool loopinstall --concurrency $(CL_LOOPINSTALL_CONCURRENCY) $(LOOPINSTALL_PRIVATE_ARGS) --output-installation-artifacts $(CL_LOOPINSTALL_OUTPUT_DIR)/private.json ./plugins/plugins.private.yaml; \
else \
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Was this an accidentally committed file?
|




Stack created with GitHub Stacks CLI • Give Feedback 💬