-
Notifications
You must be signed in to change notification settings - Fork 5
142 lines (118 loc) · 3.49 KB
/
build.yml
File metadata and controls
142 lines (118 loc) · 3.49 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
142
name: Build
on:
workflow_dispatch:
pull_request:
branches: [master, main]
paths:
- 'bases/**'
- 'components/**'
- 'packages/**'
- 'pyproject.toml'
- 'uv.lock'
- 'tests/**'
push:
branches: [master, main]
paths:
- 'bases/**'
- 'components/**'
- 'packages/**'
- 'pyproject.toml'
- 'uv.lock'
- 'tests/**'
jobs:
test:
name: Lint and Test
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync
- name: Run pylint
run: |
echo "Running pylint checks..."
uv run pylint bases/ components/ --exit-zero --output-format=colorized || true
continue-on-error: true
- name: Run unit test
run: |
echo "Running unit pytest..."
uv run pytest -v --tb=short -m unit
- name: Run integration test
run: |
echo "Running integration pytest..."
uv run pytest -v --tb=short --mock-dev -m integration
- name: Generate test summary
if: always()
run: |
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ $? -eq 0 ]; then
echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY
fi
build:
name: Build packages
needs: test
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
strategy:
matrix:
project: ['agent', 'simunet']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync
- name: Build ${{ matrix.project }}
run: |
echo "Building netdriver-${{ matrix.project }}..."
uv build --directory packages/${{ matrix.project }}
- name: Check package metadata
run: |
uv pip install twine
twine check packages/${{ matrix.project }}/dist/*.whl
- name: Verify package contents
run: |
python -m zipfile -l packages/${{ matrix.project }}/dist/*.whl
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: netdriver-${{ matrix.project }}
path: packages/${{ matrix.project }}/dist/*.whl
retention-days: 7
verify:
name: Verify builds
needs: build
runs-on: ubuntu-latest
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
- name: List artifacts
run: |
echo "Built packages:"
find . -name "*.whl" -type f -exec ls -lh {} \;
- name: Build summary
run: |
echo "## Build Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Package | Size | Status |" >> $GITHUB_STEP_SUMMARY
echo "|---------|------|--------|" >> $GITHUB_STEP_SUMMARY
for whl in $(find . -name "*.whl" -type f); do
name=$(basename "$whl")
size=$(du -h "$whl" | cut -f1)
echo "| $name | $size | ✓ |" >> $GITHUB_STEP_SUMMARY
done