Files
mev-beta/.git-hooks/commit-msg
Administrator 24b4d90e98
Some checks failed
V2 CI/CD Pipeline / Pre-Flight Checks (push) Has been cancelled
V2 CI/CD Pipeline / Build & Dependencies (push) Has been cancelled
V2 CI/CD Pipeline / Code Quality & Linting (push) Has been cancelled
V2 CI/CD Pipeline / Unit Tests (100% Coverage Required) (push) Has been cancelled
V2 CI/CD Pipeline / Integration Tests (push) Has been cancelled
V2 CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
V2 CI/CD Pipeline / Decimal Precision Validation (push) Has been cancelled
V2 CI/CD Pipeline / Modularity Validation (push) Has been cancelled
V2 CI/CD Pipeline / Final Validation Summary (push) Has been cancelled
ci: add comprehensive CI/CD pipeline with 100% coverage enforcement
Created complete CI/CD infrastructure for V2 development:

GitHub Actions Pipeline (.github/workflows/v2-ci.yml):
- Pre-flight checks (branch naming, commit messages)
- Build & dependency validation
- Code quality with 40+ linters (golangci-lint)
- Unit tests with MANDATORY 100% coverage enforcement
- Integration tests with timeout management
- Performance benchmarks (parser < 5ms, detection < 10ms, e2e < 50ms)
- Decimal precision validation
- Modularity validation (component independence)
- Final validation summary with PR comments

Code Quality (.golangci.yml):
- 40+ enabled linters for comprehensive checks
- Cyclomatic complexity limits (max 15)
- Magic number detection
- Security scanning (gosec)
- Style checking with MEV/DEX terminology
- Test file exclusions for appropriate linters

Build Automation (Makefile):
- build, test, test-coverage with 100% enforcement
- lint, fmt, vet, security targets
- deps-download, deps-verify, deps-tidy, deps-check
- validate (full CI/CD locally)
- bench (performance benchmarks)
- check-modularity, check-circular
- Color-coded output for better UX

Git Optimization (.gitattributes):
- LF normalization for cross-platform consistency
- Binary file handling
- Diff settings for Go files
- Merge strategies
- Export-ignore for archives

Git Hooks (.git-hooks/):
- pre-commit: format, tests, vet, secret detection, go.mod tidy
- commit-msg: message format validation
- README with installation instructions
- install-git-hooks.sh script for easy setup

Documentation (docs/planning/05_CI_CD_SETUP.md):
- Complete pipeline architecture diagram
- Local development workflow
- GitHub Actions job descriptions
- Performance optimizations (caching, parallel execution)
- Failure handling and debugging
- Branch protection rules
- Deployment process
- Best practices and troubleshooting

Performance Targets:
- Pipeline duration: < 15 minutes
- Test coverage: 100% (enforced, non-negotiable)
- Parser latency: < 5ms
- Arbitrage detection: < 10ms
- End-to-end: < 50ms

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 14:40:08 +01:00

91 lines
2.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
#
# Commit message hook for MEV Bot V2
# Validates commit message format
#
# Install: ln -sf ../../.git-hooks/commit-msg .git/hooks/commit-msg
#
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
COMMIT_MSG_FILE=$1
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
# Skip if this is a merge commit
if git rev-parse -q --verify MERGE_HEAD > /dev/null; then
echo -e "${GREEN} Merge commit detected, skipping validation${NC}"
exit 0
fi
# Skip if this is an amend
if [ -n "$GIT_EDITOR" ]; then
echo -e "${GREEN} Amend detected, skipping validation${NC}"
exit 0
fi
echo -e "${GREEN}📝 Validating commit message...${NC}"
# Required format: type(scope): description
# type: feat, fix, perf, refactor, test, docs, build, ci
# scope: component name (parsers, cache, validation, etc.)
PATTERN="^(feat|fix|perf|refactor|test|docs|build|ci)\([a-z0-9-]+\): .{10,}"
if ! echo "$COMMIT_MSG" | grep -qE "$PATTERN"; then
echo -e "${RED}❌ Invalid commit message format${NC}"
echo ""
echo -e "${YELLOW}Required format:${NC}"
echo -e " type(scope): brief description"
echo ""
echo -e "${YELLOW}Valid types:${NC}"
echo -e " feat - New feature"
echo -e " fix - Bug fix"
echo -e " perf - Performance improvement"
echo -e " refactor - Code refactoring"
echo -e " test - Adding or updating tests"
echo -e " docs - Documentation updates"
echo -e " build - Build system changes"
echo -e " ci - CI/CD changes"
echo ""
echo -e "${YELLOW}Example:${NC}"
echo -e " feat(parsers): add UniswapV2 parser with event validation"
echo ""
echo -e "${YELLOW}Your message:${NC}"
echo -e " $COMMIT_MSG"
echo ""
exit 1
fi
# Check for minimum description length
DESCRIPTION=$(echo "$COMMIT_MSG" | head -n1 | sed 's/^[^:]*: //')
if [ ${#DESCRIPTION} -lt 10 ]; then
echo -e "${RED}❌ Commit description too short (minimum 10 characters)${NC}"
echo -e "${YELLOW}Your description: $DESCRIPTION (${#DESCRIPTION} chars)${NC}"
exit 1
fi
# Check for maximum line length (72 chars for first line)
FIRST_LINE=$(echo "$COMMIT_MSG" | head -n1)
if [ ${#FIRST_LINE} -gt 72 ]; then
echo -e "${YELLOW}⚠️ Warning: First line exceeds 72 characters (${#FIRST_LINE} chars)${NC}"
echo -e "${YELLOW} Consider shortening the description${NC}"
echo ""
fi
# Encourage including coverage info for test changes
if echo "$COMMIT_MSG" | grep -q "^test"; then
if ! echo "$COMMIT_MSG" | grep -qi "coverage"; then
echo -e "${YELLOW}💡 Tip: Consider including coverage info in test commits${NC}"
echo ""
fi
fi
echo -e "${GREEN}✅ Commit message format valid${NC}"
echo ""
exit 0