Building
This guide covers building Code Search from source.
Prerequisites
Section titled “Prerequisites”- Go 1.21+
- Node.js 18+
- pnpm
- Docker (for container builds)
- Make
Building from Source
Section titled “Building from Source”All Components
Section titled “All Components”make buildThis builds:
- API server binary
- Indexer binary
- CLI binary
- Web UI static files
Individual Components
Section titled “Individual Components”API Server:
go build -o bin/api ./cmd/apiIndexer:
go build -o bin/indexer ./cmd/indexerCLI:
go build -o bin/code-search ./cmd/cliWeb UI:
cd webpnpm installpnpm buildBuild Configuration
Section titled “Build Configuration”Go Build Flags
Section titled “Go Build Flags”# Production build with optimizationsCGO_ENABLED=0 go build \ -ldflags="-s -w -X main.version=$(git describe --tags)" \ -o bin/api ./cmd/api
# Debug buildgo build -gcflags="all=-N -l" -o bin/api ./cmd/apiBuild Variables
Section titled “Build Variables”| Variable | Description |
|---|---|
VERSION | Version string |
COMMIT | Git commit hash |
BUILD_DATE | Build timestamp |
Set via ldflags:
go build -ldflags="-X main.version=1.0.0 -X main.commit=abc123" ...Docker Builds
Section titled “Docker Builds”Build All Images
Section titled “Build All Images”make docker-buildIndividual Images
Section titled “Individual Images”# API serverdocker build -f docker/api.Dockerfile -t code-search-api .
# Indexerdocker build -f docker/indexer.Dockerfile -t code-search-indexer .
# Web UIdocker build -f docker/web.Dockerfile -t code-search-web .Multi-Architecture
Section titled “Multi-Architecture”Build for multiple platforms:
docker buildx build \ --platform linux/amd64,linux/arm64 \ -f docker/api.Dockerfile \ -t code-search-api:latest \ --push .Artifacts
Section titled “Artifacts”Binary Output
Section titled “Binary Output”bin/├── api # API server├── indexer # Indexer service└── code-search # CLI toolWeb UI Output
Section titled “Web UI Output”web/.next/├── static/ # Static assets└── standalone/ # Standalone buildDocker Images
Section titled “Docker Images”| Image | Description |
|---|---|
code-search-api | API server |
code-search-indexer | Indexer service |
code-search-web | Web UI |
code-search | All-in-one image |
Cross Compilation
Section titled “Cross Compilation”Build for different platforms:
Linux:
GOOS=linux GOARCH=amd64 go build -o bin/api-linux-amd64 ./cmd/apiGOOS=linux GOARCH=arm64 go build -o bin/api-linux-arm64 ./cmd/apimacOS:
GOOS=darwin GOARCH=amd64 go build -o bin/api-darwin-amd64 ./cmd/apiGOOS=darwin GOARCH=arm64 go build -o bin/api-darwin-arm64 ./cmd/apiWindows:
GOOS=windows GOARCH=amd64 go build -o bin/api-windows-amd64.exe ./cmd/apiRelease Process
Section titled “Release Process”Version Tagging
Section titled “Version Tagging”git tag -a v1.0.0 -m "Release v1.0.0"git push origin v1.0.0Release Builds
Section titled “Release Builds”The CI pipeline automatically builds:
- Multi-platform binaries
- Docker images
- Helm chart package
Checksums
Section titled “Checksums”Generate checksums for release:
cd binsha256sum * > SHA256SUMSGitHub Actions
Section titled “GitHub Actions”The project uses GitHub Actions for:
- Building on every push
- Running tests
- Publishing releases
Workflow Files
Section titled “Workflow Files”.github/workflows/├── build.yml # Build and test├── release.yml # Release automation└── docker.yml # Docker buildsVerification
Section titled “Verification”Check Binary
Section titled “Check Binary”./bin/api version# Output: code-search v1.0.0 (commit: abc123, built: 2024-01-15)Check Docker Image
Section titled “Check Docker Image”docker run code-search-api versionRun Tests
Section titled “Run Tests”make testTroubleshooting
Section titled “Troubleshooting”CGO Issues
Section titled “CGO Issues”If you encounter CGO-related errors:
# Disable CGOCGO_ENABLED=0 go build ...Node.js Memory
Section titled “Node.js Memory”For large web builds:
export NODE_OPTIONS="--max-old-space-size=4096"pnpm buildDocker Build Cache
Section titled “Docker Build Cache”Clear Docker build cache:
docker builder pruneNext Steps
Section titled “Next Steps”- Development Setup - Set up your environment
- Contributing - Contribution guidelines