Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
9.8 kB
Markdown
Operational Commands - false.work UE5 Builder #
Quick reference for day-to-day operations of the UE5 build VM.
VM Management #
Check VM Status #
gcloud compute instances list --project=aesthetic-computer --filter="name=ue5-builder-falsework"
Start VM #
gcloud compute instances start ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a
# Wait for it to be ready (30-60 seconds)
sleep 60
Stop VM (Saves ~$8-10/day!) #
gcloud compute instances stop ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a
Get Current Status #
gcloud compute instances describe ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--format="value(status,networkInterfaces[0].accessConfigs[0].natIP)"
Get External IP #
gcloud compute instances describe ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)"
Reset Windows Password #
gcloud compute reset-windows-password ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--user=builduser \
--quiet
Delete VM (When Done) #
gcloud compute instances delete ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--quiet
GitHub Actions Runner Management #
Check Runner Status (In VM) #
# PowerShell on the VM
Get-Service actions.runner.*
Restart Runner (In VM) #
Restart-Service actions.runner.*
View Runner Logs (In VM) #
Get-Content C:\actions-runner\_diag\Runner_*.log -Tail 50
Check Online Status #
Go to: https://github.com/whistlegraph/aesthetic-computer/settings/actions/runners
Should see green dot next to the runner.
Perforce Operations (In VM) #
Check Connection #
p4 info
p4 login -s
Sync Latest #
p4 sync
View Recent Changes #
p4 changes -m 5 //depot/SpiderLily/SL_main/...
Check Workspace #
p4 client -o spiderlily_build_workspace
Build Operations #
Trigger Build from GitHub #
- Go to: https://github.com/whistlegraph/aesthetic-computer/actions
- Select "UE5 Build (Self-Hosted)"
- Click "Run workflow"
- Choose options and run
Monitor Build (In VM) #
# Watch build logs
Get-Content D:\Builds\Logs\*.log -Tail 50 -Wait
List Recent Builds #
Get-ChildItem D:\Builds | Sort-Object CreationTime -Descending | Select-Object -First 10
Clean Old Builds (In VM) #
# Keep only 5 most recent builds
Get-ChildItem D:\Builds -Directory |
Sort-Object CreationTime -Descending |
Select-Object -Skip 5 |
Remove-Item -Recurse -Force
Cost Management #
View Current Month Costs #
gcloud billing accounts list
# Get detailed costs
gcloud billing projects describe aesthetic-computer \
--format="value(billingAccountName)"
Estimated Costs #
- Running: ~$8-10/day ($240-300/month)
- Stopped: ~$2-3/day (just storage)
- Best Practice: Stop when not actively building
Cost Optimization Schedule #
Example: Work hours only (8am-6pm weekdays)
- Running: 50 hours/week = ~$100-125/month
- Savings: ~$150-175/month vs 24/7
# Morning: Start VM
gcloud compute instances start ue5-builder-falsework --zone=us-central1-a
# Evening: Stop VM
gcloud compute instances stop ue5-builder-falsework --zone=us-central1-a
Backup Operations #
Create Disk Snapshot #
gcloud compute disks snapshot ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--snapshot-names="ue5-backup-$(date +%Y%m%d)"
List Snapshots #
gcloud compute snapshots list \
--project=aesthetic-computer \
--filter="name~ue5-backup"
Create Machine Image (Full VM Backup) #
gcloud compute machine-images create ue5-builder-image \
--project=aesthetic-computer \
--source-instance=ue5-builder-falsework \
--source-instance-zone=us-central1-a
Restore from Machine Image #
gcloud compute instances create ue5-builder-restored \
--project=aesthetic-computer \
--zone=us-central1-a \
--source-machine-image=ue5-builder-image
Troubleshooting Commands #
VM Won't Start #
# Check quotas
gcloud compute project-info describe --project=aesthetic-computer
# Check for any errors
gcloud compute operations list --project=aesthetic-computer --limit=10
Can't Connect via RDP #
# Verify VM is running
gcloud compute instances describe ue5-builder-falsework --zone=us-central1-a --format="value(status)"
# Check firewall rules
gcloud compute firewall-rules list --project=aesthetic-computer --filter="name=allow-rdp-ue5-builder"
# Reset Windows password
gcloud compute reset-windows-password ue5-builder-falsework --zone=us-central1-a --user=builduser
Runner Shows Offline #
# SSH into VM to investigate
gcloud compute ssh ue5-builder-falsework --zone=us-central1-a
# Then in VM:
Get-Service actions.runner.*
Get-Content C:\actions-runner\_diag\Runner_*.log -Tail 100
Monitoring #
Check VM CPU/Memory Usage #
gcloud compute instances describe ue5-builder-falsework \
--project=aesthetic-computer \
--zone=us-central1-a \
--format="json" | jq '.cpuPlatform,.machineType'
View Metrics in Console #
Daily Workflow Example #
Morning (Start of Work Day) #
# 1. Start VM
gcloud compute instances start ue5-builder-falsework --zone=us-central1-a
# 2. Wait for boot
sleep 60
# 3. Get IP for RDP
gcloud compute instances describe ue5-builder-falsework \
--zone=us-central1-a \
--format="get(networkInterfaces[0].accessConfigs[0].natIP)"
# 4. Connect via RDP (use IP from step 3)
During Day #
- Trigger builds from GitHub Actions
- Monitor via GitHub Actions UI
- Download artifacts when ready
Evening (End of Work Day) #
# Stop VM to save money
gcloud compute instances stop ue5-builder-falsework --zone=us-central1-a
Weekly #
# Create backup snapshot
gcloud compute disks snapshot ue5-builder-falsework \
--zone=us-central1-a \
--snapshot-names="ue5-backup-$(date +%Y%m%d)"
# Check costs
# Visit: https://console.cloud.google.com/billing?project=aesthetic-computer
Emergency Procedures #
Build Is Stuck #
- Check GitHub Actions UI for logs
- SSH into VM:
gcloud compute ssh ue5-builder-falsework --zone=us-central1-a - Check Task Manager for hung processes
- If needed, restart runner:
Restart-Service actions.runner.*
VM Is Unresponsive #
# Force stop
gcloud compute instances stop ue5-builder-falsework --zone=us-central1-a
# Wait
sleep 30
# Start again
gcloud compute instances start ue5-builder-falsework --zone=us-central1-a
Need to Rebuild Everything #
# Delete VM
gcloud compute instances delete ue5-builder-falsework --zone=us-central1-a --quiet
# Re-run setup script
cd /workspaces/aesthetic-computer/false.work/unreal-builder/scripts
./quick-setup-gcp.sh
Useful Aliases (Add to .bashrc or .config/fish/config.fish) #
Bash #
alias ue5-start='gcloud compute instances start ue5-builder-falsework --zone=us-central1-a'
alias ue5-stop='gcloud compute instances stop ue5-builder-falsework --zone=us-central1-a'
alias ue5-status='gcloud compute instances describe ue5-builder-falsework --zone=us-central1-a --format="value(status)"'
alias ue5-ip='gcloud compute instances describe ue5-builder-falsework --zone=us-central1-a --format="get(networkInterfaces[0].accessConfigs[0].natIP)"'
alias ue5-rdp='remmina -c rdp://builduser@$(ue5-ip)'
Fish #
alias ue5-start='gcloud compute instances start ue5-builder-falsework --zone=us-central1-a'
alias ue5-stop='gcloud compute instances stop ue5-builder-falsework --zone=us-central1-a'
alias ue5-status='gcloud compute instances describe ue5-builder-falsework --zone=us-central1-a --format="value(status)"'
alias ue5-ip='gcloud compute instances describe ue5-builder-falsework --zone=us-central1-a --format="get(networkInterfaces[0].accessConfigs[0].natIP)"'
alias ue5-rdp='remmina -c rdp://builduser@(ue5-ip)'
Quick Reference Card #
┌─────────────────────────────────────────────────┐
│ false.work UE5 Builder - Quick Commands │
├─────────────────────────────────────────────────┤
│ Start: ue5-start │
│ Stop: ue5-stop │
│ Status: ue5-status │
│ IP: ue5-ip │
│ RDP: ue5-rdp │
├─────────────────────────────────────────────────┤
│ Builds: github.com/whistlegraph/ │
│ aesthetic-computer/actions │
├─────────────────────────────────────────────────┤
│ Cost: ~$8/day running, ~$2/day stopped │
│ Remember: STOP VM when not building! │
└─────────────────────────────────────────────────┘