Skip to content

Merge pull request #1796 from lima-vm/dependabot/go_modules/github.co… #3485

Merge pull request #1796 from lima-vm/dependabot/go_modules/github.co…

Merge pull request #1796 from lima-vm/dependabot/go_modules/github.co… #3485

Workflow file for this run

name: test
on:
push:
branches:
- master
- 'release/**'
pull_request:
jobs:
lints:
name: "Lints"
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Run golangci-lint
uses: golangci/[email protected]
with:
version: v1.53.1
args: --verbose
- name: Run yamllint
run: yamllint .
- name: Install shellcheck
run: |
sudo apt-get update
sudo apt-get install -y shellcheck
- name: Run shellcheck
run: find . -name '*.sh' | xargs shellcheck
- name: Install shfmt
run: go install mvdan.cc/sh/v3/cmd/[email protected]
- name: Run shfmt
run: find . -name '*.sh' | xargs shfmt -s -d
- name: Check hyperlinks
uses: docker://dkhamsing/awesome_bot:latest
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
unit:
name: "Unit tests"
runs-on: ubuntu-22.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
# For Linux we have to support an old release of Go
go-version: ["1.20.x", "1.21.x"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
- name: Unit tests
run: go test -v ./...
- name: Make
run: make
- name: Install
run: sudo make install
- name: Uninstall
run: sudo make uninstall
windows:
name: "Windows tests"
runs-on: windows-2022
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Unit tests
run: go test -v ./...
- name: Make
run: make
integration:
name: Integration tests
runs-on: macos-12
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Cache ~/Library/Caches/lima/download
uses: actions/cache@v3
with:
path: ~/Library/Caches/lima/download
# hashFiles do not seem to support symlinks
key: ${{ runner.os }}-${{ hashFiles('examples/*.yaml') }}
- name: Unit tests
run: go test -v ./...
- name: Make
run: make
- name: Install
run: make install
- name: Validate templates
run: find -L templates -name '*.yaml' | 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
# curl: required by test-templates.sh to download nerdctl for alpine
# jq: required by test-templates.sh to determine download URL for nerdctl
run: |
set -x
# Github runners seem to have lima installed by brew already; we don't want/need it
time brew uninstall --ignore-dependencies lima colima
time brew install qemu bash coreutils curl jq
- name: "Fix QEMU binary signature (Workaround for https://github.com/Homebrew/homebrew-core/issues/140244)"
run: ./hack/fix-qemu-signature.sh
- name: "Show cache"
run: ./hack/debug-cache.sh
- name: "Test default.yaml"
uses: nick-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh templates/default.yaml
- name: "Test experimental/9p.yaml"
uses: nick-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh templates/experimental/9p.yaml
- name: "Test test-misc.yaml"
uses: nick-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh hack/test-templates/test-misc.yaml
# GHA macOS is slow and flaky, so we only test a few YAMLS here.
# Other yamls are tested on Linux instances.
#
- 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.
integration-linux:
name: Integration tests (on Linux)
# A "larger" runner is used for enabling nested virt
runs-on: ubuntu-latest-4-cores
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
template:
- alpine.yaml
- debian.yaml
- fedora.yaml
- archlinux.yaml
- opensuse.yaml
- experimental/net-user-v2.yaml
- docker.yaml
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.20.x
- uses: actions/cache@v3
with:
path: ~/.cache/lima/download
# hashFiles do not seem to support symlinks
# TODO: more fine-grained cache
key: ${{ runner.os }}-${{ hashFiles('examples/*.yaml') }}
- name: Make
run: make
- name: Install
run: 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-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh templates/${{ matrix.template }}
- name: "Show cache"
run: ./hack/debug-cache.sh
colima:
name: Colima
# A "larger" runner is used for enabling nested virt
runs-on: ubuntu-latest-4-cores
timeout-minutes: 120
strategy:
matrix:
colima-version: ["v0.5.5"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.20.x
- uses: actions/cache@v3
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-invision/retry@v2
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 test"
runs-on: macos-11
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Cache ~/Library/Caches/lima/download
uses: actions/cache@v3
with:
path: ~/Library/Caches/lima/download
# hashFiles do not seem to support symlinks
key: ${{ runner.os }}-${{ hashFiles('examples/vmnet.yaml') }}
- name: Make
run: make
- name: Install
run: make install
- name: Install test dependencies
run: brew install qemu bash coreutils iperf3
- name: "Fix QEMU binary signature (Workaround for https://github.com/Homebrew/homebrew-core/issues/140244)"
run: ./hack/fix-qemu-signature.sh
- name: Install vde_switch and vde_vmnet (Deprecated)
env:
VDE_VMNET_VERSION: v0.6.0
run: |
(
brew install autoconf automake
cd ~
git clone https://github.com/lima-vm/vde_vmnet
cd vde_vmnet
git checkout $VDE_VMNET_VERSION
sudo git config --global --add safe.directory /Users/runner/vde_vmnet
sudo make PREFIX=/opt/vde install
)
limactl sudoers | sudo tee /etc/sudoers.d/lima
- name: Unit test (pkg/networks) with vde_vmnet (Deprecated)
# Set -count=1 to disable cache
run: go test -v -count=1 ./pkg/networks/...
- name: Test vde_vmnet (Deprecated)
uses: nick-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh templates/vmnet.yaml
- name: Install socket_vmnet
env:
SOCKET_VMNET_VERSION: v1.1.1
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-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-templates.sh templates/vmnet.yaml
upgrade:
name: "Upgrade test"
runs-on: macos-12
timeout-minutes: 120
strategy:
matrix:
oldver: ["v0.10.0"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Cache ~/Library/Caches/lima/download
uses: actions/cache@v3
with:
path: ~/Library/Caches/lima/download
key: ${{ runner.os }}-upgrade-${{ matrix.oldver }}
- name: Install test dependencies
run: brew install qemu bash coreutils
- name: "Fix QEMU binary signature (Workaround for https://github.com/Homebrew/homebrew-core/issues/140244)"
run: ./hack/fix-qemu-signature.sh
- name: Test
uses: nick-invision/retry@v2
with:
timeout_minutes: 30
retry_on: error
max_attempts: 3
command: ./hack/test-upgrade.sh ${{ matrix.oldver }} ${{ github.sha }}
vz:
name: "vz"
runs-on: macos-13
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/setup-go@v4
with:
go-version: 1.21.x
- name: Cache ~/Library/Caches/lima/download
uses: actions/cache@v3
with:
path: ~/Library/Caches/lima/download
# hashFiles do not seem to support symlinks
key: ${{ runner.os }}-${{ hashFiles('examples/experimental/vz.yaml') }}
- name: Make
run: make
- name: Install
run: make install
- name: Install test dependencies
run: brew install qemu bash coreutils
- name: Test
run: ./hack/test-templates.sh templates/experimental/vz.yaml