GitHub Actions
在 GitHub Actions 上运行 Lima
在 GitHub Actions 上,Lima 适用于:
- 在非 Ubuntu 操作系统上运行命令(例如,在 Fedora 上测试 SELinux)
- 模拟多个主机
虽然这些任务可以通过 Docker 等容器部分完成,但这些容器仍然依赖于 Ubuntu 主机的内核,无法使用 Ubuntu 中缺少的功能,如 SELinux。
相比之下,Lima 运行的虚拟机不依赖于 Ubuntu 主机的内核。
以下 GitHub Actions 工作流演示了如何使用 Lima 运行多个 Fedora 实例。
这些实例通过 user-v2
网络连接。
name: Fedora
on:
workflow_dispatch:
pull_request:
jobs:
fedora:
runs-on: ubuntu-24.04
steps:
- name: Check out code
uses: actions/checkout@v4
- name: "Set up Lima"
uses: lima-vm/lima-actions/setup@v1
id: lima-actions-setup
- name: "Cache ~/.cache/lima"
uses: actions/cache@v4
with:
path: ~/.cache/lima
key: lima-${{ steps.lima-actions-setup.outputs.version }}
- name: "Start an instance of Fedora"
run: |
set -eux
limactl start --name=default --cpus=1 --memory=1 --network=lima:user-v2 template://fedora
lima sudo dnf install -y httpd
lima sudo systemctl enable --now httpd
- name: "Start another instance of Fedora"
run: |
set -eux
limactl start --name=another --cpus=1 --memory=1 --network=lima:user-v2 template://fedora
limactl shell another curl http://lima-default.internal
另请参见 https://github.com/lima-vm/lima-actions。
纯净模式
当你希望虚拟机实例尽可能接近物理主机时,--plain
模式很有用:
- name: "Start Fedora"
# 设置 --plain 以禁用文件共享、端口转发、内置 containerd 等
run: limactl start --plain --name=default --cpus=1 --memory=1 --network=lima:user-v2 template://fedora
- name: "Set up SSH"
uses: lima-vm/lima-actions/ssh@v1
- name: "Initialize Fedora"
# 使用普通的 rsync 和 ssh 来初始化客户机,
# 这样不熟悉 Lima 的人也能理解初始化步骤。
run: |
set -eux -o pipefail
# 将当前目录同步到客户机的 /tmp/repo
rsync -a -e ssh . lima-default:/tmp/repo
# 安装软件包
ssh lima-default sudo dnf install -y httpd