Standardized Django deployment pipeline with Docker, testing, and SonarQube integration
Project description
ITW Python Builder
Standardized Django deployment pipeline with Docker, testing, SonarQube integration, automatic changelog generation, and code quality enforcement.
Features
- Automated deployment with semantic versioning
- Docker/Podman-based build and push pipeline
- Automated testing with coverage
- SonarQube static code analysis
- Pylint linting with SonarQube integration
- Quality gates - deploy only when tests pass
- Automatic changelog generation from commit trailers
- Support for local and production pipelines
- Global CLI tool
- Automatic venv detection per project
Installation
pip install itw-python-builder
Install globally (outside any project venv). The itw command becomes available system-wide.
Quick Start
-
Navigate to your Django project directory (must have a
.venvorvenv): -
Initialize versioning:
itw tag-init
- Run local pipeline:
itw pipelinelocal
- Deploy to staging:
itw incrementrc
- Deploy to production:
itw incrementpatch
Available Commands
Deployment Commands
itw incrementpatch— Increment patch version and deployitw incrementminor— Increment minor version and deployitw incrementmajor— Increment major version and deployitw incrementrc— Increment release candidate (staging)itw release— Promote RC to stable release (master)
Local Development Commands
itw pipelinelocal— Run full local pipeline (lint → test → analyze → build)itw lintlocal— Run pylint with human-readable outputitw lint— Run pylint and generate SonarQube report filesitw buildlocal— Build Docker image locallyitw testlocal— Run tests locallyitw analyzelocal— Run SonarQube analysis locallyitw changelog— Generate changelog manuallyitw tag-init— Initialize version tagging
Skip Pipeline
itw incrementpatch --skip-pipeline
Virtual Environment Detection
itw is installed globally but automatically detects the project's virtual environment (.venv or venv) in the current directory. Tasks that need Python/Django dependencies (test, lint, analyze) activate the venv automatically — no need to manually activate it.
If no venv is found, those tasks will error with a clear message. Tasks that only use git (like changelog, tag-init, buildlocal) work without a venv.
Linting
The pipeline runs pylint automatically on every deployment and generates report files for SonarQube. The .pylintrc configuration is shipped with the package — no config files needed in your project.
# Review issues with human-readable output
itw lintlocal
# Generate report files for SonarQube
itw lint
Add this to your sonar-project.properties:
sonar.python.pylint.reportPaths=pylint-report.txt
Changelog Generation
Changelog entries are generated automatically on every deployment based on commit messages. To categorize a commit, add a Changelog: trailer to the commit body:
add user authentication
Changelog: added
Available categories: added, fixed, changed, deprecated, removed, security, performance, tests, docs, refactor
Commits without a trailer appear under Other Changes. The CHANGELOG.md file is committed and pushed automatically with each deployment.
Requirements
- Python 3.10+
- Podman
- Git
- SonarQube server
Configuration
Environment Variables
Add to your project .env:
SONAR_HOST_URL=https://your-sonar-server
SONAR_TOKEN=your-token
GIT_DEPTH=0
Project Files Required
- Git repository with
develop,staging, andmasterbranches VERSIONfile in project rootDockerfilesonar-project.properties
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file itw_python_builder-0.1.20.tar.gz.
File metadata
- Download URL: itw_python_builder-0.1.20.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57c40dd8d1a53e73ae8ff80d7a55a9a924f57f9684a174b2acfd834672f6ab59
|
|
| MD5 |
1c45af5280c4243e170967d5f8b4b275
|
|
| BLAKE2b-256 |
5e1c2833196ebb6823272a4f2a20de754b4229b02f7a81459a31b9b47c11021c
|
File details
Details for the file itw_python_builder-0.1.20-py3-none-any.whl.
File metadata
- Download URL: itw_python_builder-0.1.20-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99238e433e6e360b2db91351474dedfe666ea3ff0a6dc22bd1ffdf2290ec7f83
|
|
| MD5 |
9ac2329774830ec7e7c9cffcd6c973fc
|
|
| BLAKE2b-256 |
c0abd920a52324160fea955d8f278a1aaa1c5f8734c9c6824043d4c5da0b0287
|