# Sprint 64 Day 2 Progress: Example Projects and CI/CD Integration
**Sprint**: Sprint 64 - Testing, Examples, and Documentation
**Day**: Day 2 - Example Projects and CI/CD Integration
**Date**: October 28, 2025
**Status**: ✅ **COMPLETE**
**Target Version**: v2.177.0
---
## Overview
Day 2 focuses on creating real-world example projects and comprehensive CI/CD integration guides for mutation testing with PMAT. This document tracks progress on implementing 3 example projects and 3 CI/CD integration guides.
---
## Completed Tasks
### ✅ 1. Rust Example Project
**Directory Created**: `examples/rust-mutation-testing/`
**Files Created**:
- `Cargo.toml` (16 lines) - Rust package configuration with empty workspace
- `src/lib.rs` (149 lines) - Calculator library with 8 functions + 8 tests
- `README.md` (445 lines) - Comprehensive mutation testing guide
**Features**:
- **Functions**: `add`, `subtract`, `multiply`, `divide`, `is_even`, `max`, `factorial`, `is_prime`
- **Tests**: 8 comprehensive unit tests (100% passing)
- **Documentation**: Getting started, mutation testing concepts, detecting test gaps, output formats, advanced usage, CI/CD integration, best practices, mutation operators
**Test Verification**:
```bash
cargo test # 8/8 tests passing (100%)
```
**Commit**: `4d53bb01`
**Key Example from README**:
```bash
# Run mutation testing on calculator module
pmat mutate --target src/lib.rs
# Run with threshold enforcement (CI/CD)
pmat mutate --target src/lib.rs --threshold 80 --failures-only --output-format json
```
---
### ✅ 2. Python Example Project
**Directory Created**: `examples/python-mutation-testing/`
**Files Created**:
- `src/calculator.py` (71 lines) - Calculator module with type hints
- `tests/test_calculator.py` (125 lines) - Pytest test suite (24 tests in 4 classes)
- `requirements.txt` (2 lines) - pytest, pytest-cov
- `README.md` (400+ lines) - Python-specific mutation testing guide
**Features**:
- **Functions**: `add`, `subtract`, `multiply`, `divide`, `is_even`, `max_value`, `factorial`, `is_prime`
- **Tests**: 24 pytest tests organized in 4 classes
- `TestArithmeticOperations` (4 tests)
- `TestLogicalOperations` (2 tests)
- `TestComplexOperations` (3 tests)
- `TestEdgeCases` (15 tests)
- **Documentation**: pytest integration, Python-specific mutation operators, best practices
**Test Verification**:
```bash
pytest # 24/24 tests passing (100%)
```
**Commit**: `98847dd8`
**Python-Specific Operators Documented**:
- Arithmetic: `+` → `-`, `*`, `/`, `%`
- Comparison: `==` → `!=`, `<`, `>`, `<=`, `>=`
- Boolean: `and` → `or`, `True` → `False`
- Return values: `return x` → `return None`, `return 0`
---
### ✅ 3. TypeScript Example Project
**Directory Created**: `examples/typescript-mutation-testing/`
**Files Created**:
- `src/calculator.ts` (98 lines) - Calculator module with strict typing
- `tests/calculator.test.ts` (130 lines) - Jest test suite (24 tests in 4 describe blocks)
- `package.json` (37 lines) - Node.js project configuration
- `tsconfig.json` (18 lines) - TypeScript compiler configuration
- `jest.config.js` (17 lines) - Jest testing framework configuration
- `README.md` (380+ lines) - TypeScript-specific mutation testing guide
**Features**:
- **Functions**: `add`, `subtract`, `multiply`, `divide`, `isEven`, `max`, `factorial`, `isPrime`
- **Tests**: 24 Jest tests organized in 4 describe blocks
- `Arithmetic Operations` (4 tests)
- `Logical Operations` (2 tests)
- `Complex Operations` (3 tests)
- `Edge Cases` (15 tests)
- **Documentation**: Jest integration, ts-jest configuration, TypeScript-specific mutation operators, troubleshooting
**Test Verification**:
```bash
npm test # 24/24 tests passing (100%)
```
**Commit**: `7cd249c5`
**TypeScript-Specific Configuration**:
```json
// jest.config.js
{
"preset": "ts-jest",
"testEnvironment": "node",
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
}
```
---
### ✅ 4. GitHub Actions CI/CD Integration Guide
**File Created**: `docs/ci-cd/github-actions-integration.md` (680+ lines)
**Content Coverage**:
1. **Quick Start** - Minimal workflow example
2. **Basic Setup** - Complete workflow with caching
3. **Multi-Language Support**:
- Rust projects (toolchain, cargo caching)
- Python projects (pip, venv, pytest)
- TypeScript/JavaScript projects (npm, jest)
- Multi-language matrix builds
4. **Quality Gates** - Fail on low mutation score, multi-threshold strategy
5. **Advanced Patterns**:
- Scheduled mutation testing (cron triggers)
- Differential mutation testing (only changed files)
- Parallel jobs by module
6. **Caching Strategies** - PMAT binary, language-specific caches
7. **Artifacts and Reports** - JSON, Markdown, JUnit XML
8. **PR Integration** - Automated comments on pull requests
9. **Troubleshooting** - Timeouts, memory, debug mode
10. **Best Practices** - 10 production recommendations
11. **Complete Production Example** - Multi-stage workflow with all features
**Commit**: `46307136`
**Key Features**:
- Matrix testing across languages
- PR commenting with mutation scores
- Quality gate enforcement
- Caching for performance
- Artifacts with 30-day retention
**Example Workflow**:
```yaml
name: Mutation Testing
on: [push, pull_request]
jobs:
mutation-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
- name: Install PMAT
run: cargo install pmat
- name: Run Mutation Tests
run: pmat mutate --target src/ --threshold 85
```
---
### ✅ 5. GitLab CI Integration Guide
**File Created**: `docs/ci-cd/gitlab-ci-integration.md` (770+ lines, 1,204 total)
**Content Coverage**:
1. **Quick Start** - Minimal `.gitlab-ci.yml` example
2. **Basic Setup** - Multi-stage pipeline
3. **Multi-Language Support**:
- Rust projects (cache, artifacts)
- Python projects (venv, pytest, coverage)
- TypeScript/JavaScript projects (npm, jest)
- Multi-language matrix with templates
4. **Quality Gates** - Fail pipeline on low score, multi-threshold strategy
5. **Advanced Patterns**:
- Scheduled nightly builds
- Differential mutation testing for MRs
- Parallel jobs by module
6. **Caching Strategies** - Aggressive caching, language-specific caching
7. **Artifacts and Reports** - JUnit XML, code quality reports (GitLab native format)
8. **Merge Request Widgets**:
- Comment on MR with results
- Update MR description with mutation score
- GITLAB_TOKEN setup instructions
9. **Troubleshooting** - Timeouts, memory, debug, conditional execution
10. **Best Practices** - 10 production recommendations
11. **Complete Production Example** - Multi-stage production pipeline
**Commit**: `f3fa8a3c`
**Key Features**:
- Template-based job configuration (DRY principles)
- GitLab-specific features (MR widgets, scheduled pipelines)
- Code Quality report integration
- Multi-module parallel testing with aggregated reporting
- curl-based API integration for MR commenting
**Example Merge Request Comment**:
```bash
# Post comment to MR (requires GITLAB_TOKEN with api scope)
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--data-urlencode "body=$COMMENT" \
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/notes"
```
---
### ✅ 6. Jenkins Integration Guide
**File Created**: `docs/ci-cd/jenkins-integration.md` (1,000+ lines, 1,456 total)
**Content Coverage**:
1. **Quick Start** - Minimal Jenkinsfile example
2. **Basic Setup**:
- Declarative pipeline (preferred)
- Scripted pipeline (alternative)
3. **Multi-Language Support**:
- Rust projects (Docker agent, cargo)
- Python projects (venv, pytest)
- TypeScript/JavaScript projects (npm, jest)
- Multi-language matrix builds
4. **Quality Gates** - Fail build on low score, multi-level thresholds, per-module thresholds
5. **Advanced Patterns**:
- Scheduled nightly builds (cron triggers)
- Differential mutation testing for PRs
- Parallel module testing
6. **Blue Ocean Integration** - Modern pipeline visualization
7. **Artifacts and Reports**:
- Multiple output formats
- JUnit XML integration
- HTML reports with publishHTML
8. **Pipeline Libraries**:
- Shared library functions (`mutationTest`, `pmatUtils`)
- Reusable mutation testing logic
9. **Distributed Builds**:
- Agent labels for specific hardware
- Kubernetes agent pods
10. **Troubleshooting** - Timeouts, memory, debug mode
11. **Best Practices** - 10 production recommendations
12. **Complete Production Example** - Multi-stage production pipeline with parameters
**Commit**: `4c4eb9d3`
**Key Features**:
- Declarative vs Scripted pipeline comparison
- Docker agent configuration with volume mounting
- Groovy-based shared library functions
- Kubernetes pod template for dynamic agents
- Post-build actions (artifacts, notifications)
- Blue Ocean UI integration
**Example Shared Library**:
```groovy
// vars/mutationTest.groovy
def call(Map config = [:]) {
def target = config.target ?: 'src/'
def threshold = config.threshold ?: 85
sh "pmat mutate --target ${target} --threshold ${threshold} --output-format json > mutation-results.json"
def results = readJSON file: 'mutation-results.json'
def score = results.mutation_score
if (score < threshold) {
error("Mutation score ${score}% below threshold ${threshold}%")
}
return results
}
```
---
## Summary Statistics
### Example Projects
- **3 Languages**: Rust, Python, TypeScript
- **24 Total Functions**: 8 per language (consistent calculator pattern)
- **56 Total Tests**: 8 Rust + 24 Python + 24 TypeScript
- **1,225+ Lines** of example README documentation
### CI/CD Integration Guides
- **3 Platforms**: GitHub Actions, GitLab CI, Jenkins
- **2,450+ Lines** of CI/CD documentation
- **50+ Workflow/Pipeline Examples**
- **Production-Ready Configurations**
### Total Documentation
- **3,675+ Lines** across 9 files
- **Multi-Language Support** throughout
- **Quality Gate Implementations**
- **Caching Strategies**
- **Troubleshooting Sections**
- **Best Practices** for each platform
---
## Git Commits Made
1. `4d53bb01` - **Rust example project**
- examples/rust-mutation-testing/ (Cargo.toml, src/lib.rs, README.md)
- 8 functions, 8 tests, 445-line README
2. `98847dd8` - **Python example project**
- examples/python-mutation-testing/ (src/, tests/, requirements.txt, README.md)
- 8 functions, 24 tests, 400+ line README
3. `7cd249c5` - **TypeScript example project**
- examples/typescript-mutation-testing/ (src/, tests/, package.json, tsconfig.json, jest.config.js, README.md)
- 8 functions, 24 tests, 380+ line README
4. `46307136` - **GitHub Actions CI/CD integration guide**
- docs/ci-cd/github-actions-integration.md (680+ lines)
- Multi-language workflows, quality gates, PR commenting
5. `f3fa8a3c` - **GitLab CI integration guide**
- docs/ci-cd/gitlab-ci-integration.md (770+ lines, 1,204 total)
- MR widgets, scheduled pipelines, code quality reports
6. `4c4eb9d3` - **Jenkins integration guide**
- docs/ci-cd/jenkins-integration.md (1,000+ lines, 1,456 total)
- Declarative/scripted pipelines, Blue Ocean, shared libraries, Kubernetes
---
## Key Features Across All Deliverables
### Example Projects
- **Consistent 8-function calculator pattern** across all languages
- **Comprehensive test coverage** (8-24 tests per language)
- **Mutation testing examples** with PMAT CLI
- **CI/CD integration snippets** embedded in READMEs
- **Language-specific best practices** (type hints, strict mode, linting)
### CI/CD Guides
- **Basic setup** (quick start examples)
- **Multi-language support** (Rust, Python, TypeScript)
- **Quality gates** with mutation score thresholds
- **Advanced patterns** (differential testing, parallel jobs, scheduled runs)
- **Caching strategies** for PMAT binary and language-specific artifacts
- **Artifacts and reporting** (JSON, Markdown, JUnit XML)
- **Platform-specific features**:
- GitHub Actions: PR comments, matrix builds, actions marketplace
- GitLab CI: MR widgets, code quality reports, templates
- Jenkins: Blue Ocean, shared libraries, Kubernetes agents
- **Complete production examples** with multi-stage pipelines
- **Troubleshooting sections** for common issues
- **10 best practices** per platform
---
## Success Criteria (from Sprint 64 Kickoff)
### Day 2 Deliverables
- [x] ✅ **Create 3 example projects** (Rust, Python, TypeScript)
- [x] ✅ **Write 3 CI/CD integration guides** (GitHub Actions, GitLab CI, Jenkins)
- [x] ✅ **Badge generation** (documented in README examples)
### Quality Metrics
- [x] ✅ **Example projects compile/run** (Rust: 8/8 tests, Python: 24/24 tests, TypeScript: 24/24 tests)
- [x] ✅ **CI/CD guides include production examples** (all 3 platforms have complete production pipelines)
- [x] ✅ **Multi-language support** (all 3 languages covered in each guide)
- [x] ✅ **Quality gates demonstrated** (threshold enforcement in all guides)
- [x] ✅ **Caching strategies** (PMAT binary caching in all guides)
- [x] ✅ **Troubleshooting sections** (all 3 guides include troubleshooting)
---
## Technical Highlights
### Example Projects
- **Rust**: Workspace isolation with empty `[workspace]` table
- **Python**: Type hints with `Optional[float]` for divide function
- **TypeScript**: Strict mode with comprehensive tsconfig.json
### CI/CD Guides
- **GitHub Actions**:
- actions/github-script for PR commenting
- Matrix builds with language-specific includes
- Cache action for PMAT binary
- **GitLab CI**:
- Template-based job configuration (YAML anchors)
- GitLab API integration with curl
- Code Quality JSON format for native integration
- **Jenkins**:
- Groovy-based shared libraries
- Kubernetes pod templates for dynamic agents
- Blue Ocean integration with build descriptions
---
## Files Structure Created
```
examples/
├── rust-mutation-testing/
│ ├── Cargo.toml (16 lines)
│ ├── src/lib.rs (149 lines)
│ └── README.md (445 lines)
├── python-mutation-testing/
│ ├── src/calculator.py (71 lines)
│ ├── tests/test_calculator.py (125 lines)
│ ├── requirements.txt (2 lines)
│ └── README.md (400+ lines)
└── typescript-mutation-testing/
├── src/calculator.ts (98 lines)
├── tests/calculator.test.ts (130 lines)
├── package.json (37 lines)
├── tsconfig.json (18 lines)
├── jest.config.js (17 lines)
└── README.md (380+ lines)
docs/ci-cd/
├── github-actions-integration.md (680+ lines)
├── gitlab-ci-integration.md (1,204 lines)
└── jenkins-integration.md (1,456 lines)
```
---
## Next Steps (Sprint 64 Day 3)
From Sprint 64 Kickoff Day 3 requirements:
- [ ] **Performance benchmarking**: Mutants/second, execution speed, memory profiling
- [ ] **Documentation**:
- [ ] User guide: `docs/guides/mutation-testing.md`
- [ ] API reference: Document all CLI flags
- [ ] Best practices guide: When to use mutation testing, optimal thresholds
- [ ] **Update main README** with mutation testing section
Sprint 64 Day 2 is **100% COMPLETE** ✅
---
## Challenges and Solutions
### Challenge 1: Cargo Workspace Configuration
**Problem**: Rust example project conflicted with parent workspace
**Solution**: Added empty `[workspace]` table to make example independent
### Challenge 2: Python Cache Interference
**Problem**: `__pycache__` directories interfered with git tracking
**Solution**: Removed cache directories, used selective find command for git add
### Challenge 3: Consistent Calculator Pattern
**Problem**: Maintaining consistency across 3 languages
**Solution**: Established 8-function pattern (add, subtract, multiply, divide, is_even/isEven, max, factorial, is_prime/isPrime)
### Challenge 4: CI/CD Platform Differences
**Problem**: Each platform has unique features and syntax
**Solution**: Emphasized platform-specific strengths (GitHub Actions: marketplace, GitLab CI: widgets, Jenkins: libraries)
---
## Resources
### Code References
- **Example Projects**: `examples/{rust,python,typescript}-mutation-testing/`
- **CI/CD Guides**: `docs/ci-cd/`
- **Mutation Handler**: `server/src/cli/handlers/mutate.rs`
- **Mutation Engine**: `server/src/services/mutation/engine.rs`
### Documentation
- **Sprint 64 Kickoff**: `docs/execution/SPRINT-64-KICKOFF.md`
- **Sprint 62-64 Roadmap**: `docs/execution/SPRINT-62-64-ROADMAP.md`
- **Sprint 64 Day 1 Progress**: `docs/execution/SPRINT-64-DAY1-PROGRESS.md`
---
**Created**: October 28, 2025
**Completed**: October 28, 2025
**Sprint**: Sprint 64 Day 2
**Status**: ✅ **COMPLETE** (6/6 tasks, 100%)
**Total Lines Created**: 3,675+ lines (examples + guides)
**Total Commits**: 6 commits