Skip to content

ci: use depot runners #11260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 16, 2025
Merged

ci: use depot runners #11260

merged 1 commit into from
Apr 16, 2025

Conversation

mujahidkay
Copy link
Member

@mujahidkay mujahidkay commented Apr 14, 2025

closes: #11238

Description

Replaces standard GH runner machines with depot runners for integration tests.

Step Before (Duration & Link) After (Duration & Link)
deployment-step 12m 42s 5m 33s
test-docker-build build sdk step 5m 28s 2m 21s
test-docker-build build proposal tests step 9m 50s 6m 19s
test-docker-build run proposal tests step 22m 51s 16m 34s

Security Considerations

Nothing new.

Scaling Considerations

Reduces job times by a few minutes (details in description). Sets up a baseline for future docker build caching

Documentation Considerations

None

Testing Considerations

CI is passing

Upgrade Considerations

None

@mujahidkay mujahidkay added the force:integration Force integration tests to run on PR label Apr 14, 2025
Copy link

cloudflare-workers-and-pages bot commented Apr 14, 2025

Deploying agoric-sdk with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9445774
Status: ✅  Deploy successful!
Preview URL: https://32959544.agoric-sdk.pages.dev
Branch Preview URL: https://mk-depot-runners-integration.agoric-sdk.pages.dev

View logs

@mujahidkay mujahidkay force-pushed the mk/depot-runners-integration-yml branch from 47dbdf7 to 3c5e2ff Compare April 14, 2025 10:19
@mujahidkay mujahidkay self-assigned this Apr 14, 2025
@mujahidkay mujahidkay changed the title (WIP) depot runners ci: use depot runners Apr 14, 2025
@@ -126,7 +126,7 @@ jobs:
needs: pre_check
if: needs.pre_check.outputs.should_run == 'true'

runs-on: 'ubuntu-22.04-4core-150SSD-16RAM'
runs-on: 'depot-ubuntu-22.04-4'
Copy link
Member Author

Choose a reason for hiding this comment

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

There's a minor difference b/w 4 core and 8 core machines - went with fewer core machine as this step is not the bottleneck

Copy link
Contributor

Choose a reason for hiding this comment

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

What difference other than cores? You mean cost diff as well?

Copy link
Member Author

Choose a reason for hiding this comment

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

I meant the diff in reduction in time. Cost diff for sure b/w 4 and 8 core machines obvio

@@ -199,7 +199,7 @@ jobs:
test-docker-build:
needs: pre_check
if: needs.pre_check.outputs.should_run == 'true'
runs-on: 'ubuntu-22.04-4core-150SSD-16RAM'
runs-on: 'depot-ubuntu-22.04-8'
Copy link
Member Author

Choose a reason for hiding this comment

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

better machine with similar pricing to the previous runner

@mujahidkay mujahidkay marked this pull request as ready for review April 14, 2025 10:57
@mujahidkay mujahidkay requested a review from a team as a code owner April 14, 2025 10:57
Copy link
Contributor

@Muneeb147 Muneeb147 left a comment

Choose a reason for hiding this comment

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

Do we see native docker images layer/build caching in depot runners? I think the time reduction is due to this surely

@@ -126,7 +126,7 @@ jobs:
needs: pre_check
if: needs.pre_check.outputs.should_run == 'true'

runs-on: 'ubuntu-22.04-4core-150SSD-16RAM'
runs-on: 'depot-ubuntu-22.04-4'
Copy link
Contributor

Choose a reason for hiding this comment

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

What difference other than cores? You mean cost diff as well?

@mujahidkay
Copy link
Member Author

Do we see native docker images layer/build caching in depot runners? I think the time reduction is due to this surely

No, this is by just switching to depot runners. See https://depot.dev/blog/depot-github-actions-runners.

@mujahidkay mujahidkay added force:integration Force integration tests to run on PR and removed force:integration Force integration tests to run on PR labels Apr 14, 2025
@Muneeb147
Copy link
Contributor

Do we see native docker images layer/build caching in depot runners? I think the time reduction is due to this surely

No, this is by just switching to depot runners. See https://depot.dev/blog/depot-github-actions-runners.

https://agoricopco.slack.com/archives/C06T3ELB45U/p1744053704828559?thread_ts=1744050271.322849&cid=C06T3ELB45U

If we see this thread, our main goal was to have bettwr docker layers caching through depot. Just curious if we have achieved that by usind depot runners or not. Or do we need something else get changed as well?

@mujahidkay
Copy link
Member Author

I am drafting this PR till I figure out why CI is breaking all of a sudden (it passed when was draft and broke afterwards).

@Muneeb147 Muneeb147 marked this pull request as draft April 14, 2025 12:22
@mujahidkay
Copy link
Member Author

Do we see native docker images layer/build caching in depot runners? I think the time reduction is due to this surely

No, this is by just switching to depot runners. See https://depot.dev/blog/depot-github-actions-runners.

https://agoricopco.slack.com/archives/C06T3ELB45U/p1744053704828559?thread_ts=1744050271.322849&cid=C06T3ELB45U

If we see this thread, our main goal was to have bettwr docker layers caching through depot. Just curious if we have achieved that by usind depot runners or not. Or do we need something else get changed as well?

That is still the goal. This is just a base step towards achieving that. as per https://depot.dev/docs/github-actions/overview

"Our runners are automatically integrated into our distributed cache architecture for upload and download speeds up to 1000 MiB/s on 12.5 Gbps of network throughput. We've brought 10x faster caching to GitHub Actions jobs by plugging in the same cache orchestration system that we use for our Docker image builds. You don't have to do anything to get this benefit; it's just there."

@mujahidkay mujahidkay force-pushed the mk/depot-runners-integration-yml branch from 3c5e2ff to ef1feb4 Compare April 15, 2025 06:46
@kylegalbraith
Copy link

Do we see native docker images layer/build caching in depot runners? I think the time reduction is due to this surely

No, this is by just switching to depot runners. See https://depot.dev/blog/depot-github-actions-runners.

https://agoricopco.slack.com/archives/C06T3ELB45U/p1744053704828559?thread_ts=1744050271.322849&cid=C06T3ELB45U
If we see this thread, our main goal was to have bettwr docker layers caching through depot. Just curious if we have achieved that by usind depot runners or not. Or do we need something else get changed as well?

That is still the goal. This is just a base step towards achieving that. as per https://depot.dev/docs/github-actions/overview

"Our runners are automatically integrated into our distributed cache architecture for upload and download speeds up to 1000 MiB/s on 12.5 Gbps of network throughput. We've brought 10x faster caching to GitHub Actions jobs by plugging in the same cache orchestration system that we use for our Docker image builds. You don't have to do anything to get this benefit; it's just there."

👋 Founder of Depot here. Just wanted to flag that our runners are not automatically integrated with our container build product out of the box. Our container build acceleration runs on optimized builders that run next to the GHA runner when you use depot build or depot/build-push-action inside of our runners. It's the container builders that have optimized persistent caching using NVMe drives, so you will need to make sure you swap docker build for depot build anywhere you want to use them.

Also feel free to ping me via email if I can ever help with anything kyle [at] depot.dev.

@mujahidkay mujahidkay marked this pull request as ready for review April 15, 2025 10:13
@mujahidkay
Copy link
Member Author

Companion PR: #11271

Copy link
Member

@turadg turadg left a comment

Choose a reason for hiding this comment

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

Lgtm. We can iterate on the machine size for time / cost tradeoff.

@mujahidkay mujahidkay added the automerge:rebase Automatically rebase updates, then merge label Apr 16, 2025
@mergify mergify bot force-pushed the mk/depot-runners-integration-yml branch from ef1feb4 to 9445774 Compare April 16, 2025 02:27
@mhofman mhofman removed the automerge:rebase Automatically rebase updates, then merge label Apr 16, 2025
Copy link
Contributor

