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?
3db2b8d to
a0576a2
Compare
a0576a2 to
a28c601
Compare
c1b4d71 to
2bfddb7
Compare
2bfddb7 to
8825e7b
Compare
8825e7b to
6d4c51b
Compare
6d4c51b to
d12ee71
Compare
|




Stack created with GitHub Stacks CLI • Give Feedback 💬