Skip to content

Building

This guide covers building Code Search from source.

  • Go 1.21+
  • Node.js 18+
  • pnpm
  • Docker (for container builds)
  • Make
Terminal window
make build

This builds:

  • API server binary
  • Indexer binary
  • CLI binary
  • Web UI static files

API Server:

Terminal window
go build -o bin/api ./cmd/api

Indexer:

Terminal window
go build -o bin/indexer ./cmd/indexer

CLI:

Terminal window
go build -o bin/code-search ./cmd/cli

Web UI:

Terminal window
cd web
pnpm install
pnpm build
Terminal window
# Production build with optimizations
CGO_ENABLED=0 go build \
-ldflags="-s -w -X main.version=$(git describe --tags)" \
-o bin/api ./cmd/api
# Debug build
go build -gcflags="all=-N -l" -o bin/api ./cmd/api
VariableDescription
VERSIONVersion string
COMMITGit commit hash
BUILD_DATEBuild timestamp

Set via ldflags:

Terminal window
go build -ldflags="-X main.version=1.0.0 -X main.commit=abc123" ...
Terminal window
make docker-build
Terminal window
# API server
docker build -f docker/api.Dockerfile -t code-search-api .
# Indexer
docker build -f docker/indexer.Dockerfile -t code-search-indexer .
# Web UI
docker build -f docker/web.Dockerfile -t code-search-web .

Build for multiple platforms:

Terminal window
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f docker/api.Dockerfile \
-t code-search-api:latest \
--push .
bin/
├── api # API server
├── indexer # Indexer service
└── code-search # CLI tool
web/.next/
├── static/ # Static assets
└── standalone/ # Standalone build
ImageDescription
code-search-apiAPI server
code-search-indexerIndexer service
code-search-webWeb UI
code-searchAll-in-one image

Build for different platforms:

Linux:

Terminal window
GOOS=linux GOARCH=amd64 go build -o bin/api-linux-amd64 ./cmd/api
GOOS=linux GOARCH=arm64 go build -o bin/api-linux-arm64 ./cmd/api

macOS:

Terminal window
GOOS=darwin GOARCH=amd64 go build -o bin/api-darwin-amd64 ./cmd/api
GOOS=darwin GOARCH=arm64 go build -o bin/api-darwin-arm64 ./cmd/api

Windows:

Terminal window
GOOS=windows GOARCH=amd64 go build -o bin/api-windows-amd64.exe ./cmd/api
Terminal window
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0

The CI pipeline automatically builds:

  • Multi-platform binaries
  • Docker images
  • Helm chart package

Generate checksums for release:

Terminal window
cd bin
sha256sum * > SHA256SUMS

The project uses GitHub Actions for:

  • Building on every push
  • Running tests
  • Publishing releases
.github/workflows/
├── build.yml # Build and test
├── release.yml # Release automation
└── docker.yml # Docker builds
Terminal window
./bin/api version
# Output: code-search v1.0.0 (commit: abc123, built: 2024-01-15)
Terminal window
docker run code-search-api version
Terminal window
make test

If you encounter CGO-related errors:

Terminal window
# Disable CGO
CGO_ENABLED=0 go build ...

For large web builds:

Terminal window
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm build

Clear Docker build cache:

Terminal window
docker builder prune