Files
claudetools/projects/msp-tools/guru-connect/ACTIVATE_CI_CD.md
Mike Swanson 6c316aa701 Add VPN configuration tools and agent documentation
Created comprehensive VPN setup tooling for Peaceful Spirit L2TP/IPsec connection
and enhanced agent documentation framework.

VPN Configuration (PST-NW-VPN):
- Setup-PST-L2TP-VPN.ps1: Automated L2TP/IPsec setup with split-tunnel and DNS
- Connect-PST-VPN.ps1: Connection helper with PPP adapter detection, DNS (192.168.0.2), and route config (192.168.0.0/24)
- Connect-PST-VPN-Standalone.ps1: Self-contained connection script for remote deployment
- Fix-PST-VPN-Auth.ps1: Authentication troubleshooting for CHAP/MSChapv2
- Diagnose-VPN-Interface.ps1: Comprehensive VPN interface and routing diagnostic
- Quick-Test-VPN.ps1: Fast connectivity verification (DNS/router/routes)
- Add-PST-VPN-Route-Manual.ps1: Manual route configuration helper
- vpn-connect.bat, vpn-disconnect.bat: Simple batch file shortcuts
- OpenVPN config files (Windows-compatible, abandoned for L2TP)

Key VPN Implementation Details:
- L2TP creates PPP adapter with connection name as interface description
- UniFi auto-configures DNS (192.168.0.2) but requires manual route to 192.168.0.0/24
- Split-tunnel enabled (only remote traffic through VPN)
- All-user connection for pre-login auto-connect via scheduled task
- Authentication: CHAP + MSChapv2 for UniFi compatibility

Agent Documentation:
- AGENT_QUICK_REFERENCE.md: Quick reference for all specialized agents
- documentation-squire.md: Documentation and task management specialist agent
- Updated all agent markdown files with standardized formatting

Project Organization:
- Moved conversation logs to dedicated directories (guru-connect-conversation-logs, guru-rmm-conversation-logs)
- Cleaned up old session JSONL files from projects/msp-tools/
- Added guru-connect infrastructure (agent, dashboard, proto, scripts, .gitea workflows)
- Added guru-rmm server components and deployment configs

Technical Notes:
- VPN IP pool: 192.168.4.x (client gets 192.168.4.6)
- Remote network: 192.168.0.0/24 (router at 192.168.0.10)
- PSK: rrClvnmUeXEFo90Ol+z7tfsAZHeSK6w7
- Credentials: pst-admin / 24Hearts$

Files: 15 VPN scripts, 2 agent docs, conversation log reorganization,
guru-connect/guru-rmm infrastructure additions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-18 11:51:47 -07:00

630 lines
14 KiB
Markdown

