glassbox-ai
Version:
Enterprise-grade AI testing framework with reliability, observability, and comprehensive validation
224 lines (192 loc) • 6.6 kB
YAML
name: "AI Testing Pipeline"
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 2 * * *' # Daily at 2 AM
env:
NODE_VERSION: '18'
GLASSBOX_VERSION: 'latest'
jobs:
ai-testing:
runs-on: ubuntu-latest
strategy:
matrix:
test-suite: [basic, advanced, security]
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install Glassbox AI
run: |
npm install -g glassbox-ai@${{ env.GLASSBOX_VERSION }}
glassbox --version
- name: Setup environment
run: |
echo "Setting up test environment..."
mkdir -p .glassbox/results
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> $GITHUB_ENV
echo "OLLAMA_HOST=${{ secrets.OLLAMA_HOST || 'http://localhost:11434' }}" >> $GITHUB_ENV
- name: Run Basic AI Tests
if: matrix.test-suite == 'basic'
run: |
echo "Running basic AI tests..."
glassbox test examples/basic/chatbot-testing.yml
glassbox test examples/basic/document-summarization.yml
glassbox test examples/basic/code-generation.yml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OLLAMA_HOST: ${{ secrets.OLLAMA_HOST }}
- name: Run Advanced AI Tests
if: matrix.test-suite == 'advanced'
run: |
echo "Running advanced AI tests..."
glassbox test examples/advanced/cost-optimization.yml
glassbox test examples/advanced/multi-model-testing.yml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OLLAMA_HOST: ${{ secrets.OLLAMA_HOST }}
- name: Run Security Tests
if: matrix.test-suite == 'security'
run: |
echo "Running security tests..."
glassbox test examples/advanced/pii-detection.yml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OLLAMA_HOST: ${{ secrets.OLLAMA_HOST }}
- name: Generate Test Report
run: |
echo "Generating test report..."
glassbox report --format html --output .glassbox/results/report.html
glassbox report --format json --output .glassbox/results/summary.json
- name: Upload Test Results
uses: actions/upload-artifact@v4
with:
name: ai-test-results-${{ matrix.test-suite }}
path: |
.glassbox/results/
.glassbox/logs/
retention-days: 30
- name: Upload Test Coverage
uses: actions/upload-artifact@v4
with:
name: test-coverage-${{ matrix.test-suite }}
path: .glassbox/coverage/
retention-days: 90
reliability-testing:
runs-on: ubuntu-latest
needs: ai-testing
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install Glassbox AI
run: npm install -g glassbox-ai@${{ env.GLASSBOX_VERSION }}
- name: Run Reliability Tests
run: |
echo "Running enterprise reliability tests..."
npm run test-reliability
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Upload Reliability Results
uses: actions/upload-artifact@v4
with:
name: reliability-test-results
path: |
test-reliability-results/
.glassbox/reliability/
retention-days: 30
performance-benchmarking:
runs-on: ubuntu-latest
needs: ai-testing
if: github.event_name == 'schedule'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install Glassbox AI
run: npm install -g glassbox-ai@${{ env.GLASSBOX_VERSION }}
- name: Run Performance Benchmarks
run: |
echo "Running performance benchmarks..."
glassbox test examples/benchmarks/response-time.yml
glassbox test examples/benchmarks/cost-optimization.yml
glassbox test examples/benchmarks/reliability.yml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Upload Benchmark Results
uses: actions/upload-artifact@v4
with:
name: performance-benchmarks
path: .glassbox/benchmarks/
retention-days: 90
notification:
runs-on: ubuntu-latest
needs: [ai-testing, reliability-testing]
if: always()
steps:
- name: Download Test Results
uses: actions/download-artifact@v4
with:
pattern: ai-test-results-*
merge-multiple: true
- name: Send Slack Notification
if: failure()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
channel: '#ai-testing'
text: |
AI Testing Pipeline failed!
Branch: ${{ github.ref }}
Commit: ${{ github.sha }}
Workflow: ${{ github.workflow }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Send Success Notification
if: success()
uses: 8398a7/action-slack@v3
with:
status: success
channel: '#ai-testing'
text: |
✅ AI Testing Pipeline completed successfully!
Branch: ${{ github.ref }}
Commit: ${{ github.sha }}
Workflow: ${{ github.workflow }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
security-scan:
runs-on: ubuntu-latest
needs: ai-testing
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run Security Scan
run: |
echo "Running security scan..."
glassbox security-scan examples/advanced/pii-detection.yml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Upload Security Results
uses: actions/upload-artifact@v4
with:
name: security-scan-results
path: .glassbox/security/
retention-days: 30