SteelWorks uses GitHub Actions for automated code quality enforcement and Docker build validation. Every pull request and push toDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/kishnahai0806/SteelWorks/llms.txt
Use this file to discover all available pages before exploring further.
main runs through a two-job pipeline that gates the Docker build behind a full pre-commit quality check, ensuring that linting, type errors, and failing unit tests are caught before a broken image is ever produced.
Workflow overview
The CI workflow is defined in.github/workflows/ci.yml and contains two jobs:
| Job | Runs on | Depends on | Purpose |
|---|---|---|---|
quality | ubuntu-latest | — | Runs all pre-commit hooks (Ruff lint, Ruff format, mypy, unit tests, license check) on Python 3.13 |
docker-build | ubuntu-latest | quality | Builds the Docker image with Docker Buildx; only executes after quality passes |
Triggers
The workflow fires on:- Pull requests to
main— event typesopened,synchronize, andreopened - Pushes to
main
Permissions
The workflow declares minimal permissions:CI workflow YAML
Pre-commit hooks
The.pre-commit-config.yaml file defines four hooks that run in the quality job and are also designed to run locally before every commit:
| Hook | Source | What it does |
|---|---|---|
ruff | astral-sh/ruff-pre-commit v0.15.2 | Lints app/, tests/, and scripts/ with auto-fix |
ruff-format | astral-sh/ruff-pre-commit v0.15.2 | Formats app/, tests/, and scripts/ |
mypy | pre-commit/mirrors-mypy v1.19.1 | Type-checks app/ and tests/ (filenames not passed individually; runs project-wide) |
unit-tests | local | Runs python -m pytest -q tests/unit — blocks commit if any unit test fails |
license-check-gpl | local | Runs scripts/check_gpl_licenses.py — blocks commit if any runtime dependency carries a GPL/AGPL/LGPL license |
requirements-dev.txt file pins all the tools used in CI:
Deploy workflow
A separate workflow,.github/workflows/deploy.yml, handles deployment to Render. It is not triggered by a push directly — instead it listens for a completed CI workflow run and fires a Render deploy hook only when:
- The trigger is
workflow_dispatch(manual), or - The completed CI run was a
pushevent tomainthat ended withsuccess
RENDER_DEPLOY_HOOK_URL secret must be configured in the repository’s GitHub Actions secrets. This means a deploy to production only happens automatically when a CI-passing push lands on main, keeping the deployment gate tied directly to code quality.