Skip to content

Build Guide

Build PiVirt components from source.

This guide covers building PiVirt components from source code.

  • Go 1.24 or later
  • Git
  • Make
  • Protocol Buffers compiler (protoc)
  • Node.js 20+ (for docs)
Terminal window
# Install Go
# https://go.dev/dl/
# Install protoc
# https://grpc.io/docs/protoc-installation/
# Install Node.js
# https://nodejs.org/
# Install additional tools
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest
Terminal window
git clone https://github.com/pilab-dev/pivirt.git
cd pivirt
Terminal window
# Build all binaries
make build
# Or build specific components
make build-agent
make build-pvcli
make build-iscsiman
make build-osinfodb
make build-cloudhypervisor
Terminal window
# Build agent
cd apps/agent
go build -o agent .
# Build pvcli
cd apps/pvcli
go build -o pvcli .
# Build iscsiman
cd apps/iscsiman
go build -o iscsiman .
# Build osinfodb
cd apps/osinfodb
go build -o osinfodb .
# Build cloudhypervisor
cd apps/cloudhypervisor
go build -o cloudhypervisor .

Version metadata is embedded via the docs package. Install the external gitinfo tool and run:

Terminal window
# Generate docs/doc.go with git info
gitinfo --output docs/doc.go
# Then build normally
make build
Terminal window
# Proto files are defined in virtpb/proto/
# See the virtpb repository for proto generation instructions
cd ../virtpb
buf generate
Terminal window
# Run all tests
make test
# Run specific test
go test ./apps/agent/...
# Run with coverage
make test-coverage
Terminal window
# Build all images
make docker-build
# Build specific image
make docker-build-agent
make docker-build-pvcli
# Push images
make docker-push
Terminal window
# Build docs
cd pibase-docs
pnpm install
pnpm build
# Serve docs locally
pnpm start
Terminal window
# Build for Linux amd64
GOOS=linux GOARCH=amd64 go build -o agent-linux-amd64 ./apps/agent
# Build for Linux arm64
GOOS=linux GOARCH=arm64 go build -o agent-linux-arm64 ./apps/agent
# Build for macOS
GOOS=darwin GOARCH=amd64 go build -o agent-darwin-amd64 ./apps/agent
Terminal window
# Clean build cache
go clean -cache
# Clean module cache
go clean -modcache
# Re-download dependencies
go mod download
Terminal window
# Check protoc version
protoc --version
# Reinstall protoc plugins
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest