-
Notifications
You must be signed in to change notification settings - Fork 0
141 lines (119 loc) · 3.83 KB
/
Copy pathtest-externalized-iam.yml
File metadata and controls
141 lines (119 loc) · 3.83 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: Test Externalized IAM
on:
pull_request:
branches:
- main
- 'feature/**'
- '**-externalized-iam'
paths:
- 'deploy/**'
- 'modules/**'
- 'test/**'
- '.github/workflows/test-externalized-iam.yml'
push:
branches:
- main
paths:
- 'deploy/**'
- 'modules/**'
- 'test/**'
workflow_dispatch:
permissions:
contents: read
pull-requests: write # For PR comments
checks: write # For test status
jobs:
unit-tests:
name: Unit Tests (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: 'deploy/pyproject.toml'
- name: Install dependencies
run: make install-dev
- name: Run unit tests with coverage
run: make test-coverage
- name: Upload coverage to Codecov (Python 3.11 only)
if: matrix.python-version == '3.11'
uses: codecov/codecov-action@v4
with:
files: ./deploy/coverage.xml
flags: unit-tests
name: codecov-umbrella
fail_ci_if_error: false
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-py${{ matrix.python-version }}
path: deploy/test-results/
- name: Upload coverage report
if: matrix.python-version == '3.11'
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: deploy/htmlcov/
- name: Generate test summary
if: always()
run: |
echo "## Test Results (Python ${{ matrix.python-version }})" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f deploy/.coverage ]; then
echo "✅ Tests completed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Tests failed" >> $GITHUB_STEP_SUMMARY
fi
lint:
name: Code Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: 'deploy/pyproject.toml'
- name: Install dependencies
run: make install-dev
- name: Run code quality checks
run: make lint-python
- name: Generate lint summary
if: always()
run: |
echo "## Code Quality Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Black: Format check" >> $GITHUB_STEP_SUMMARY
echo "- Ruff: Linting" >> $GITHUB_STEP_SUMMARY
echo "- Mypy: Type checking" >> $GITHUB_STEP_SUMMARY
test-summary:
name: Test Summary
runs-on: ubuntu-latest
needs: [unit-tests, lint]
if: always()
steps:
- name: Check test results
run: |
echo "## Overall Test Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [[ "${{ needs.unit-tests.result }}" == "success" && "${{ needs.lint.result }}" == "success" ]]; then
echo "✅ All tests passed!" >> $GITHUB_STEP_SUMMARY
exit 0
else
echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Unit Tests: ${{ needs.unit-tests.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Linting: ${{ needs.lint.result }}" >> $GITHUB_STEP_SUMMARY
exit 1
fi