mirror of
https://github.com/lima-vm/lima.git
synced 2026-10-28 11:44:35 +08:00
620 lines
23 KiB
YAML
620 lines
23 KiB
YAML
name: test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- 'release/**'
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "website/**"
|
|
- "**.md"
|
|
pull_request:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "website/**"
|
|
- "**.md"
|
|
env:
|
|
LIMACTL_CREATE_ARGS: ""
|
|
GOTOOLCHAIN: local
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
lints:
|
|
name: "Lints"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Install protoc
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y protobuf-compiler
|
|
- name: Verify generated files
|
|
run: make install-tools generate check-generated
|
|
- name: Run yamllint
|
|
run: yamllint .
|
|
- name: Install shellcheck
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y shellcheck
|
|
- name: Run file and directory name linter
|
|
uses: ls-lint/action@02e380fe8733d499cbfc9e22276de5085508a5bd # v2.3.1
|
|
- name: Run shellcheck
|
|
run: find . -name '*.sh' | xargs shellcheck
|
|
- name: Install shfmt
|
|
run: go install mvdan.cc/sh/v3/cmd/shfmt@v3.4.3
|
|
- name: Run shfmt
|
|
run: find . -name '*.sh' | xargs shfmt -s -d
|
|
- name: Check hyperlinks
|
|
uses: docker://dkhamsing/awesome_bot:latest@sha256:a8adaeb3b3bd5745304743e4d8a6d512127646e420544a6d22d9f58a07f35884
|
|
with:
|
|
args: /github/workspace/README.md --allow-dupe --allow-redirect --request-delay 1 --white-list https://img.shields.io,http://127.0.0.1:8080,https://github.com/lima-vm/lima/releases/download,https://xbarapp.com,https://api.github.com
|
|
- name: Install go-licenses
|
|
run: go install github.com/google/go-licenses@v1.6.0
|
|
- name: Check licenses
|
|
# the allow list corresponds to https://github.com/cncf/foundation/blob/e5db022a0009f4db52b89d9875640cf3137153fe/allowed-third-party-license-policy.md
|
|
run: go-licenses check --include_tests ./... --allowed_licenses=$(cat ./hack/allowed-licenses.txt)
|
|
- name: Install ltag
|
|
run: go install github.com/containerd/ltag@v0.3.0
|
|
- name: Check license boilerplates
|
|
run: ltag -t ./hack/ltag --check -v
|
|
- name: Install protolint
|
|
run: go install github.com/yoheimuta/protolint/cmd/protolint@v0.55.6
|
|
- name: Check protobuf files
|
|
run: protolint .
|
|
|
|
lint-go:
|
|
name: "Lint Go"
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
runs-on: [ubuntu-24.04, macos-15, windows-2025]
|
|
runs-on: ${{ matrix.runs-on }}
|
|
steps:
|
|
- name: Force git to use LF
|
|
# This step is required on Windows to work around golangci-lint issues with formatters. See https://github.com/golangci/golangci-lint/discussions/5840
|
|
# TODO: replace with a checkout option when https://github.com/actions/checkout/issues/226 is implemented
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 1
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Run golangci-lint
|
|
uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0
|
|
with:
|
|
version: v2.2
|
|
args: --verbose
|
|
|
|
security:
|
|
name: "Vulncheck"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee # v1.0.4
|
|
|
|
spell:
|
|
name: "Spell check"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 1
|
|
- uses: codespell-project/actions-codespell@406322ec52dd7b488e48c1c4b82e2a8b3a1bf630 # v2.1
|
|
with:
|
|
check_filenames: true
|
|
check_hidden: true
|
|
# by default, codespell uses configuration from the .codespellrc
|
|
|
|
unit:
|
|
name: "Unit tests"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# For non-Homebrew we have to support an old release of Go
|
|
go-version: ["1.23.x", "1.24.x"]
|
|
steps:
|
|
- name: Install test dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends qemu-utils
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 1
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
- name: Unit tests
|
|
run: go test -v ./...
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: sudo make install
|
|
- name: Verify templates match `limactl edit` format
|
|
run: |
|
|
find templates -name '*.yaml' -exec limactl edit --set 'del(.nothing)' {} \;
|
|
git diff-index --exit-code HEAD
|
|
- name: Uninstall
|
|
run: sudo make uninstall
|
|
|
|
windows:
|
|
name: "Windows tests (WSL2)"
|
|
runs-on: windows-2025
|
|
timeout-minutes: 30
|
|
steps:
|
|
- name: Enable WSL2
|
|
run: |
|
|
wsl --set-default-version 2
|
|
wsl --shutdown
|
|
wsl --update
|
|
wsl --status
|
|
wsl --version
|
|
wsl --list --online
|
|
- name: Install WSL2 distro
|
|
timeout-minutes: 1
|
|
run: |
|
|
# FIXME: At least one distro has to be installed here,
|
|
# otherwise `wsl --list --verbose` (called from Lima) fails:
|
|
# https://github.com/lima-vm/lima/pull/1826#issuecomment-1729993334
|
|
# The distro image itself is not consumed by Lima.
|
|
# Starting with WSL2 version 2.5.7.0 the distro will be rejected
|
|
# if it doesn't contain /bin/sh and /etc.
|
|
# ------------------------------------------------------------------
|
|
mkdir dummy
|
|
mkdir dummy\bin
|
|
mkdir dummy\etc
|
|
echo "" >dummy\bin\sh
|
|
tar -cf dummy.tar --format ustar -C dummy .
|
|
wsl --import dummy $env:TEMP dummy.tar
|
|
wsl --list --verbose
|
|
- name: Set gitconfig
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 1
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Unit tests
|
|
run: go test -v ./...
|
|
- name: Make
|
|
run: make
|
|
- name: Integration tests (WSL2, Windows host)
|
|
run: |
|
|
$env:PATH = "$pwd\_output\bin;" + 'C:\msys64\usr\bin;' + $env:PATH
|
|
pacman -Sy --noconfirm openbsd-netcat diffutils
|
|
$env:MSYS2_ENV_CONV_EXCL = 'HOME_HOST;HOME_GUEST;_LIMA_WINDOWS_EXTRA_PATH'
|
|
$env:HOME_HOST = $(cygpath.exe "$env:USERPROFILE")
|
|
$env:HOME_GUEST = "/mnt$env:HOME_HOST"
|
|
$env:LIMACTL_CREATE_ARGS = '--vm-type=wsl2 --mount-type=wsl2 --containerd=system'
|
|
$env:_LIMA_WINDOWS_EXTRA_PATH = 'C:\Program Files\Git\usr\bin'
|
|
bash.exe -c "./hack/test-templates.sh templates/experimental/wsl2.yaml"
|
|
|
|
windows-qemu:
|
|
name: "Windows tests (QEMU)"
|
|
runs-on: windows-2025
|
|
timeout-minutes: 30
|
|
steps:
|
|
- name: Set gitconfig
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "can't parse builtin Lima version" errors
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Unit tests
|
|
run: go test -v ./...
|
|
- name: Make
|
|
run: make
|
|
- name: Install QEMU
|
|
run: |
|
|
winget install --silent --accept-source-agreements --accept-package-agreements --disable-interactivity SoftwareFreedomConservancy.QEMU
|
|
- name: Integration tests (QEMU, Windows host)
|
|
run: |
|
|
$env:PATH = "$pwd\_output\bin;" + 'C:\msys64\usr\bin;' + 'C:\Program Files\QEMU;' + $env:PATH
|
|
pacman -Sy --noconfirm openbsd-netcat diffutils
|
|
$env:MSYS2_ENV_CONV_EXCL = 'HOME_HOST;HOME_GUEST;_LIMA_WINDOWS_EXTRA_PATH'
|
|
$env:HOME_HOST = $(cygpath.exe "$env:USERPROFILE")
|
|
$env:HOME_GUEST = "$env:HOME_HOST"
|
|
$env:LIMACTL_CREATE_ARGS = '--vm-type=qemu'
|
|
$env:_LIMA_WINDOWS_EXTRA_PATH = 'C:\Program Files\Git\usr\bin'
|
|
bash.exe -c "./hack/test-templates.sh templates/default.yaml"
|
|
|
|
qemu:
|
|
name: "Integration tests (QEMU, macOS host)"
|
|
runs-on: macos-15-large # Intel
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Unit tests
|
|
run: go test -v ./...
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Validate jsonschema
|
|
run: make schema-limayaml.json
|
|
- name: Validate templates
|
|
# Can't validate base templates in `_default` because they have no images
|
|
run: find -L templates -name '*.yaml' ! -path '*/_default/*' | xargs limactl validate
|
|
- name: Install test dependencies
|
|
# QEMU: required by Lima itself
|
|
# bash: required by test-templates.sh (OS version of bash is too old)
|
|
# coreutils: required by test-templates.sh for the "timeout" command
|
|
# w3m : required by test-templates.sh for port forwarding tests
|
|
run: brew install qemu bash coreutils w3m
|
|
- name: "Adjust LIMACTL_CREATE_ARGS"
|
|
run: echo "LIMACTL_CREATE_ARGS=${LIMACTL_CREATE_ARGS} --vm-type=qemu" >>$GITHUB_ENV
|
|
- name: "Inject `no_timer_check` to kernel cmdline"
|
|
# workaround to https://github.com/lima-vm/lima/issues/84
|
|
run: ./hack/inject-cmdline-to-template.sh templates/_images/ubuntu.yaml no_timer_check
|
|
- name: Cache image used by default.yaml
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/default.yaml
|
|
- name: "Show cache"
|
|
run: ./hack/debug-cache.sh
|
|
- name: "Test default.yaml"
|
|
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
|
|
with:
|
|
timeout_minutes: 30
|
|
retry_on: error
|
|
max_attempts: 3
|
|
command: ./hack/test-templates.sh templates/default.yaml
|
|
# GHA macOS is slow and flaky, so we only test default.yaml here.
|
|
# Other yamls are tested on Linux instances.
|
|
#
|
|
- if: always()
|
|
uses: ./.github/actions/upload_failure_logs_if_exists
|
|
- name: "Show cache"
|
|
if: always()
|
|
run: ./hack/debug-cache.sh
|
|
|
|
# Non-default templates are tested on Linux instances of GHA,
|
|
# as they seem more stable than macOS instances.
|
|
qemu-linux:
|
|
name: "Integration tests (QEMU, Linux host)"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 120
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# Most templates use 9p as the mount type
|
|
template:
|
|
- alpine.yaml
|
|
- debian.yaml # reverse-sshfs
|
|
- fedora.yaml
|
|
- archlinux.yaml
|
|
- opensuse.yaml
|
|
- docker.yaml
|
|
- ../hack/test-templates/alpine-iso-9p-writable.yaml # Covers alpine-iso.yaml
|
|
- ../hack/test-templates/net-user-v2.yaml
|
|
- ../hack/test-templates/test-misc.yaml # TODO: merge net-user-v2 into test-misc
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: sudo make install
|
|
- name: Cache image used by templates/${{ matrix.template }}
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/${{ matrix.template }}
|
|
- name: Install test dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends ovmf qemu-system-x86 qemu-utils w3m
|
|
sudo modprobe kvm
|
|
# `sudo usermod -aG kvm $(whoami)` does not take an effect on GHA
|
|
sudo chown $(whoami) /dev/kvm
|
|
- name: Install ansible-playbook
|
|
run: |
|
|
sudo apt-get install -y --no-install-recommends ansible
|
|
if: matrix.template == '../hack/test-templates/test-misc.yaml'
|
|
- name: "Show cache"
|
|
run: ./hack/debug-cache.sh
|
|
- name: "Test"
|
|
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
|
|
with:
|
|
timeout_minutes: 30
|
|
retry_on: error
|
|
max_attempts: 3
|
|
command: ./hack/test-templates.sh templates/${{ matrix.template }}
|
|
- if: always()
|
|
uses: ./.github/actions/upload_failure_logs_if_exists
|
|
with:
|
|
suffix: ${{ matrix.template }}
|
|
- name: "Show cache"
|
|
run: ./hack/debug-cache.sh
|
|
|
|
colima:
|
|
name: "Colima tests (QEMU, Linux host)"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 120
|
|
strategy:
|
|
matrix:
|
|
colima-version: ["v0.6.5"]
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# fetch-depth is set to 0 to let `limactl --version` print semver-ish version
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
|
|
with:
|
|
path: ~/.cache/lima/download
|
|
key: ${{ runner.os }}-colima-${{ matrix.colima-version }}
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: sudo make install
|
|
- name: Install colima
|
|
run: |
|
|
git clone https://github.com/abiosoft/colima
|
|
cd colima
|
|
git checkout ${{ matrix.colima-version }}
|
|
make
|
|
sudo make install
|
|
- name: Install test dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends ovmf qemu-system-x86 qemu-utils
|
|
sudo modprobe kvm
|
|
# `sudo usermod -aG kvm $(whoami)` does not take an effect on GHA
|
|
sudo chown $(whoami) /dev/kvm
|
|
- name: "Show cache"
|
|
run: ./hack/debug-cache.sh
|
|
- name: "Test"
|
|
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
|
|
with:
|
|
timeout_minutes: 30
|
|
retry_on: error
|
|
max_attempts: 3
|
|
command: ./hack/test-colima.sh
|
|
- name: "Show cache"
|
|
run: ./hack/debug-cache.sh
|
|
|
|
vmnet:
|
|
name: "VMNet tests (QEMU)"
|
|
runs-on: macos-15-large # Intel
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: "Adjust LIMACTL_CREATE_ARGS"
|
|
run: echo "LIMACTL_CREATE_ARGS=${LIMACTL_CREATE_ARGS} --vm-type=qemu --network=lima:shared" >>$GITHUB_ENV
|
|
- name: "Inject `no_timer_check` to kernel cmdline"
|
|
# workaround to https://github.com/lima-vm/lima/issues/84
|
|
run: ./hack/inject-cmdline-to-template.sh templates/_images/ubuntu.yaml no_timer_check
|
|
- name: Cache image used by default .yaml
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/default.yaml
|
|
- name: Install test dependencies
|
|
run: brew install qemu bash coreutils w3m
|
|
- name: Install socket_vmnet
|
|
env:
|
|
SOCKET_VMNET_VERSION: v1.2.0
|
|
run: |
|
|
(
|
|
cd ~
|
|
git clone https://github.com/lima-vm/socket_vmnet
|
|
cd socket_vmnet
|
|
git checkout $SOCKET_VMNET_VERSION
|
|
sudo git config --global --add safe.directory /Users/runner/socket_vmnet
|
|
sudo make PREFIX=/opt/socket_vmnet install
|
|
)
|
|
limactl sudoers | sudo tee /etc/sudoers.d/lima
|
|
- name: Unit test (pkg/networks) with socket_vmnet
|
|
# Set -count=1 to disable cache
|
|
run: go test -v -count=1 ./pkg/networks/...
|
|
- name: Test socket_vmnet
|
|
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
|
|
with:
|
|
timeout_minutes: 30
|
|
retry_on: error
|
|
max_attempts: 3
|
|
command: ./hack/test-templates.sh templates/default.yaml
|
|
- if: always()
|
|
uses: ./.github/actions/upload_failure_logs_if_exists
|
|
|
|
upgrade:
|
|
name: "Upgrade tests (QEMU, macOS host)"
|
|
runs-on: macos-15-large # Intel
|
|
timeout-minutes: 120
|
|
strategy:
|
|
matrix:
|
|
oldver: ["v0.15.1"] # The default VM type was always QEMU until Lima v1.0
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- name: Fetch homebrew-core commit messages
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# needed by ./hack/brew-install-version.sh
|
|
repository: homebrew/homebrew-core
|
|
path: homebrew-core
|
|
fetch-depth: 0
|
|
filter: tree:0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Cache image used by ${{ matrix.oldver }}/examples/ubuntu-lts.yaml
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: https://raw.githubusercontent.com/lima-vm/lima/${{ matrix.oldver }}/examples/ubuntu-lts.yaml
|
|
- name: Install test dependencies
|
|
run: |
|
|
brew install bash coreutils
|
|
# QEMU 9.1.0 seems to break on GitHub runners, both on Monterey and Ventura
|
|
# We revert back to 8.2.1, which seems to work fine
|
|
./hack/brew-install-version.sh qemu 8.2.1
|
|
- name: Test
|
|
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
|
|
with:
|
|
timeout_minutes: 30
|
|
retry_on: error
|
|
max_attempts: 3
|
|
command: ./hack/test-upgrade.sh ${{ matrix.oldver }} ${{ github.sha }}
|
|
- if: always()
|
|
uses: ./.github/actions/upload_failure_logs_if_exists
|
|
|
|
vz:
|
|
name: "Integration tests (vz)"
|
|
runs-on: macos-15-large # Intel
|
|
timeout-minutes: 120
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
template:
|
|
- default.yaml
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: make install
|
|
- name: Cache image used by templates/${{ matrix.template }}
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/${{ matrix.template }}
|
|
- name: Install test dependencies
|
|
run: brew install bash coreutils w3m
|
|
- name: Uninstall qemu
|
|
run: brew uninstall --ignore-dependencies --force qemu
|
|
- name: Test
|
|
run: ./hack/test-templates.sh templates/${{ matrix.template }}
|
|
- if: failure()
|
|
uses: ./.github/actions/upload_failure_logs_if_exists
|
|
with:
|
|
suffix: ${{ matrix.template }}
|
|
|
|
# gomodjail is a library sandbox for Go
|
|
# https://github.com/AkihiroSuda/gomodjail
|
|
#
|
|
# This is an early experiment.
|
|
# CI failures that only occurs with gomodjail shall not block merging PRs.
|
|
gomodjail:
|
|
name: "gomodjail (experimental; failures shall not block merging PRs)"
|
|
runs-on: macos-15-large # Intel
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Install gomodjail
|
|
run: |
|
|
set -eux -o pipefail
|
|
git clone https://github.com/AkihiroSuda/gomodjail
|
|
cd gomodjail
|
|
make binaries install
|
|
- name: Install Lima
|
|
# gomodjail depends on symbols
|
|
run: make KEEP_SYMBOLS=1 binaries install
|
|
- name: Cache image used by templates/default.yaml
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/default.yaml
|
|
- name: Smoke test
|
|
run: gomodjail run --go-mod=./go.mod -- limactl start --tty=false
|
|
|
|
cross:
|
|
name: "Cross-compile (NetBSD, DragonFlyBSD)"
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- run: GOOS=netbsd go build ./...
|
|
- run: GOOS=dragonfly go build ./...
|
|
|
|
qemu-linux-old:
|
|
name: "Smoke tests (QEMU, old Linux host)"
|
|
runs-on: ubuntu-22.04 # QEMU 6.2
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
# To avoid "failed to load YAML file \"templates/experimental/riscv64.yaml\": can't parse builtin Lima version \"3f3a6f6\": 3f3a6f6 is not in dotted-tri format"
|
|
fetch-depth: 0
|
|
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
|
|
with:
|
|
go-version: 1.24.x
|
|
- name: Make
|
|
run: make
|
|
- name: Install
|
|
run: sudo make install
|
|
- name: Cache image used by templates/default.yaml
|
|
uses: ./.github/actions/setup_cache_for_template
|
|
with:
|
|
template: templates/default.yaml
|
|
- name: Install test dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends ovmf qemu-system-x86 qemu-utils
|
|
qemu-system-x86_64 --version
|
|
sudo modprobe kvm
|
|
# `sudo usermod -aG kvm $(whoami)` does not take an effect on GHA
|
|
sudo chown $(whoami) /dev/kvm
|
|
- name: Smoke test
|
|
run: limactl start --tty=false
|