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        

完整示例