mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 05:57:21 -05:00
fix: Add Railway deployment configs and GitHub workflows
- Add Railway configuration (railway.toml) - Add GitHub Actions workflows - Railway deployment automation - Python/Node.js testing - Health check monitoring - Add GitHub templates (CODEOWNERS, PR template) - Add requirements files if missing - Standardize deployment across all services This ensures consistent deployment patterns across the entire BlackRoad OS infrastructure. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
107
.github/workflows/nightly.yml
vendored
Normal file
107
.github/workflows/nightly.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
# ============================================================================
|
||||
# BlackRoad OS - Nightly Health Check
|
||||
# Copyright (c) 2025 BlackRoad OS, Inc. / Alexa Louise Amundson
|
||||
# All Rights Reserved.
|
||||
# ============================================================================
|
||||
#
|
||||
# Scheduled workflow that runs nightly to check system health.
|
||||
# Validates all Python/Shell scripts, checks for stale branches, etc.
|
||||
# ============================================================================
|
||||
|
||||
name: Nightly
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 6 * * *' # 6 AM UTC daily
|
||||
workflow_dispatch: # Manual trigger
|
||||
|
||||
jobs:
|
||||
health-check:
|
||||
name: Health Check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Validate all Python files
|
||||
id: python-check
|
||||
run: |
|
||||
echo "## Python Validation" >> $GITHUB_STEP_SUMMARY
|
||||
ERRORS=0
|
||||
TOTAL=0
|
||||
|
||||
for f in $(find . -name "*.py" -type f); do
|
||||
TOTAL=$((TOTAL + 1))
|
||||
if python3 -m py_compile "$f" 2>/dev/null; then
|
||||
echo "✓ $f"
|
||||
else
|
||||
echo "✗ $f" >&2
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- Total Python files: $TOTAL" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- Errors: $ERRORS" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
if [ $ERRORS -gt 0 ]; then
|
||||
echo "::warning::$ERRORS Python files have syntax errors"
|
||||
fi
|
||||
|
||||
- name: Check for stale branches
|
||||
run: |
|
||||
echo "## Branch Analysis" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
# List branches merged into main
|
||||
echo "### Merged branches (candidates for cleanup)" >> $GITHUB_STEP_SUMMARY
|
||||
git branch -r --merged origin/main 2>/dev/null | grep -v main | head -10 >> $GITHUB_STEP_SUMMARY || echo "None" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
# List branches older than 30 days
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "### Branches with no recent activity (30+ days)" >> $GITHUB_STEP_SUMMARY
|
||||
CUTOFF=$(date -d '30 days ago' +%s 2>/dev/null || date -v-30d +%s)
|
||||
git for-each-ref --sort=-committerdate refs/remotes/ --format='%(refname:short) %(committerdate:unix)' 2>/dev/null | \
|
||||
while read branch date; do
|
||||
if [ "$date" -lt "$CUTOFF" ] 2>/dev/null; then
|
||||
echo "- $branch"
|
||||
fi
|
||||
done | head -10 >> $GITHUB_STEP_SUMMARY || echo "None" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Count files by type
|
||||
run: |
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "## Repository Statistics" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Type | Count |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "|------|-------|" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Python (.py) | $(find . -name '*.py' | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Shell (.sh) | $(find . -name '*.sh' | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| YAML (.yaml/.yml) | $(find . -name '*.yaml' -o -name '*.yml' | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Markdown (.md) | $(find . -name '*.md' | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| HTML (.html) | $(find . -name '*.html' | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Total files | $(find . -type f | wc -l) |" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Check for TODO/FIXME comments
|
||||
run: |
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "## TODO/FIXME Items" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
TODO_COUNT=$(grep -rn "TODO\|FIXME\|XXX\|HACK" --include="*.py" --include="*.sh" . 2>/dev/null | wc -l)
|
||||
echo "Found $TODO_COUNT TODO/FIXME comments" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
if [ "$TODO_COUNT" -gt 0 ]; then
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "<details><summary>Show items</summary>" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||
grep -rn "TODO\|FIXME\|XXX\|HACK" --include="*.py" --include="*.sh" . 2>/dev/null | head -20 >> $GITHUB_STEP_SUMMARY
|
||||
echo '```' >> $GITHUB_STEP_SUMMARY
|
||||
echo "</details>" >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
Reference in New Issue
Block a user