-
Notifications
You must be signed in to change notification settings - Fork 582
103 lines (93 loc) · 3.25 KB
/
Copy pathmain-ci.yml
File metadata and controls
103 lines (93 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
name: Main CI Pipeline
on:
pull_request:
branches: ["main"]
push:
branches: ["main"]
permissions:
contents: write
pull-requests: write
checks: write
statuses: write
concurrency:
group: main-ci-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
# Check which paths were changed to determine which tests to run
check-changes:
name: Check Changed Files
runs-on: ubuntu-latest
outputs:
engine-changed: ${{ steps.changes.outputs.engine }}
frontend-changed: ${{ steps.changes.outputs.frontend }}
backend-changed: ${{ steps.changes.outputs.backend }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
engine:
- 'engine/**'
frontend:
- 'frontend/**'
backend:
- 'backend/robot-service/**'
- 'backend/resource-service/**'
# Run tests in parallel
style-check:
name: Style Check
uses: ./.github/workflows/style.yml
needs: check-changes
if: |
needs.check-changes.outputs.engine-changed == 'true' ||
needs.check-changes.outputs.frontend-changed == 'true' ||
needs.check-changes.outputs.backend-changed == 'true'
# ============================================================================
# Summary Stage
# ============================================================================
summary:
name: 📊 CI Pipeline Summary
runs-on: ubuntu-latest
needs: [check-changes, style-check]
if: always()
timeout-minutes: 2
steps:
- name: Generate CI Summary
run: |
echo "=== 🚀 Astron RPA CI Pipeline Summary ==="
echo ""
echo "📁 Changed Components:"
echo " 🔧 Engine: ${{ needs.check-changes.outputs.engine-changed }}"
echo " 🎨 Frontend: ${{ needs.check-changes.outputs.frontend-changed }}"
echo " ⚙️ Backend: ${{ needs.check-changes.outputs.backend-changed }}"
echo ""
echo "🔍 Job Results:"
echo " 📋 Change Detection: ${{ needs.check-changes.result }}"
echo " ✨ Style Check: ${{ needs.style-check.result }}"
echo ""
# Determine overall status
overall_success=true
# Check required jobs
if [[ "${{ needs.check-changes.result }}" != "success" ]]; then
echo "❌ Change detection failed"
overall_success=false
fi
# Only check style if engine changed
if [[ "${{ needs.check-changes.outputs.engine-changed }}" == "true" ]]; then
if [[ "${{ needs.style-check.result }}" != "success" ]]; then
echo "❌ Style check failed"
overall_success=false
fi
else
echo "ℹ️ Style check skipped (no engine changes)"
fi
echo ""
if [[ "$overall_success" == "true" ]]; then
echo "✅ 🎉 All checks passed! Ready for merge."
echo "🚀 Your code looks great!"
else
echo "❌ 🚨 Some checks failed. Please review the logs above."
echo "🔧 Fix the issues and push again."
exit 1
fi