-
-
Notifications
You must be signed in to change notification settings - Fork 8
134 lines (130 loc) · 4.15 KB
/
Copy pathci.yml
File metadata and controls
134 lines (130 loc) · 4.15 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
name: 🔮 GitVoyant CI/CD
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
lint-and-format:
name: 🔍 Lint & Format Check
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout Code
uses: actions/checkout@v4
- name: 🐍 Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: ⚡ Install UV
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: 🔧 Bootstrap Environment
run: make bootstrap
- name: 🧪 Install Dev Dependencies
run: make dev
- name: 🔍 Run Linting
run: make lint
- name: ✨ Check Formatting
run: |
make format
# Check if formatting changed anything
git diff --exit-code || (echo "❌ Code is not properly formatted. Run 'make format' locally." && exit 1)
test:
name: 🧪 Test Suite
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.11', '3.12']
steps:
- name: 📥 Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🐍 Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: ⚡ Install UV
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- name: 🔧 Bootstrap Environment
run: make bootstrap
- name: 🧪 Install Dev Dependencies
run: make dev
- name: 🔬 Run Unit Tests
run: make test-unit
- name: 🔗 Run Integration Tests
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: make test-integration
# TODO: Fix CLI tests in future release
# - name: 💻 Run CLI Tests
# run: make test-cli
- name: 📊 Generate Coverage Report (excluding CLI tests)
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
# Run coverage excluding CLI tests
PYTHONPATH=src .venv/bin/pytest --cov=gitvoyant --cov-report=term-missing --cov-fail-under=55 tests/unit tests/integration
# TODO: Re-enable CLI integration tests in future release
# cli-integration:
# name: 🖥️ CLI Integration Test
# runs-on: ubuntu-latest
# steps:
# - name: 📥 Checkout Code
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: 🐍 Set up Python 3.11
# uses: actions/setup-python@v4
# with:
# python-version: '3.11'
# - name: ⚡ Install UV
# run: |
# curl -LsSf https://astral.sh/uv/install.sh | sh
# echo "$HOME/.cargo/bin" >> $GITHUB_PATH
# - name: 🔧 Bootstrap Environment
# run: make bootstrap
# - name: 🧪 Test CLI Installation
# run: |
# source .venv/bin/activate
# gitvoyant --help
# gitvoyant version
# - name: 🔮 Test Temporal Analysis
# run: |
# source .venv/bin/activate
# # Test temporal analysis on this repo
# gitvoyant analyze temporal . --window-days 30
# - name: 🤖 Test Agent Mode
# env:
# ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
# run: |
# source .venv/bin/activate
# # Test that agent can start (but don't run interactive session)
# if [ -n "$ANTHROPIC_API_KEY" ]; then
# echo "🤖 Testing agent mode with API key..."
# timeout 10s gitvoyant analyze agent || true
# else
# echo "⚠️ Skipping agent tests - no API key available"
# fi
security:
name: 🔒 Security Scan
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout Code
uses: actions/checkout@v4
- name: 🐍 Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: 🔒 Run Bandit Security Scan
run: |
pip install bandit[toml]
bandit -r src/ -f json -o bandit-report.json || true
- name: 📋 Upload Security Report
uses: actions/upload-artifact@v4
with:
name: security-report
path: bandit-report.json