# GuruConnect CI/CD Activation Guide
**Date:** 2026-01-18
**Status:** Ready for Activation
**Server:** 172.16.3.30 (gururmm)
---
## Prerequisites Complete
- [x] Gitea Actions workflows committed
- [x] Deployment automation scripts created
- [x] Gitea Actions runner binary installed
- [x] Systemd service configured
- [x] All documentation complete
---
## Step 1: Register Gitea Actions Runner
### 1.1 Get Registration Token
1. Open browser and navigate to:
```
https://git.azcomputerguru.com/admin/actions/runners
```
2. Log in with Gitea admin credentials
3. Click **"Create new Runner"**
4. Copy the registration token (starts with something like `D0g...`)
### 1.2 Register Runner on Server
```bash
# SSH to server
ssh guru@172.16.3.30
# Register runner with token from above
sudo -u gitea-runner act_runner register \
--instance https://git.azcomputerguru.com \
--token YOUR_REGISTRATION_TOKEN_HERE \
--name gururmm-runner \
--labels ubuntu-latest,ubuntu-22.04
```
**Expected Output:**
```
INFO Registering runner, arch=amd64, os=linux, version=0.2.11.
INFO Successfully registered runner.
```
### 1.3 Start Runner Service
```bash
# Reload systemd configuration
sudo systemctl daemon-reload
# Enable runner to start on boot
sudo systemctl enable gitea-runner
# Start runner service
sudo systemctl start gitea-runner
# Check status
sudo systemctl status gitea-runner
```
**Expected Output:**
```
● gitea-runner.service - Gitea Actions Runner
Loaded: loaded (/etc/systemd/system/gitea-runner.service; enabled)
Active: active (running) since Sat 2026-01-18 16:00:00 UTC
```
### 1.4 Verify Registration
1. Go back to: https://git.azcomputerguru.com/admin/actions/runners
2. Verify "gururmm-runner" appears in the list
3. Status should show: **Online** (green)
---
## Step 2: Test Build Workflow
### 2.1 Trigger First Build
```bash
# On server
cd ~/guru-connect
# Make empty commit to trigger CI
git commit --allow-empty -m "test: trigger CI/CD pipeline"
git push origin main
```
### 2.2 Monitor Build Progress
1. Open browser: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
2. You should see a new workflow run: **"Build and Test"**
3. Click on the workflow run to view progress
4. Watch the jobs complete:
- Build Server (Linux) - ~2-3 minutes
- Build Agent (Windows) - ~2-3 minutes
- Security Audit - ~1 minute
- Build Summary - ~10 seconds
### 2.3 Expected Results
**Build Server Job:**
```
✓ Checkout code
✓ Install Rust toolchain
✓ Cache Cargo dependencies
✓ Install dependencies (pkg-config, libssl-dev, protobuf-compiler)
✓ Build server
✓ Upload server binary
```
**Build Agent Job:**
```
✓ Checkout code
✓ Install Rust toolchain
✓ Install cross-compilation tools
✓ Build agent
✓ Upload agent binary
```
**Security Audit Job:**
```
✓ Checkout code
✓ Install Rust toolchain
✓ Install cargo-audit
✓ Run security audit
```
### 2.4 Download Build Artifacts
1. Scroll down to **Artifacts** section
2. Download artifacts:
- `guruconnect-server-linux` (server binary)
- `guruconnect-agent-windows` (agent .exe)
3. Verify file sizes:
- Server: ~15-20 MB
- Agent: ~10-15 MB
---
## Step 3: Test Workflow
### 3.1 Trigger Test Suite
```bash
# Tests run automatically on push, or trigger manually:
cd ~/guru-connect
# Make a code change to trigger tests
echo "// Test comment" >> server/src/main.rs
git add server/src/main.rs
git commit -m "test: trigger test workflow"
git push origin main
```
### 3.2 Monitor Test Execution
1. Go to: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
2. Click on **"Run Tests"** workflow
3. Watch jobs complete:
- Test Server - ~3-5 minutes
- Test Agent - ~2-3 minutes
- Code Coverage - ~4-6 minutes
- Lint - ~2-3 minutes
### 3.3 Expected Results
**Test Server Job:**
```
✓ Run unit tests
✓ Run integration tests
✓ Run doc tests
```
**Test Agent Job:**
```
✓ Run agent tests
```
**Code Coverage Job:**
```
✓ Install tarpaulin
✓ Generate coverage report
✓ Upload coverage artifact
```
**Lint Job:**
```
✓ Check formatting (server) - cargo fmt
✓ Check formatting (agent) - cargo fmt
✓ Run clippy (server) - zero warnings
✓ Run clippy (agent) - zero warnings
```
---
## Step 4: Test Deployment Workflow
### 4.1 Create Version Tag
```bash
# On server
cd ~/guru-connect/scripts
# Create first release tag (v0.1.0)
./version-tag.sh patch
```
**Expected Interaction:**
```
=========================================
GuruConnect Version Tagging
=========================================
Current version: v0.0.0
New version: v0.1.0
Changes since v0.0.0:
-------------------------------------------
5b7cf5f ci: add Gitea Actions workflows and deployment automation
[previous commits...]
-------------------------------------------
Create tag v0.1.0? (y/N) y
Updating Cargo.toml versions...
Updated server/Cargo.toml
Updated agent/Cargo.toml
Committing version bump...
[main abc1234] chore: bump version to v0.1.0
Creating tag v0.1.0...
Tag created successfully
To push tag to remote:
git push origin v0.1.0
```
### 4.2 Push Tag to Trigger Deployment
```bash
# Push the version bump commit
git push origin main
# Push the tag (this triggers deployment workflow)
git push origin v0.1.0
```
### 4.3 Monitor Deployment
1. Go to: https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
2. Click on **"Deploy to Production"** workflow
3. Watch deployment progress:
- Deploy Server - ~10-15 minutes
- Create Release - ~2-3 minutes
### 4.4 Expected Deployment Flow
**Deploy Server Job:**
```
✓ Checkout code
✓ Install Rust toolchain
✓ Build release binary
✓ Create deployment package
✓ Transfer to server (via SSH)
✓ Run deployment script
├─ Backup current version
├─ Stop service
├─ Deploy new binary
├─ Start service
├─ Health check
└─ Verify deployment
✓ Upload deployment artifact
```
**Create Release Job:**
```
✓ Create GitHub/Gitea release
✓ Upload release assets
├─ guruconnect-server-v0.1.0.tar.gz
├─ guruconnect-agent-v0.1.0.exe
└─ SHA256SUMS
```
### 4.5 Verify Deployment
```bash
# Check service status
sudo systemctl status guruconnect
# Check new version
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server --version
# Should output: v0.1.0
# Check health endpoint
curl http://172.16.3.30:3002/health
# Should return: {"status":"OK"}
# Check backup created
ls -lh /home/guru/deployments/backups/
# Should show: guruconnect-server-20260118-HHMMSS
# Check artifact saved
ls -lh /home/guru/deployments/artifacts/
# Should show: guruconnect-server-v0.1.0.tar.gz
```
---
## Step 5: Test Manual Deployment
### 5.1 Download Deployment Artifact
```bash
# From Actions page, download: guruconnect-server-v0.1.0.tar.gz
# Or use artifact from server:
cd /home/guru/deployments/artifacts
ls -lh guruconnect-server-v0.1.0.tar.gz
```
### 5.2 Run Manual Deployment
```bash
cd ~/guru-connect/scripts
./deploy.sh /home/guru/deployments/artifacts/guruconnect-server-v0.1.0.tar.gz
```
**Expected Output:**
```
=========================================
GuruConnect Deployment Script
=========================================
Package: /home/guru/deployments/artifacts/guruconnect-server-v0.1.0.tar.gz
Target: /home/guru/guru-connect
Creating backup...
[OK] Backup created: /home/guru/deployments/backups/guruconnect-server-20260118-161500
Stopping GuruConnect service...
[OK] Service stopped
Extracting deployment package...
Deploying new binary...
[OK] Binary deployed
Archiving deployment package...
[OK] Artifact saved
Starting GuruConnect service...
[OK] Service started successfully
Running health check...
[OK] Health check: PASSED
Deployment version information:
GuruConnect Server v0.1.0
=========================================
Deployment Complete!
=========================================
Deployment time: 20260118-161500
Backup location: /home/guru/deployments/backups/guruconnect-server-20260118-161500
Artifact location: /home/guru/deployments/artifacts/guruconnect-server-20260118-161500.tar.gz
```
---
## Troubleshooting
### Runner Not Starting
**Symptom:** `systemctl status gitea-runner` shows "inactive" or "failed"
**Solution:**
```bash
# Check logs
sudo journalctl -u gitea-runner -n 50
# Common issues:
# 1. Not registered - run registration command again
# 2. Wrong token - get new token from Gitea admin
# 3. Permissions - ensure gitea-runner user owns /home/gitea-runner/.runner
# Re-register if needed
sudo -u gitea-runner act_runner register \
--instance https://git.azcomputerguru.com \
--token NEW_TOKEN_HERE
```
### Workflow Not Triggering
**Symptom:** Push to main branch but no workflow appears in Actions tab
**Checklist:**
1. Is runner registered and online? (Check admin/actions/runners)
2. Are workflow files in `.gitea/workflows/` directory?
3. Did you push to the correct branch? (main or develop)
4. Are Gitea Actions enabled in repository settings?
**Solution:**
```bash
# Verify workflows committed
git ls-tree -r main --name-only | grep .gitea/workflows
# Should show:
# .gitea/workflows/build-and-test.yml
# .gitea/workflows/deploy.yml
# .gitea/workflows/test.yml
# If missing, add and commit:
git add .gitea/
git commit -m "ci: add missing workflows"
git push origin main
```
### Build Failing
**Symptom:** Build workflow shows red X
**Solution:**
```bash
# View logs in Gitea Actions tab
# Common issues:
# 1. Missing dependencies
# Add to workflow: apt-get install -y [package]
# 2. Rust compilation errors
# Fix code and push again
# 3. Test failures
# Run tests locally first: cargo test
# 4. Clippy warnings
# Fix warnings: cargo clippy --fix
```
### Deployment Failing
**Symptom:** Deploy workflow fails or service won't start after deployment
**Solution:**
```bash
# Check deployment logs
cat /home/guru/deployments/deploy-*.log
# Check service logs
sudo journalctl -u guruconnect -n 50
# Manual rollback if needed
ls /home/guru/deployments/backups/
cp /home/guru/deployments/backups/guruconnect-server-TIMESTAMP \
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server
sudo systemctl restart guruconnect
```
### Health Check Failing
**Symptom:** Health check returns connection refused or timeout
**Solution:**
```bash
# Check if service is running
sudo systemctl status guruconnect
# Check if port is listening
netstat -tlnp | grep 3002
# Check server logs
sudo journalctl -u guruconnect -f
# Test manually
curl -v http://172.16.3.30:3002/health
# Common issues:
# 1. Service not started - sudo systemctl start guruconnect
# 2. Port blocked - check firewall
# 3. Database connection issue - check .env file
```
---
## Validation Checklist
After completing all steps, verify:
- [ ] Runner shows "Online" in Gitea admin panel
- [ ] Build workflow completes successfully (green checkmark)
- [ ] Test workflow completes successfully (all tests pass)
- [ ] Deployment workflow completes successfully
- [ ] Service restarts with new version
- [ ] Health check returns "OK"
- [ ] Backup created in `/home/guru/deployments/backups/`
- [ ] Artifact saved in `/home/guru/deployments/artifacts/`
- [ ] Build artifacts downloadable from Actions tab
- [ ] Version tag appears in repository tags
- [ ] Manual deployment script works
---
## Next Steps After Activation
### 1. Configure Deployment SSH Keys (Optional)
For fully automated deployment without manual intervention:
```bash
# Generate SSH key for runner
sudo -u gitea-runner ssh-keygen -t ed25519 -C "gitea-runner@gururmm"
# Add public key to authorized_keys
sudo -u gitea-runner cat /home/gitea-runner/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
# Test SSH connection
sudo -u gitea-runner ssh guru@172.16.3.30 whoami
```
### 2. Set Up Notification Webhooks (Optional)
Configure Gitea to send notifications on build/deployment events:
1. Go to repository > Settings > Webhooks
2. Add webhook for Slack/Discord/Email
3. Configure triggers: Push, Pull Request, Release
### 3. Add More Runners (Optional)
For faster builds and multi-platform support:
- **Windows Runner:** For native Windows agent builds
- **macOS Runner:** For macOS agent builds
- **Staging Runner:** For staging environment deployments
### 4. Enhance CI/CD (Optional)
**Performance:**
- Add caching for dependencies
- Parallel test execution
- Incremental builds
**Quality:**
- Code coverage thresholds
- Performance benchmarks
- Security scanning (SAST/DAST)
**Deployment:**
- Staging environment
- Canary deployments
- Blue-green deployments
- Smoke tests after deployment
---
## Quick Reference Commands
```bash
# Runner management
sudo systemctl status gitea-runner
sudo systemctl restart gitea-runner
sudo journalctl -u gitea-runner -f
# Create version tag
cd ~/guru-connect/scripts
./version-tag.sh [major|minor|patch]
# Manual deployment
./deploy.sh /path/to/package.tar.gz
# View workflows
https://git.azcomputerguru.com/azcomputerguru/guru-connect/actions
# Check service
sudo systemctl status guruconnect
curl http://172.16.3.30:3002/health
# View logs
sudo journalctl -u guruconnect -f
# Rollback deployment
cp /home/guru/deployments/backups/guruconnect-server-TIMESTAMP \
~/guru-connect/target/x86_64-unknown-linux-gnu/release/guruconnect-server
sudo systemctl restart guruconnect
```
---
## Support Resources
**Gitea Actions Documentation:**
- Overview: https://docs.gitea.com/usage/actions/overview
- Workflow Syntax: https://docs.gitea.com/usage/actions/workflow-syntax
- Act Runner: https://gitea.com/gitea/act_runner
**Repository:**
- https://git.azcomputerguru.com/azcomputerguru/guru-connect
**Created Documentation:**
- `CI_CD_SETUP.md` - Complete CI/CD setup guide
- `PHASE1_WEEK3_COMPLETE.md` - Week 3 completion summary
- `ACTIVATE_CI_CD.md` - This guide
---
**Last Updated:** 2026-01-18
**Status:** Ready for Activation
**Action Required:** Register Gitea Actions runner with admin token