Build System
TractStack includes an automated build system that handles code updates, compilation, and service restarts through the build concierge process.
Build Concierge
Section titled “Build Concierge”Overview
Section titled “Overview”The build concierge (/home/t8k/scripts/t8k-concierge.sh
) processes automated builds via CSV files in /home/t8k/state/
. This system enables automated deployments and updates without manual intervention.
Build Process
Section titled “Build Process”Automated build steps:
- Pull latest code from Git repositories
- Build Go backend and compile binary
- Build Astro frontend with optimizations
- Extract Tailwind whitelist for CSS optimization
- Restart services automatically
- Clean up processed CSV files
Build Trigger System
Section titled “Build Trigger System”CSV File Format
Section titled “CSV File Format”Build commands are triggered by CSV files in /home/t8k/state/
:
Main installation:
type=main,tenant=default,command=build
Multi-tenant installation:
type=multi,tenant=default,command=build
Dedicated instance:
type=dedicated,site=SITE_ID,command=build
File Processing
Section titled “File Processing”Processing order:
- Files named
build-*.csv
are processed in sorted order - Each CSV file is processed completely before moving to the next
- Processed files are automatically removed after completion
File naming convention:
build-$(date +%s).csv # Timestamp-based namingbuild-manual-001.csv # Manual numberingbuild-urgent.csv # Descriptive naming
Triggering Builds
Section titled “Triggering Builds”Manual Build Trigger
Section titled “Manual Build Trigger”Create build file:
# Main installationecho "type=main,tenant=default,command=build" > /home/t8k/state/build-$(date +%s).csv
# Dedicated instanceecho "type=dedicated,site=SITE_ID,command=build" > /home/t8k/state/build-$(date +%s).csv
systemd Integration
Section titled “systemd Integration”Build watcher services:
t8k-build-watcher.path
- Monitors/home/t8k/state/
directoryt8k-build-watcher.service
- Executes build concierge when files appear
Service status:
sudo systemctl status t8k-build-watcher.pathsudo systemctl status t8k-build-watcher.service
Manual Build Execution
Section titled “Manual Build Execution”Run build concierge directly:
sudo -u t8k /home/t8k/scripts/t8k-concierge.sh
Build Components
Section titled “Build Components”Go Backend Build
Section titled “Go Backend Build”Backend compilation process:
- Navigate to source directory:
/home/t8k/src/tractstack-go
- Pull latest changes:
git pull origin main
- Download dependencies:
go mod tidy
- Compile binary:
go build
- Copy to bin directory:
/home/t8k/bin/tractstack-go
Astro Frontend Build
Section titled “Astro Frontend Build”Frontend build process:
- Navigate to source directory:
/home/t8k/src/my-tractstack
- Pull latest changes:
git pull origin main
- Install dependencies:
pnpm install
- Build production assets:
pnpm build
- Generate optimized output: Static files in
dist/
Tailwind Optimization
Section titled “Tailwind Optimization”CSS optimization process:
- Extract Tailwind classes: Scan built files for used CSS classes
- Generate whitelist: Create optimized class list
- Update configuration: Save whitelist to
tailwindWhitelist.json
- Optimize CSS delivery: Reduce CSS bundle size
Service Restart Process
Section titled “Service Restart Process”Restart Sequence
Section titled “Restart Sequence”Automated service restart:
- Stop services gracefully
- Update binaries and assets
- Start services in correct order
- Verify service health
Main installation restart:
sudo systemctl restart tractstack-gosudo -u t8k pm2 restart astro-main
Dedicated instance restart:
sudo systemctl restart tractstack-go@SITE_IDsudo -u t8k pm2 restart astro-SITE_ID
Health Verification
Section titled “Health Verification”Post-build health checks:
- Service status: Verify all services are running
- HTTP response: Test endpoint accessibility
- Log monitoring: Check for startup errors
- Port availability: Confirm services are listening
Build Monitoring
Section titled “Build Monitoring”Build Logs
Section titled “Build Logs”Concierge execution logs:
sudo journalctl -u t8k-build-watcher.service -fsudo tail -f /home/t8k/log/build.log # If logging is configured
Service restart logs:
sudo journalctl -u tractstack-go -fsudo -u t8k pm2 logs astro-main
Build Status
Section titled “Build Status”Check build completion:
# Monitor state directoryls -la /home/t8k/state/
# Check service status after buildsudo systemctl status tractstack-gosudo -u t8k pm2 status
Troubleshooting Builds
Section titled “Troubleshooting Builds”Common Build Issues
Section titled “Common Build Issues”Git pull failures:
- Authentication: Verify Git credentials
- Repository access: Check repository permissions
- Network connectivity: Verify internet access
- Local changes: Resolve merge conflicts
Go build failures:
cd /home/t8k/src/tractstack-gogo mod tidygo build -v # Verbose output for debugging
Astro build failures:
cd /home/t8k/src/my-tractstackpnpm install --frozen-lockfilepnpm build --verbose
Service Restart Issues
Section titled “Service Restart Issues”Backend restart problems:
sudo journalctl -u tractstack-go --no-pager -n 50
Frontend restart problems:
sudo -u t8k pm2 logs astro-main --errsudo -u t8k pm2 describe astro-main
Recovery Procedures
Section titled “Recovery Procedures”Failed build recovery:
- Stop automatic processing: Remove problematic CSV files
- Manual diagnosis: Run build steps individually
- Fix issues: Resolve code or configuration problems
- Retry build: Create new build trigger file
Service recovery:
# Stop all servicessudo systemctl stop tractstack-gosudo -u t8k pm2 stop all
# Start services manuallysudo systemctl start tractstack-gosudo -u t8k pm2 start all
Build Optimization
Section titled “Build Optimization”Performance Improvements
Section titled “Performance Improvements”Faster builds:
- Incremental compilation: Only rebuild changed components
- Parallel processing: Build frontend and backend simultaneously
- Caching: Cache dependencies and build artifacts
- Selective updates: Only update changed services
Resource Management
Section titled “Resource Management”Build resource usage:
- CPU utilization: Monitor build process load
- Memory consumption: Track memory usage during builds
- Disk I/O: Optimize file operations
- Network usage: Efficient Git operations
The build system automates deployment and updates while maintaining service availability. Monitor build processes and maintain proper Git repository access for reliable automated deployments.