mergify bot commented Apr 16, 2025

This pull request has been removed from the queue for the following reason: pull request dequeued.

Pull request #11260 has been dequeued. The pull request rule doesn't match anymore. The following conditions don't match anymore:

  • label=automerge:rebase
  • any of: [🔀 queue conditions]
    • all of: [📌 queue conditions of queue rebase]
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick (xs)
        • check-skipped = test-quick (xs)
        • check-success = test-quick (xs)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick2 (xs)
        • check-skipped = test-quick2 (xs)
        • check-success = test-quick2 (xs)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-cosmic-swingset (xs)
        • check-skipped = test-cosmic-swingset (xs)
        • check-success = test-cosmic-swingset (xs)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-swingset (xs)
        • check-skipped = test-zoe-swingset (xs)
        • check-success = test-zoe-swingset (xs)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-unit (xs)
        • check-skipped = test-zoe-unit (xs)
        • check-success = test-zoe-unit (xs)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = lint-primary
        • check-skipped = lint-primary
        • check-success = lint-primary
      • any of: [🛡 GitHub branch protection]
        • check-neutral = lint-rest
        • check-skipped = lint-rest
        • check-success = lint-rest
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (xs, 0, 4)
        • check-skipped = test-boot (xs, 0, 4)
        • check-success = test-boot (xs, 0, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (xs, 1, 4)
        • check-skipped = test-boot (xs, 1, 4)
        • check-success = test-boot (xs, 1, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (xs, 2, 4)
        • check-skipped = test-boot (xs, 2, 4)
        • check-success = test-boot (xs, 2, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (xs, 3, 4)
        • check-skipped = test-boot (xs, 3, 4)
        • check-success = test-boot (xs, 3, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (xs, 0, 5)
        • check-skipped = test-swingset (xs, 0, 5)
        • check-success = test-swingset (xs, 0, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (xs, 1, 5)
        • check-skipped = test-swingset (xs, 1, 5)
        • check-success = test-swingset (xs, 1, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (xs, 2, 5)
        • check-skipped = test-swingset (xs, 2, 5)
        • check-success = test-swingset (xs, 2, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (xs, 3, 5)
        • check-skipped = test-swingset (xs, 3, 5)
        • check-success = test-swingset (xs, 3, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (xs, 4, 5)
        • check-skipped = test-swingset (xs, 4, 5)
        • check-success = test-swingset (xs, 4, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = dependency-graph
        • check-skipped = dependency-graph
        • check-success = dependency-graph
      • any of: [🛡 GitHub branch protection]
        • check-neutral = flake-check
        • check-skipped = flake-check
        • check-success = flake-check
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-swingset (node-old)
        • check-skipped = test-zoe-swingset (node-old)
        • check-success = test-zoe-swingset (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-swingset (node-new)
        • check-skipped = test-zoe-swingset (node-new)
        • check-success = test-zoe-swingset (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-unit (node-new)
        • check-skipped = test-zoe-unit (node-new)
        • check-success = test-zoe-unit (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-zoe-unit (node-old)
        • check-skipped = test-zoe-unit (node-old)
        • check-success = test-zoe-unit (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-new, 0, 4)
        • check-skipped = test-boot (node-new, 0, 4)
        • check-success = test-boot (node-new, 0, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-new, 1, 4)
        • check-skipped = test-boot (node-new, 1, 4)
        • check-success = test-boot (node-new, 1, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-new, 2, 4)
        • check-skipped = test-boot (node-new, 2, 4)
        • check-success = test-boot (node-new, 2, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-new, 3, 4)
        • check-skipped = test-boot (node-new, 3, 4)
        • check-success = test-boot (node-new, 3, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-old, 0, 4)
        • check-skipped = test-boot (node-old, 0, 4)
        • check-success = test-boot (node-old, 0, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-old, 1, 4)
        • check-skipped = test-boot (node-old, 1, 4)
        • check-success = test-boot (node-old, 1, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-old, 2, 4)
        • check-skipped = test-boot (node-old, 2, 4)
        • check-success = test-boot (node-old, 2, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-boot (node-old, 3, 4)
        • check-skipped = test-boot (node-old, 3, 4)
        • check-success = test-boot (node-old, 3, 4)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-cosmic-swingset (node-old)
        • check-skipped = test-cosmic-swingset (node-old)
        • check-success = test-cosmic-swingset (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-cosmic-swingset (node-new)
        • check-skipped = test-cosmic-swingset (node-new)
        • check-success = test-cosmic-swingset (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-governance (node-new)
        • check-skipped = test-governance (node-new)
        • check-success = test-governance (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-governance (node-old)
        • check-skipped = test-governance (node-old)
        • check-success = test-governance (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-inter-protocol (node-new)
        • check-skipped = test-inter-protocol (node-new)
        • check-success = test-inter-protocol (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-inter-protocol (node-old)
        • check-skipped = test-inter-protocol (node-old)
        • check-success = test-inter-protocol (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick (node-new)
        • check-skipped = test-quick (node-new)
        • check-success = test-quick (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick (node-old)
        • check-skipped = test-quick (node-old)
        • check-success = test-quick (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick2 (node-old)
        • check-skipped = test-quick2 (node-old)
        • check-success = test-quick2 (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-quick2 (node-new)
        • check-skipped = test-quick2 (node-new)
        • check-success = test-quick2 (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-solo (node-new)
        • check-skipped = test-solo (node-new)
        • check-success = test-solo (node-new)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-solo (node-old)
        • check-skipped = test-solo (node-old)
        • check-success = test-solo (node-old)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-new, 0, 5)
        • check-skipped = test-swingset (node-new, 0, 5)
        • check-success = test-swingset (node-new, 0, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-new, 1, 5)
        • check-skipped = test-swingset (node-new, 1, 5)
        • check-success = test-swingset (node-new, 1, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-new, 2, 5)
        • check-skipped = test-swingset (node-new, 2, 5)
        • check-success = test-swingset (node-new, 2, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-new, 3, 5)
        • check-skipped = test-swingset (node-new, 3, 5)
        • check-success = test-swingset (node-new, 3, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-new, 4, 5)
        • check-skipped = test-swingset (node-new, 4, 5)
        • check-success = test-swingset (node-new, 4, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-old, 0, 5)
        • check-skipped = test-swingset (node-old, 0, 5)
        • check-success = test-swingset (node-old, 0, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-old, 1, 5)
        • check-skipped = test-swingset (node-old, 1, 5)
        • check-success = test-swingset (node-old, 1, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-old, 2, 5)
        • check-skipped = test-swingset (node-old, 2, 5)
        • check-success = test-swingset (node-old, 2, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-old, 3, 5)
        • check-skipped = test-swingset (node-old, 3, 5)
        • check-success = test-swingset (node-old, 3, 5)
      • any of: [🛡 GitHub branch protection]
        • check-neutral = test-swingset (node-old, 4, 5)
        • check-skipped = test-swingset (node-old, 4, 5)
        • check-success = test-swingset (node-old, 4, 5).

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio requeue comment.

@mhofman
Copy link
Member

mhofman commented Apr 16, 2025

Sorry, this change seems super small in scope, please proceed.

@mhofman mhofman added the automerge:squash Automatically squash merge label Apr 16, 2025
@mergify mergify bot merged commit 50a00cf into master Apr 16, 2025
100 of 119 checks passed
@mergify mergify bot deleted the mk/depot-runners-integration-yml branch April 16, 2025 03:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge:squash Automatically squash merge force:integration Force integration tests to run on PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Depot Runners for Agoric-sdk actions/workflows
5 participants