chore: remove GitHub Actions workflows

Quality checks run locally via prek pre-push hooks. CI workflows
(ruff, ty, pytest, lint-infra, version-bump) are no longer needed.
Updated docs to remove all GitHub Actions references.
This commit is contained in:
Justin Bollinger
2026-03-03 14:42:57 -05:00
parent 613c16e567
commit aa9d326e2d
8 changed files with 2 additions and 254 deletions

View File

@@ -1,40 +0,0 @@
name: lint-infra
on:
push:
pull_request:
jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Run shellcheck
run: |
find . -name "*.sh" \
-not -path "./hashcat-utils/*" \
-not -path "./princeprocessor/*" \
-not -path "./omen/*" \
-not -path "./PACK/*" \
-not -path "./build/*" \
-not -path "./dist/*" \
-not -path "./.venv/*" \
-print0 | xargs -0 shellcheck
actionlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Install actionlint
run: |
curl -sL https://github.com/rhysd/actionlint/releases/download/v1.7.11/actionlint_1.7.11_linux_amd64.tar.gz | tar xz
sudo mv actionlint /usr/local/bin/
- name: Run actionlint
run: actionlint

View File

@@ -1,39 +0,0 @@
name: pytest
on:
push:
pull_request:
jobs:
pytest:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: ${{ matrix.python-version }}
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y p7zip-full transmission-cli
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install project dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run tests
env:
HATE_CRACK_RUN_E2E: "0"
HATE_CRACK_RUN_DOCKER_TESTS: "0"
HATE_CRACK_RUN_LIVE_TESTS: "0"
HATE_CRACK_SKIP_INIT: "1"
run: .venv/bin/python -m pytest

View File

@@ -1,28 +0,0 @@
name: ruff
on:
push:
pull_request:
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.13"
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install dev dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run ruff
run: .venv/bin/ruff check hate_crack

View File

@@ -1,28 +0,0 @@
name: ty
on:
push:
pull_request:
jobs:
ty:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.13"
- name: Install uv
run: python -m pip install --upgrade pip uv==0.9.28
- name: Install dev dependencies
run: |
uv venv .venv
uv pip install --python .venv/bin/python ".[dev]"
- name: Run ty
run: .venv/bin/ty check hate_crack

View File

@@ -1,69 +0,0 @@
name: version-bump
on:
pull_request:
types: [closed]
branches: [main]
permissions:
contents: write
jobs:
bump:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0
- name: Determine version bump type
id: bump-type
env:
BRANCH: ${{ github.head_ref }}
TITLE: ${{ github.event.pull_request.title }}
run: |
# Feature branches (feat/) bump minor, everything else bumps patch
if echo "$BRANCH" | grep -qiE '^feat/'; then
echo "type=minor" >> "$GITHUB_OUTPUT"
elif echo "$TITLE" | grep -qiE '^feat'; then
echo "type=minor" >> "$GITHUB_OUTPUT"
else
echo "type=patch" >> "$GITHUB_OUTPUT"
fi
echo "Bump type: $(grep type "$GITHUB_OUTPUT" | cut -d= -f2) (branch: $BRANCH)"
- name: Bump version
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
BUMP_TYPE="${{ steps.bump-type.outputs.type }}"
latest=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+' | head -1)
if [ -z "$latest" ]; then
echo "No version tag found, starting at v0.0.1"
next="v0.0.1"
else
version="${latest#v}"
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=$(echo "$version" | cut -d. -f3)
patch=${patch:-0}
if [ "$BUMP_TYPE" = "minor" ]; then
next="v${major}.$((minor + 1)).0"
else
next="v${major}.${minor}.$((patch + 1))"
fi
fi
echo "Tagging $next (previous: ${latest:-none}, bump: $BUMP_TYPE)"
git tag -a "$next" -m "Release $next"
git push origin "$next"
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
latest=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+' | head -1)
gh release create "$latest" --title "$latest" --notes "Release $latest" --latest

View File

@@ -35,7 +35,7 @@ uv run ruff format hate_crack
make coverage make coverage
``` ```
**Test environment variables**: `HATE_CRACK_SKIP_INIT=1` skips binary/config validation (essential for CI and worktrees). `HASHMOB_TEST_REAL=1`, `HASHVIEW_TEST_REAL=1`, `WEAKPASS_TEST_REAL=1` enable live API tests. **Test environment variables**: `HATE_CRACK_SKIP_INIT=1` skips binary/config validation (essential for worktrees without hashcat-utils). `HASHMOB_TEST_REAL=1`, `HASHVIEW_TEST_REAL=1`, `WEAKPASS_TEST_REAL=1` enable live API tests.
## Git Hooks ## Git Hooks
@@ -165,5 +165,4 @@ Binaries are verified at startup via `ensure_binary(path, build_dir, name)`. Non
- Menu option tests in `test_ui_menu_options.py` use monkeypatching against `CLI_MODULE` (loaded from `hate_crack.py`) - Menu option tests in `test_ui_menu_options.py` use monkeypatching against `CLI_MODULE` (loaded from `hate_crack.py`)
- API tests mock `requests` responses; most are offline-first - API tests mock `requests` responses; most are offline-first
- conftest.py provides `hc_module` fixture via `load_hate_crack_module()` which dynamically imports root `hate_crack.py` with SKIP_INIT enabled - conftest.py provides `hc_module` fixture via `load_hate_crack_module()` which dynamically imports root `hate_crack.py` with SKIP_INIT enabled
- Python 3.9-3.14 supported in CI (requires-python >=3.13 in pyproject.toml but CI tests older versions)
- E2E tests (`test_e2e_local_install.py`, `test_docker_script_install.py`) are opt-in via `HATE_CRACK_RUN_E2E=1` and `HATE_CRACK_RUN_DOCKER_TESTS=1` - E2E tests (`test_e2e_local_install.py`, `test_docker_script_install.py`) are opt-in via `HATE_CRACK_RUN_E2E=1` and `HATE_CRACK_RUN_DOCKER_TESTS=1`

View File

@@ -7,16 +7,6 @@
\/ \/ \/_____/ \/ \/ \/ \/ \/ \/ \/_____/ \/ \/ \/ \/
``` ```
## Status
**Code Quality & Testing:**
[![ruff](https://github.com/trustedsec/hate_crack/actions/workflows/ruff.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/ruff.yml)
[![ty](https://github.com/trustedsec/hate_crack/actions/workflows/ty.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/ty.yml)
[![pytest](https://github.com/trustedsec/hate_crack/actions/workflows/pytest.yml/badge.svg)](https://github.com/trustedsec/hate_crack/actions/workflows/pytest.yml)
The pytest workflow tests across Python 3.9-3.14 via a matrix build.
## Installation ## Installation
### 1. Install hashcat (Optional) ### 1. Install hashcat (Optional)
@@ -267,33 +257,6 @@ Install the project with optional dev dependencies (includes linters and testing
make dev-install make dev-install
``` ```
### Continuous Integration
The project uses GitHub Actions to automatically run quality checks on every push and pull request.
**Checks that run on each commit:**
1. **Linting (Ruff)** - Code style and quality validation
-**PASS**: Code follows style rules and best practices
-**FAIL**: Code has style violations or quality issues
- Run locally: `make ruff`
2. **Type Checking (ty)** - Static type analysis
-**PASS**: No type errors detected
-**FAIL**: Type mismatches or missing annotations found
- Run locally: `make ty`
3. **Testing (Multi-Version)** - Tests across Python 3.9 through 3.14
-**PASS**: All tests pass on all supported Python versions
- ⚠️ **PARTIAL**: Tests pass on some versions but fail on others
-**FAIL**: Tests fail on one or more Python versions
- Run locally: `make test`
**View CI/CD Status:**
- Click the badge above to see the full test results
- Each workflow shows which Python version(s) failed or passed
- Details are available in the Actions tab
### Running Linters and Type Checks ### Running Linters and Type Checks
Before pushing changes, run these checks locally. Use `make lint` for everything, or run individual checks: Before pushing changes, run these checks locally. Use `make lint` for everything, or run individual checks:
@@ -585,11 +548,7 @@ This test validates installation and execution within a lightweight Linux VM on
- Hashfile upload functionality - Hashfile upload functionality
- Complete job creation workflow - Complete job creation workflow
All tests use mocked API calls, so they can run without connectivity to a Hashview server. This allows tests to run in CI/CD environments (like GitHub Actions) without requiring actual API credentials. All tests use mocked API calls, so they can run without connectivity to a Hashview server.
### Continuous Integration
Tests automatically run on GitHub Actions for every push and pull request (Ubuntu, Python 3.9 through 3.14).
------------------------------------------------------------------- -------------------------------------------------------------------
@@ -791,8 +750,6 @@ Version 2.0+
- Added LLM Attack (option 15) using Ollama for AI-generated password candidates - Added LLM Attack (option 15) using Ollama for AI-generated password candidates
- Added Ollama configuration keys (ollamaModel, ollamaNumCtx) - Added Ollama configuration keys (ollamaModel, ollamaNumCtx)
- Auto-versioning via setuptools-scm from git tags - Auto-versioning via setuptools-scm from git tags
- Automatic patch version bump (v2.0.1, v2.0.2, ...) on PR merge to main
- CI test fixes across Python 3.9-3.14
Version 2.0 Version 2.0
Modularized codebase into CLI/API/attacks modules Modularized codebase into CLI/API/attacks modules

View File

@@ -128,10 +128,6 @@ The Lima test provisions a real Ubuntu 24.04 VM via [Lima](https://lima-vm.io/).
- **HTTP mocking** - API tests mock `requests` at the boundary. No real network calls in offline tests. - **HTTP mocking** - API tests mock `requests` at the boundary. No real network calls in offline tests.
- **Subprocess mocking** - Hashcat wrapper tests mock `subprocess.Popen`; no hashcat binary required. - **Subprocess mocking** - Hashcat wrapper tests mock `subprocess.Popen`; no hashcat binary required.
## CI
GitHub Actions runs the offline test suite against Python 3.9-3.14 on every push and pull request. Opt-in tests are not run in CI.
Pre-push hooks (via [prek](https://github.com/j178/prek)) run `ruff`, `ty`, and `pytest` locally before each push: Pre-push hooks (via [prek](https://github.com/j178/prek)) run `ruff`, `ty`, and `pytest` locally before each push:
```bash ```bash