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
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>
98 lines
3.1 KiB
Bash
Executable File
98 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Install Git hooks for MEV Bot V2
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}📦 Installing Git hooks for MEV Bot V2...${NC}"
|
|
echo ""
|
|
|
|
# Get script directory
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )"
|
|
HOOKS_DIR="$REPO_ROOT/.git-hooks"
|
|
GIT_HOOKS_DIR="$REPO_ROOT/.git/hooks"
|
|
|
|
# Check if we're in a git repository
|
|
if [ ! -d "$REPO_ROOT/.git" ]; then
|
|
echo -e "${RED}❌ Not a git repository${NC}"
|
|
echo -e "${RED} Run this script from within the repository${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if hooks directory exists
|
|
if [ ! -d "$HOOKS_DIR" ]; then
|
|
echo -e "${RED}❌ Hooks directory not found: $HOOKS_DIR${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Make hooks executable
|
|
echo -e "${YELLOW}Making hooks executable...${NC}"
|
|
chmod +x "$HOOKS_DIR"/pre-commit
|
|
chmod +x "$HOOKS_DIR"/commit-msg
|
|
echo -e "${GREEN}✅ Hooks made executable${NC}"
|
|
echo ""
|
|
|
|
# Install pre-commit hook
|
|
echo -e "${YELLOW}Installing pre-commit hook...${NC}"
|
|
if [ -f "$GIT_HOOKS_DIR/pre-commit" ] && [ ! -L "$GIT_HOOKS_DIR/pre-commit" ]; then
|
|
echo -e "${YELLOW}⚠️ Existing pre-commit hook found (not a symlink)${NC}"
|
|
echo -e "${YELLOW} Backing up to pre-commit.backup${NC}"
|
|
mv "$GIT_HOOKS_DIR/pre-commit" "$GIT_HOOKS_DIR/pre-commit.backup"
|
|
fi
|
|
|
|
ln -sf "../../.git-hooks/pre-commit" "$GIT_HOOKS_DIR/pre-commit"
|
|
echo -e "${GREEN}✅ pre-commit hook installed${NC}"
|
|
echo ""
|
|
|
|
# Install commit-msg hook
|
|
echo -e "${YELLOW}Installing commit-msg hook...${NC}"
|
|
if [ -f "$GIT_HOOKS_DIR/commit-msg" ] && [ ! -L "$GIT_HOOKS_DIR/commit-msg" ]; then
|
|
echo -e "${YELLOW}⚠️ Existing commit-msg hook found (not a symlink)${NC}"
|
|
echo -e "${YELLOW} Backing up to commit-msg.backup${NC}"
|
|
mv "$GIT_HOOKS_DIR/commit-msg" "$GIT_HOOKS_DIR/commit-msg.backup"
|
|
fi
|
|
|
|
ln -sf "../../.git-hooks/commit-msg" "$GIT_HOOKS_DIR/commit-msg"
|
|
echo -e "${GREEN}✅ commit-msg hook installed${NC}"
|
|
echo ""
|
|
|
|
# Verify installation
|
|
echo -e "${YELLOW}Verifying installation...${NC}"
|
|
if [ ! -L "$GIT_HOOKS_DIR/pre-commit" ]; then
|
|
echo -e "${RED}❌ pre-commit hook installation failed${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -L "$GIT_HOOKS_DIR/commit-msg" ]; then
|
|
echo -e "${RED}❌ commit-msg hook installation failed${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✅ Installation verified${NC}"
|
|
echo ""
|
|
|
|
# Summary
|
|
echo -e "${GREEN}╔══════════════════════════════════════╗${NC}"
|
|
echo -e "${GREEN}║ ✅ GIT HOOKS INSTALLED ✅ ║${NC}"
|
|
echo -e "${GREEN}╚══════════════════════════════════════╝${NC}"
|
|
echo ""
|
|
echo -e "${GREEN}Installed hooks:${NC}"
|
|
echo -e " • pre-commit - Runs quality checks before commits"
|
|
echo -e " • commit-msg - Validates commit message format"
|
|
echo ""
|
|
echo -e "${YELLOW}To test the hooks:${NC}"
|
|
echo -e " git commit --allow-empty -m \"test(hooks): verify git hooks installation\""
|
|
echo ""
|
|
echo -e "${YELLOW}To bypass hooks (emergency only):${NC}"
|
|
echo -e " git commit --no-verify"
|
|
echo ""
|
|
echo -e "${GREEN}Happy coding! 🚀${NC}"
|