Files
TimeTracker/docs/cicd/README_CI_CD_SECTION.md
T
Dries Peeters 84e2096602 feat: enhance CI/CD workflows and improve UX features
This commit improves the testing workflow, CI/CD documentation, and user experience:

## CI/CD Improvements:
- Add comprehensive testing strategy documentation to CD release workflow
- Document workflow triggers and testing approach in ci-comprehensive.yml
- Update CI/CD documentation with testing workflow details

## UX Enhancements:
- Add localStorage persistence for PWA install prompt dismissal
- Prevent repeated PWA install prompts after user dismisses
- Add dismiss button (×) to PWA install toast notification

## Dashboard Features:
- Add edit and delete actions to recent time entries table
- Include delete confirmation dialogs for time entries
- Add notes field to "Start Timer" modal
- Improve table layout with actions column

## Documentation:
- Create TESTING_WORKFLOW_STRATEGY.md for comprehensive testing guidelines
- Add QUICK_REFERENCE_TESTING.md for quick testing reference
- Document changes in CHANGES_SUMMARY_TESTING_WORKFLOW.md
- Update README_CI_CD_SECTION.md with workflow details

## Other Changes:
- Update setup.py configuration
- Enhance task templates (create/edit/view) with improved UI

These changes improve developer experience with better testing documentation
and enhance user experience with smarter PWA prompts and dashboard functionality.
2025-10-22 07:28:39 +02:00

3.8 KiB

CI/CD Pipeline

🚀 Automated Testing & Deployment

TimeTracker includes a comprehensive CI/CD pipeline that automates testing, building, and deployment.

Features

Multi-level Testing - Smoke, unit, integration, security, and database tests
Parallel Execution - Fast feedback with parallel test jobs
Multi-platform Builds - AMD64 and ARM64 Docker images
Automated Releases - Semantic versioning and GitHub releases
Security Scanning - Bandit and Safety vulnerability checks
Code Quality - Black, Flake8, and isort validation

Quick Start

# Install test dependencies
pip install -r requirements.txt -r requirements-test.txt

# Run tests
pytest -m smoke    # Quick smoke tests (< 1 min)
pytest -m unit     # Unit tests (2-5 min)
pytest             # Full test suite (15-30 min)

Docker Images

Development builds are automatically published to GitHub Container Registry:

# Pull latest development build
docker pull ghcr.io/{owner}/{repo}:develop

# Pull stable release
docker pull ghcr.io/{owner}/{repo}:latest

# Run container
docker run -p 8080:8080 ghcr.io/{owner}/{repo}:latest

Creating Releases

Releases are automatically created when you push to main or create a version tag:

# Create a release
git tag v1.2.3
git push origin v1.2.3

# Or merge to main
git checkout main
git merge develop
git push

The CI/CD pipeline will automatically:

  1. Run full test suite
  2. Perform security audit
  3. Build multi-platform Docker images
  4. Create GitHub release with deployment manifests
  5. Publish to container registry

Documentation

Test Organization

Tests are organized using pytest markers:

Marker Purpose Duration
smoke Critical fast tests < 1 min
unit Isolated component tests 2-5 min
integration Component interaction tests 5-10 min
security Security vulnerability tests 3-5 min
database Database tests 5-10 min

CI/CD Workflows

🔍 Pull Requests (Comprehensive Testing)

  • Runs on: Every PR to main or develop
  • Duration: ~30-40 minutes
  • Tests:
    • Smoke tests (fast, critical)
    • Unit tests (parallel)
    • Integration tests (with PostgreSQL)
    • Security tests
    • Code quality checks
    • Docker build test
    • Full test suite with PostgreSQL (PRs to main only)
  • Output: Test summary comment on PR
  • Purpose: Catch issues BEFORE merge ⚠️

🔧 Development Builds

  • Runs on: Push to develop branch
  • Duration: ~20-25 minutes
  • Tests: Quick smoke tests only
  • Output: ghcr.io/{owner}/{repo}:develop
  • Creates: Development release with deployment manifest

🚀 Production Releases

  • Runs on: Push to main or version tag
  • Duration: ~40-60 minutes
  • Tests: Security audit only (full tests already ran on PR)
  • Output: ghcr.io/{owner}/{repo}:latest, v1.2.3, etc.
  • Creates: GitHub release with manifests and changelog
  • Purpose: Build and publish (tests already passed on PR)

📝 Note: Full test suite runs on PRs, not releases. This ensures issues are caught and fixed BEFORE code reaches main.

Monitoring

View build status and metrics:


Note: Add this section to your main README.md file