Skip to content

CI: migrate Vagrant to Lima#13728

Merged
mxpv merged 1 commit into
containerd:mainfrom
AkihiroSuda:lima
Jul 9, 2026
Merged

CI: migrate Vagrant to Lima#13728
mxpv merged 1 commit into
containerd:mainfrom
AkihiroSuda:lima

Conversation

@AkihiroSuda

@AkihiroSuda AkihiroSuda commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fix #13727

The test scripts in the Vagrantfile were split out to script/vm/*.sh . The scripts depend on neither Vagrant nor Lima, and can be used with other VM environments too.

Assisted-by: Claude Fable 5 [email protected]

Copilot AI review requested due to automatic review settings July 7, 2026 23:39
@github-project-automation github-project-automation Bot moved this to Needs Triage in Pull Request Review Jul 7, 2026
@AkihiroSuda AkihiroSuda added kind/test cherry-pick/1.7.x Change to be cherry picked to release/1.7 branch cherry-pick/2.0.x Change to be cherry picked to release/2.0 branch cherry-pick/2.2.x Change to be cherry picked to release/2.2 branch cherry-pick/2.3.x Change to be cherry picked to release/2.3 labels Jul 7, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the Linux VM-based CI integration job from Vagrant/libvirt to Lima, and moves the former Vagrant provision/test logic into reusable shell scripts under script/lima/.

Changes:

  • Remove the top-level Vagrantfile and the legacy Vagrant root-resize helper.
  • Add Lima guest provisioning and test runner scripts (script/lima/*) plus usage documentation.
  • Update .github/workflows/ci.yml to replace the integration-vagrant job with integration-lima using lima-vm/lima-actions/setup.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
Vagrantfile Removed Vagrant-based VM provisioning and test orchestration.
script/resize-vagrant-root.sh Removed Vagrant-specific root filesystem resize helper.
script/lima/provision.sh New guest provisioning script for installing dependencies, Go, runc/CNI/cri-tools, containerd, SELinux config.
script/lima/test-integration.sh New Lima guest runner for make integration and a targeted Go test.
script/lima/test-cri-integration.sh New Lima guest runner for CRI integration test script.
script/lima/test-cri.sh New Lima guest runner for critest against systemd-managed containerd.
script/lima/README.md Documentation for local usage and supported environment variables.
.gitignore Stop ignoring .vagrant/ since Vagrant is removed.
.github/workflows/release/Dockerfile.dockerignore Stop ignoring .vagrant/ in release Docker build context.
.github/workflows/ci.yml Replace the Vagrant-based integration job with a Lima-based matrix job.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread script/vm/test-cri.sh

@samuelkarp samuelkarp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This generally looks good. And seems slightly faster.

Comment thread .github/workflows/ci.yml Outdated
Comment thread script/lima/README.md Outdated
Vagrant is no longer well maintained: e.g., its apt repository does not
provide packages for Ubuntu 26.04 (hashicorp/vagrant#13811), and recent
Fedora boxes are no longer published to HashiCorp's registry, so the CI
had to download the box file manually from Fedora mirrors.

The test scripts in the Vagrantfile were split out to script/vm/*.sh .
The scripts depend on neither Vagrant nor Lima, and can be used with
other VM environments too.

Assisted-by: Claude Fable 5 <[email protected]>
Signed-off-by: Akihiro Suda <[email protected]>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.

Comment thread script/vm/README.md
Copilot AI review requested due to automatic review settings July 8, 2026 12:10
@AkihiroSuda
AkihiroSuda marked this pull request as ready for review July 8, 2026 12:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/release/Dockerfile.dockerignore

@estesp estesp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

looks good!

@estesp

estesp commented Jul 8, 2026

Copy link
Copy Markdown
Member

This generally looks good. And seems slightly faster.

Claude says "You're absolutely right" 😂

Both PRs ran the identical 10-job matrix. Jobs paired by distro / cgroup driver / runtime:

  ┌──────────────────────────────┬──────────────────┬───────────────┬────────────────┐
  │            Config            │ Vagrant (#13720) │ Lima (#13728) │  Improvement   │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ fedora-44, cgroupfs, runc    │ 24m03s           │ 25m41s        │ −6.8% (slower) │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ fedora-44, systemd, runc     │ 23m56s           │ 24m13s        │ −1.2% (slower) │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ fedora-44, cgroupfs, crun    │ 23m46s           │ 23m48s        │ ~0%            │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ fedora-44, systemd, crun     │ 21m20s           │ 21m09s        │ +0.9%          │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-8, cgroupfs, runc  │ 25m26s           │ 22m44s        │ +10.6%         │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-8, systemd, runc   │ 26m30s           │ 21m00s        │ +20.8%         │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-9, cgroupfs, runc  │ 22m41s           │ 21m18s        │ +6.1%          │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-9, systemd, runc   │ 23m27s           │ 22m36s        │ +3.6%          │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-10, cgroupfs, runc │ 22m53s           │ 21m54s        │ +4.3%          │
  ├──────────────────────────────┼──────────────────┼───────────────┼────────────────┤
  │ almalinux-10, systemd, runc  │ 22m07s           │ 22m07s        │ 0%             │
  └──────────────────────────────┴──────────────────┴───────────────┴────────────────┘

  Summary

  - Average improvement per job: ~3.8% (mean of per-job %), or 4.1% measured as total CI minutes saved (236m → 226m, ~9m39s saved across the matrix).
  - Mean job time: 23m36s → 22m39s (≈57s faster per job).
  - Wall-clock (slowest job, which gates the whole matrix): 26m30s → 25m41s — only ~49s faster, because the Lima fedora-44/cgroupfs/runc job actually got slower and became the new long pole.

@github-project-automation github-project-automation Bot moved this from Needs Triage to Review In Progress in Pull Request Review Jul 9, 2026
@mxpv
mxpv added this pull request to the merge queue Jul 9, 2026
@AkihiroSuda

Copy link
Copy Markdown
Member Author

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@AkihiroSuda: once the present PR merges, I will cherry-pick it on top of release/1.7, release/2.0, release/2.2, release/2.3 in new PRs and assign them to you.

Details

In response to this:

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Merged via the queue into containerd:main with commit af34190 Jul 9, 2026
51 checks passed
@github-project-automation github-project-automation Bot moved this from Review In Progress to Done in Pull Request Review Jul 9, 2026
@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@AkihiroSuda: #13728 failed to apply on top of branch "release/2.0":

Applying: CI: migrate Vagrant to Lima
Using index info to reconstruct a base tree...
M	.github/workflows/ci.yml
M	.gitignore
M	Vagrantfile
Falling back to patching base and 3-way merge...
Auto-merging .github/workflows/ci.yml
CONFLICT (content): Merge conflict in .github/workflows/ci.yml
Auto-merging .gitignore
CONFLICT (modify/delete): Vagrantfile deleted in CI: migrate Vagrant to Lima and modified in HEAD.  Version HEAD of Vagrantfile left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 CI: migrate Vagrant to Lima

Details

In response to this:

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@AkihiroSuda: #13728 failed to apply on top of branch "release/2.2":

Applying: CI: migrate Vagrant to Lima
Using index info to reconstruct a base tree...
M	.github/workflows/ci.yml
M	Vagrantfile
Falling back to patching base and 3-way merge...
Auto-merging .github/workflows/ci.yml
CONFLICT (content): Merge conflict in .github/workflows/ci.yml
CONFLICT (modify/delete): Vagrantfile deleted in CI: migrate Vagrant to Lima and modified in HEAD.  Version HEAD of Vagrantfile left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 CI: migrate Vagrant to Lima

Details

In response to this:

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@AkihiroSuda: #13728 failed to apply on top of branch "release/2.3":

Applying: CI: migrate Vagrant to Lima
Using index info to reconstruct a base tree...
M	.github/workflows/ci.yml
M	Vagrantfile
Falling back to patching base and 3-way merge...
Auto-merging .github/workflows/ci.yml
CONFLICT (content): Merge conflict in .github/workflows/ci.yml
CONFLICT (modify/delete): Vagrantfile deleted in CI: migrate Vagrant to Lima and modified in HEAD.  Version HEAD of Vagrantfile left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 CI: migrate Vagrant to Lima

Details

In response to this:

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@AkihiroSuda: #13728 failed to apply on top of branch "release/1.7":

Applying: CI: migrate Vagrant to Lima
Using index info to reconstruct a base tree...
M	.github/workflows/ci.yml
A	.github/workflows/release/Dockerfile.dockerignore
M	.gitignore
M	Vagrantfile
M	script/resize-vagrant-root.sh
Falling back to patching base and 3-way merge...
Auto-merging .github/workflows/ci.yml
CONFLICT (content): Merge conflict in .github/workflows/ci.yml
CONFLICT (modify/delete): .github/workflows/release/Dockerfile.dockerignore deleted in HEAD and modified in CI: migrate Vagrant to Lima.  Version CI: migrate Vagrant to Lima of .github/workflows/release/Dockerfile.dockerignore left in tree.
Auto-merging .gitignore
CONFLICT (modify/delete): Vagrantfile deleted in CI: migrate Vagrant to Lima and modified in HEAD.  Version HEAD of Vagrantfile left in tree.
CONFLICT (modify/delete): script/resize-vagrant-root.sh deleted in CI: migrate Vagrant to Lima and modified in HEAD.  Version HEAD of script/resize-vagrant-root.sh left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 CI: migrate Vagrant to Lima

Details

In response to this:

/cherry-pick release/1.7
/cherry-pick release/2.0
/cherry-pick release/2.2
/cherry-pick release/2.3

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@AkihiroSuda AkihiroSuda added cherry-picked/2.3.x PR commits are cherry picked into release/2.3 branch and removed cherry-pick/2.3.x Change to be cherry picked to release/2.3 labels Jul 9, 2026
@AkihiroSuda AkihiroSuda added cherry-picked/2.2.x PR commits are cherry-picked into release/2.2 branch and removed cherry-pick/2.2.x Change to be cherry picked to release/2.2 branch labels Jul 9, 2026
Comment thread .github/workflows/ci.yml
run: lima sudo CGROUP_DRIVER="$CGROUP_DRIVER" RUNC_FLAVOR="$RUNC_FLAVOR" script/vm/test-cri-integration.sh
- name: test-cri
run: sudo BOX=$BOX CGROUP_DRIVER=$CGROUP_DRIVER RUNC_FLAVOR=$RUNC_FLAVOR vagrant up --provision-with=selinux,install-runc,install-gotestsum,test-cri
run: lima sudo CGROUP_DRIVER="$CGROUP_DRIVER" script/vm/test-cri.sh

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

(RUNC_FLAVOR=$RUNC_FLAVOR seems omitted here, but it doesn't seem to matter?)

@AkihiroSuda AkihiroSuda added cherry-picked/2.0.x PR commits are cherry picked into the release/2.0 branch and removed cherry-pick/2.0.x Change to be cherry picked to release/2.0 branch labels Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cherry-pick/1.7.x Change to be cherry picked to release/1.7 branch cherry-picked/2.0.x PR commits are cherry picked into the release/2.0 branch cherry-picked/2.2.x PR commits are cherry-picked into release/2.2 branch cherry-picked/2.3.x PR commits are cherry picked into release/2.3 branch kind/test size/XL

Projects

Development

Successfully merging this pull request may close these issues.

CI: migrate Vagrant to Lima

6 participants