Skip to content
Merged
26 changes: 24 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ jobs:
- name: Build
run: make build

- name: Prewarm test cache
env:
HYPEMAN_TEST_REGISTRY: 127.0.0.1:5001
run: |
export HYPEMAN_TEST_PREWARM_DIR="$HOME/.cache/hypeman-ci/linux-amd64"
go run ./cmd/test-prewarm

- name: Check gofmt
run: |
set -euo pipefail
Expand All @@ -91,7 +98,11 @@ jobs:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
TLS_TEST_DOMAIN: "test.hypeman-development.com"
TLS_ALLOWED_DOMAINS: '*.hypeman-development.com'
run: make test TEST_TIMEOUT=20m
HYPEMAN_TEST_PREWARM_STRICT: "1"
HYPEMAN_TEST_REGISTRY: 127.0.0.1:5001
run: |
export HYPEMAN_TEST_PREWARM_DIR="$HOME/.cache/hypeman-ci/linux-amd64"
make test TEST_TIMEOUT=20m

test-darwin:
runs-on: [self-hosted, macos, arm64]
Expand Down Expand Up @@ -123,6 +134,13 @@ jobs:
- name: Build
run: make build

- name: Prewarm test cache
env:
HYPEMAN_TEST_REGISTRY: 127.0.0.1:5001
run: |
export HYPEMAN_TEST_PREWARM_DIR="$HOME/.cache/hypeman-ci/darwin-arm64"
go run ./cmd/test-prewarm

- name: Check gofmt
run: |
set -euo pipefail
Expand All @@ -142,7 +160,11 @@ jobs:
GO_TEST_TIMEOUT: 600s
DEFAULT_HYPERVISOR: vz
JWT_SECRET: ci-test-secret
run: make test
HYPEMAN_TEST_PREWARM_STRICT: "1"
HYPEMAN_TEST_REGISTRY: 127.0.0.1:5001
run: |
export HYPEMAN_TEST_PREWARM_DIR="$HOME/.cache/hypeman-ci/darwin-arm64"
make test
- name: Cleanup
if: always()
run: |
Expand Down
12 changes: 10 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -269,9 +269,17 @@ test-linux: ensure-ch-binaries ensure-firecracker-binaries ensure-caddy-binaries
if [ -n "$(VERBOSE)" ]; then VERBOSE_FLAG="-v"; fi; \
if [ -n "$(TEST)" ]; then \
echo "Running specific test: $(TEST)"; \
sudo env "PATH=$$TEST_PATH" "DOCKER_CONFIG=$${DOCKER_CONFIG:-$$HOME/.docker}" go test -tags containers_image_openpgp -run=$(TEST) $$VERBOSE_FLAG -timeout=$(TEST_TIMEOUT) ./...; \
sudo env "PATH=$$TEST_PATH" "DOCKER_CONFIG=$${DOCKER_CONFIG:-$$HOME/.docker}" \
"HYPEMAN_TEST_PREWARM_DIR=$${HYPEMAN_TEST_PREWARM_DIR:-}" \
"HYPEMAN_TEST_PREWARM_STRICT=$${HYPEMAN_TEST_PREWARM_STRICT:-}" \
"HYPEMAN_TEST_REGISTRY=$${HYPEMAN_TEST_REGISTRY:-}" \
go test -tags containers_image_openpgp -run=$(TEST) $$VERBOSE_FLAG -timeout=$(TEST_TIMEOUT) ./...; \
else \
sudo env "PATH=$$TEST_PATH" "DOCKER_CONFIG=$${DOCKER_CONFIG:-$$HOME/.docker}" go test -tags containers_image_openpgp $$VERBOSE_FLAG -timeout=$(TEST_TIMEOUT) ./...; \
sudo env "PATH=$$TEST_PATH" "DOCKER_CONFIG=$${DOCKER_CONFIG:-$$HOME/.docker}" \
"HYPEMAN_TEST_PREWARM_DIR=$${HYPEMAN_TEST_PREWARM_DIR:-}" \
"HYPEMAN_TEST_PREWARM_STRICT=$${HYPEMAN_TEST_PREWARM_STRICT:-}" \
"HYPEMAN_TEST_REGISTRY=$${HYPEMAN_TEST_REGISTRY:-}" \
go test -tags containers_image_openpgp $$VERBOSE_FLAG -timeout=$(TEST_TIMEOUT) ./...; \
fi

# macOS tests (no sudo needed, adds e2fsprogs to PATH)
Expand Down
28 changes: 28 additions & 0 deletions cmd/test-prewarm/hypervisor_binaries_linux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//go:build linux

package main

import (
"fmt"

"github.com/kernel/hypeman/lib/hypervisor/firecracker"
"github.com/kernel/hypeman/lib/paths"
"github.com/kernel/hypeman/lib/vmm"
)

func ensureHypervisorBinaries(p *paths.Paths) (int, string, error) {
chBinaries := 0
for _, version := range vmm.SupportedVersions {
if _, err := vmm.GetBinaryPath(p, version); err != nil {
return 0, "", fmt.Errorf("cloud-hypervisor %s: %w", version, err)
}
chBinaries++
}

fcPath, err := firecracker.NewStarter().GetBinaryPath(p, "")
if err != nil {
return 0, "", fmt.Errorf("firecracker: %w", err)
}

return chBinaries, fcPath, nil
}
9 changes: 9 additions & 0 deletions cmd/test-prewarm/hypervisor_binaries_other.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
//go:build !linux

package main

import "github.com/kernel/hypeman/lib/paths"

func ensureHypervisorBinaries(_ *paths.Paths) (int, string, error) {
return 0, "", nil
}
Loading