Skip to content

[DX-3383] Increase Docker Build runner power#21699

Open
kalverra wants to merge 1 commit intodevelopfrom
moreDockerPower
Open

[DX-3383] Increase Docker Build runner power#21699
kalverra wants to merge 1 commit intodevelopfrom
moreDockerPower

Conversation

@kalverra
Copy link
Collaborator

Increases Docker Build runners from 32 core -> 64 core machines. Gives us a speedup of 29s/run, for an extra estimated cost of $50/month

image

@kalverra kalverra requested review from Tofel and erikburt March 25, 2026 17:22
@kalverra kalverra requested review from a team as code owners March 25, 2026 17:22
Copilot AI review requested due to automatic review settings March 25, 2026 17:22
@kalverra kalverra changed the title Increase Docker Build runner power [DX-3383] Increase Docker Build runner power Mar 25, 2026
@github-actions
Copy link
Contributor

👋 kalverra, thanks for creating this pull request!

To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team.

Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks!

@github-actions
Copy link
Contributor

✅ No conflicts with other open PRs targeting develop

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Risk Rating: MEDIUM

This PR updates the integration test workflow to use larger self-hosted “runs-on” builder runners for Docker image builds, aiming to reduce build time at a modest additional monthly cost.

Changes:

  • Increase self-hosted builder runner sizing from ~32–36 CPU / 64–72 GB to ~64–72 CPU / 128–192 GB for core and plugins image builds.
  • Increase the GitHub-hosted fallback runner size in the build matrix from ubuntu22.04-8cores-32GB to ubuntu22.04-16cores-64GB.

Suggested reviewers (per .github/CODEOWNERS): @smartcontractkit/devex-cicd, @smartcontractkit/devex-tooling, @smartcontractkit/core.

Comment on lines 219 to 221
- name: ""
runner: ${{ needs.labels.outputs.builder-runner-label-core || 'ubuntu22.04-8cores-32GB' }}
runner: ${{ needs.labels.outputs.builder-runner-label-core || 'ubuntu22.04-16cores-64GB' }}
dockerfile: core/chainlink.Dockerfile
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The inline || 'ubuntu22.04-16cores-64GB' fallback is probably dead code: needs.labels.outputs.builder-runner-label-core should always be set by the labels job outputs (either to the self-hosted runs-on label or, on opt-out, to GH_BUILDER_RUNNER). Consider removing the fallback to avoid confusion, or keep it but align it with the opt-out runner so defaults don’t drift.

Copilot uses AI. Check for mistakes.
- name: (plugins)
runner: ${{ needs.labels.outputs.builder-runner-label-plugins || 'ubuntu22.04-8cores-32GB' }}
runner: ${{ needs.labels.outputs.builder-runner-label-plugins || 'ubuntu22.04-16cores-64GB' }}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for plugins: || 'ubuntu22.04-16cores-64GB' is likely unused given the labels job always sets the runner label output. Consider removing it (or aligning defaults) to keep runner selection logic simpler.

Suggested change
runner: ${{ needs.labels.outputs.builder-runner-label-plugins || 'ubuntu22.04-16cores-64GB' }}
runner: ${{ needs.labels.outputs.builder-runner-label-plugins }}

Copilot uses AI. Check for mistakes.
Comment on lines +183 to +184
SH_BUILDER_RUNNER_CORE: runs-on=${{ github.run_id }}-core/cpu=64+72/memory=128+192/family=c6i+c7i+c5.*/extras=s3-cache+tmpfs
SH_BUILDER_RUNNER_PLUGINS: runs-on=${{ github.run_id }}-plugins/cpu=64+72/memory=128+192/family=c6i+c7i+c5.*/extras=s3-cache+tmpfs
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can look at the resource metrics now as gathered by runs-on/action:

Old setup doesn't saturate the CPU: https://github.com/smartcontractkit/chainlink/actions/runs/23553695576/job/68574579076#step:13:46

So is it bottlenecked on a few cores?

Copy link
Collaborator

@erikburt erikburt Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Speed up could be from the runner queue time, and favouring more resourceful ec2 instances, might make them more available?

Copy link
Collaborator

@erikburt erikburt Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could start trying to cache docker layers?

chainlink-ccv has this setup: https://github.com/smartcontractkit/chainlink-ccv/blob/main/.github/actions/build-cl/action.yaml#L43-L47

Would need to wire this into ctf-build-image, and pass it to our internal action which already supports it iirc.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@trunk-io
Copy link

trunk-io bot commented Mar 25, 2026

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants