Skip to content

feat(infra): GitHub Actions CI/CD workflows (#17) - #37

Closed
MrSpideyNihal wants to merge 7 commits into
developmentfrom
feature/issue-17-ci
Closed

MrSpideyNihal wants to merge 7 commits into
developmentfrom
feature/issue-17-ci

Conversation

@MrSpideyNihal

Copy link
Copy Markdown
Owner

Summary

Implements Issue #17 — Automated GitHub Actions CI/CD Pipeline. Sets up linters, static type checkers, dependencies safety scanners, and unit testing runs with coverage criteria.

Changes

CI/CD Workflow configuration

  • Created .github/workflows/ci.yml defining:
    • Runs on push/PR targeting main and development branches.
    • Strategy matrix covering platforms (ubuntu-latest, windows-latest) and Python versions (3.11, 3.12).
    • Automated apt-get system dependencies installation for Linux runners (libportaudio2 and libasound2-dev required by sounddevice).
    • Python dependencies installation including optional feature packages ([dev,nlp,whisper]).
    • Code linting via ruff check src/.
    • Static type checking via mypy src/.
    • Dependency vulnerability scan via safety check.
    • Headless unit testing on Ubuntu using xvfb-run wrapping pytest to support customtkinter GUI frame initializations.
    • Automated test runs requiring at least 80% coverage: pytest --cov=src --cov-fail-under=80.

Dependencies & Exclusions

  • Added safety to development dependencies block in pyproject.toml and requirements-dev.txt for consistency.
  • Updated .gitignore to exclude local coverage files and test caches (.coverage, .pytest_cache, .mypy_cache, .ruff_cache).

Verification Results

  • Executed linting, typing, security scanning, and coverage checks locally:
    • Ruff: All checks passed (ruff ✓)
    • Mypy: All checks passed (mypy ✓)
    • Safety: Checked environment (safety ✓)
    • Pytest: 150/150 unit tests passed with 83.59% coverage (exceeding the 80% limit threshold!).

Closes #17

@MrSpideyNihal

Copy link
Copy Markdown
Owner Author

Superseded: all changes from this branch have been merged into main directly. Closing as stale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant