77 - completed
88 schedule :
99 # Daily health check
10- - cron : ' 0 8 * * *' # Every day at 8 AM UTC
10+ - cron : " 0 8 * * *" # Every day at 8 AM UTC
1111 workflow_dispatch :
1212 inputs :
1313 max_iterations :
14- description : ' Maximum auto-fix iterations (1-5)'
14+ description : " Maximum auto-fix iterations (1-5)"
1515 required : false
16- default : ' 3 '
16+ default : " 3 "
1717 type : string
1818 force_fix :
19- description : ' Force auto-fix even if healthy'
19+ description : " Force auto-fix even if healthy"
2020 required : false
2121 default : false
2222 type : boolean
@@ -26,119 +26,119 @@ jobs:
2626 runs-on : ubuntu-latest
2727
2828 steps :
29- - name : Checkout code
30- uses : actions/checkout@v4
31-
32- - name : Setup Node.js
33- uses : actions/setup-node@v4
34- with :
35- node-version : ' 20'
36- cache : ' npm'
37-
38- - name : Install dependencies
39- run : npm run ci-install
40-
41- - name : Run CI/CD Health Monitor
42- id : monitor
43- run : node scripts/github-actions-monitor.cjs --report
44- env :
45- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
46- GITHUB_REPOSITORY : ${{ github.repository }}
47-
48- - name : Check if auto-fix needed
49- id : check-fix
50- run : |
51- echo "🔍 Workflow trigger analysis:" >> $GITHUB_STEP_SUMMARY
52- echo "Event: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
53- echo "Workflow: ${{ github.event.workflow_run.name || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
54- echo "Conclusion: ${{ github.event.workflow_run.conclusion || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
55- echo "Action: ${{ github.event.action || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
56- echo "" >> $GITHUB_STEP_SUMMARY
57-
58- if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
59- STATUS=$(jq -r '.ci_status' .opencode/logs/ci-cd-monitor-report.json)
60- HEALTH_SCORE=$(jq -r '.health_score' .opencode/logs/ci-cd-monitor-report.json)
61- ISSUE_COUNT=$(jq -r '.issues | length' .opencode/logs/ci-cd-monitor-report.json)
62-
63- echo "status=$STATUS" >> $GITHUB_OUTPUT
64- echo "health_score=$HEALTH_SCORE" >> $GITHUB_OUTPUT
65- echo "issue_count=$ISSUE_COUNT" >> $GITHUB_OUTPUT
66-
67- # Determine if auto-fix should run
68- FORCE_FIX="${{ inputs.force_fix || false }}"
69- TRIGGER_TYPE="${{ github.event_name }}"
70- WORKFLOW_CONCLUSION="${{ github.event.workflow_run.conclusion }}"
71-
72- echo "Force fix: $FORCE_FIX" >> $GITHUB_STEP_SUMMARY
73- echo "Workflow conclusion: $WORKFLOW_CONCLUSION" >> $GITHUB_STEP_SUMMARY
74-
75- # Only run auto-fix if workflow actually completed (not still running)
76- if [ "$WORKFLOW_CONCLUSION" = "success" ] || [ "$WORKFLOW_CONCLUSION" = "failure" ]; then
77- if [ "$FORCE_FIX" = "true" ] || [ "$TRIGGER_TYPE" = "workflow_run" ]; then
78- if [ "$STATUS" = "critical" ] || [ "$STATUS" = "warning" ] || [ "$HEALTH_SCORE" -lt 80 ] || [ "$ISSUE_COUNT" -gt 0 ]; then
79- echo "needs_fix=true" >> $GITHUB_OUTPUT
80- echo "🔧 Auto-fix needed: Status=$STATUS, Health=$HEALTH_SCORE%, Issues=$ISSUE_COUNT" >> $GITHUB_STEP_SUMMARY
29+ - name : Checkout code
30+ uses : actions/checkout@v4
31+
32+ - name : Setup Node.js
33+ uses : actions/setup-node@v4
34+ with :
35+ node-version : " 20"
36+ cache : " npm"
37+
38+ - name : Install dependencies
39+ run : npm run ci-install
40+
41+ - name : Run CI/CD Health Monitor
42+ id : monitor
43+ run : node scripts/github-actions-monitor.cjs --report
44+ env :
45+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
46+ GITHUB_REPOSITORY : ${{ github.repository }}
47+
48+ - name : Check if auto-fix needed
49+ id : check-fix
50+ run : |
51+ echo "🔍 Workflow trigger analysis:" >> $GITHUB_STEP_SUMMARY
52+ echo "Event: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
53+ echo "Workflow: ${{ github.event.workflow_run.name || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
54+ echo "Conclusion: ${{ github.event.workflow_run.conclusion || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
55+ echo "Action: ${{ github.event.action || 'N/A' }}" >> $GITHUB_STEP_SUMMARY
56+ echo "" >> $GITHUB_STEP_SUMMARY
57+
58+ if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
59+ STATUS=$(jq -r '.ci_status' .opencode/logs/ci-cd-monitor-report.json)
60+ HEALTH_SCORE=$(jq -r '.health_score' .opencode/logs/ci-cd-monitor-report.json)
61+ ISSUE_COUNT=$(jq -r '.issues | length' .opencode/logs/ci-cd-monitor-report.json)
62+
63+ echo "status=$STATUS" >> $GITHUB_OUTPUT
64+ echo "health_score=$HEALTH_SCORE" >> $GITHUB_OUTPUT
65+ echo "issue_count=$ISSUE_COUNT" >> $GITHUB_OUTPUT
66+
67+ # Determine if auto-fix should run
68+ FORCE_FIX="${{ inputs.force_fix || false }}"
69+ TRIGGER_TYPE="${{ github.event_name }}"
70+ WORKFLOW_CONCLUSION="${{ github.event.workflow_run.conclusion }}"
71+
72+ echo "Force fix: $FORCE_FIX" >> $GITHUB_STEP_SUMMARY
73+ echo "Workflow conclusion: $WORKFLOW_CONCLUSION" >> $GITHUB_STEP_SUMMARY
74+
75+ # Only run auto-fix if workflow actually completed (not still running)
76+ if [ "$WORKFLOW_CONCLUSION" = "success" ] || [ "$WORKFLOW_CONCLUSION" = "failure" ]; then
77+ if [ "$FORCE_FIX" = "true" ] || [ "$TRIGGER_TYPE" = "workflow_run" ]; then
78+ if [ "$STATUS" = "critical" ] || [ "$STATUS" = "warning" ] || [ "$HEALTH_SCORE" -lt 80 ] || [ "$ISSUE_COUNT" -gt 0 ]; then
79+ echo "needs_fix=true" >> $GITHUB_OUTPUT
80+ echo "🔧 Auto-fix needed: Status=$STATUS, Health=$HEALTH_SCORE%, Issues=$ISSUE_COUNT" >> $GITHUB_STEP_SUMMARY
81+ else
82+ echo "needs_fix=false" >> $GITHUB_OUTPUT
83+ echo "✅ No auto-fix needed: Status=$STATUS, Health=$HEALTH_SCORE%, Issues=$ISSUE_COUNT" >> $GITHUB_STEP_SUMMARY
84+ fi
8185 else
8286 echo "needs_fix=false" >> $GITHUB_OUTPUT
83- echo "✅ No auto-fix needed: Status=$STATUS, Health=$HEALTH_SCORE%, Issues=$ISSUE_COUNT " >> $GITHUB_STEP_SUMMARY
87+ echo "⏭️ Skipping auto-fix: Manual trigger without force flag " >> $GITHUB_STEP_SUMMARY
8488 fi
8589 else
8690 echo "needs_fix=false" >> $GITHUB_OUTPUT
87- echo "⏭ ️ Skipping auto-fix: Manual trigger without force flag " >> $GITHUB_STEP_SUMMARY
91+ echo "⏸ ️ Skipping auto-fix: Workflow not yet completed (conclusion: $WORKFLOW_CONCLUSION) " >> $GITHUB_STEP_SUMMARY
8892 fi
8993 else
9094 echo "needs_fix=false" >> $GITHUB_OUTPUT
91- echo "⏸️ Skipping auto-fix: Workflow not yet completed (conclusion: $WORKFLOW_CONCLUSION)" >> $GITHUB_STEP_SUMMARY
95+ echo "❌ No monitoring report found" >> $GITHUB_STEP_SUMMARY
96+ fi
97+
98+ - name : Upload monitoring report
99+ uses : actions/upload-artifact@v4
100+ with :
101+ name : ci-cd-health-report
102+ path : .opencode/logs/ci-cd-monitor-report.json
103+
104+ - name : Run CI/CD Auto-Fix
105+ if : steps.check-fix.outputs.needs_fix == 'true' && github.event.workflow_run.conclusion != 'in_progress'
106+ id : auto-fix
107+ run : node scripts/ci-cd-auto-fix.cjs
108+ env :
109+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
110+ GITHUB_REPOSITORY : ${{ github.repository }}
111+ MAX_ITERATIONS : ${{ inputs.max_iterations || 3 }}
112+
113+ - name : Auto-Fix Summary
114+ if : steps.check-fix.outputs.needs_fix == 'true'
115+ run : |
116+ echo "## CI/CD Auto-Fix Results" >> $GITHUB_STEP_SUMMARY
117+ echo "**Trigger:** ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
118+ echo "**Health Status:** ${{ steps.check-fix.outputs.status }} (${{ steps.check-fix.outputs.health_score }}%)" >> $GITHUB_STEP_SUMMARY
119+ echo "**Issues Found:** ${{ steps.check-fix.outputs.issue_count }}" >> $GITHUB_STEP_SUMMARY
120+ echo "**Auto-Fix Applied:** Yes" >> $GITHUB_STEP_SUMMARY
121+ echo "" >> $GITHUB_STEP_SUMMARY
122+
123+ if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
124+ echo "### Updated Health Status" >> $GITHUB_STEP_SUMMARY
125+ echo "\`\`\`json" >> $GITHUB_STEP_SUMMARY
126+ cat .opencode/logs/ci-cd-monitor-report.json >> $GITHUB_STEP_SUMMARY
127+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
128+ fi
129+
130+ - name : Health status notification
131+ if : failure()
132+ run : |
133+ echo "🚨 CI/CD Health Alert"
134+ echo "CI/CD pipelines may be unhealthy"
135+ echo "Check the monitoring report for details"
136+
137+ - name : Final Summary Report
138+ run : |
139+ if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
140+ echo "## Final CI/CD Health Summary" >> $GITHUB_STEP_SUMMARY
141+ echo "\`\`\`json" >> $GITHUB_STEP_SUMMARY
142+ cat .opencode/logs/ci-cd-monitor-report.json >> $GITHUB_STEP_SUMMARY
143+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
92144 fi
93- else
94- echo "needs_fix=false" >> $GITHUB_OUTPUT
95- echo "❌ No monitoring report found" >> $GITHUB_STEP_SUMMARY
96- fi
97-
98- - name : Upload monitoring report
99- uses : actions/upload-artifact@v4
100- with :
101- name : ci-cd-health-report
102- path : .opencode/logs/ci-cd-monitor-report.json
103-
104- - name : Run CI/CD Auto-Fix
105- if : steps.check-fix.outputs.needs_fix == 'true' && github.event.workflow_run.conclusion != 'in_progress'
106- id : auto-fix
107- run : node scripts/ci-cd-auto-fix.cjs
108- env :
109- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
110- GITHUB_REPOSITORY : ${{ github.repository }}
111- MAX_ITERATIONS : ${{ inputs.max_iterations || 3 }}
112-
113- - name : Auto-Fix Summary
114- if : steps.check-fix.outputs.needs_fix == 'true'
115- run : |
116- echo "## CI/CD Auto-Fix Results" >> $GITHUB_STEP_SUMMARY
117- echo "**Trigger:** ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
118- echo "**Health Status:** ${{ steps.check-fix.outputs.status }} (${{ steps.check-fix.outputs.health_score }}%)" >> $GITHUB_STEP_SUMMARY
119- echo "**Issues Found:** ${{ steps.check-fix.outputs.issue_count }}" >> $GITHUB_STEP_SUMMARY
120- echo "**Auto-Fix Applied:** Yes" >> $GITHUB_STEP_SUMMARY
121- echo "" >> $GITHUB_STEP_SUMMARY
122-
123- if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
124- echo "### Updated Health Status" >> $GITHUB_STEP_SUMMARY
125- echo "\`\`\`json" >> $GITHUB_STEP_SUMMARY
126- cat .opencode/logs/ci-cd-monitor-report.json >> $GITHUB_STEP_SUMMARY
127- echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
128- fi
129-
130- - name : Health status notification
131- if : failure()
132- run : |
133- echo "🚨 CI/CD Health Alert"
134- echo "CI/CD pipelines may be unhealthy"
135- echo "Check the monitoring report for details"
136-
137- - name : Final Summary Report
138- run : |
139- if [ -f .opencode/logs/ci-cd-monitor-report.json ]; then
140- echo "## Final CI/CD Health Summary" >> $GITHUB_STEP_SUMMARY
141- echo "\`\`\`json" >> $GITHUB_STEP_SUMMARY
142- cat .opencode/logs/ci-cd-monitor-report.json >> $GITHUB_STEP_SUMMARY
143- echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
144- fi
0 commit comments