Public Access
Post-merge / detect-type (push) Failing after 9s
Post-merge / validate-commit-msg (push) Has been skipped
Post-merge / release (push) Has been skipped
Post-merge / sync-wiki (push) Has been skipped
Post-merge / vikunja (push) Has been skipped
Post-merge / configure-repo (push) Has been skipped
Post-merge / badges (push) Failing after 25s
Port core modules (config, exceptions, i18n, api_clients, gitea_cli), 14 CI scripts, 6 dev tools, 5 molecule tools, CLI entry point, workflows, Makefile, tests (784 tests, 100% coverage), and documentation from GRM. The devx package is published to the Gitea PyPI registry and consumed by GRM, infra, and other oblachno-oss projects as a pip dependency. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
132 lines
4.4 KiB
Markdown
132 lines
4.4 KiB
Markdown
# devx — Reusable Development & CI/CD Tools
|
|
|
|
A Python package providing reusable development and CI/CD automation tools for oblachno-oss projects. devx consolidates release management, PR automation, wiki sync, badge generation, translation checks, and more into a single installable package.
|
|
|
|
> An open-source project from **Oblachno** (облачно means *cloudy* in Bulgarian).
|
|
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/src/branch/master/LICENSE)
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/actions)
|
|
[](https://git.oblachno.oblachno.fyi/oblachno-oss/devx/releases)
|
|
[](https://www.python.org/downloads/)
|
|
|
|
## Installation
|
|
|
|
Install from the Gitea PyPI registry:
|
|
|
|
```bash
|
|
pip install devx --index-url https://git.oblachno.oblachno.fyi/api/packages/oblachno-oss/pypi/simple
|
|
```
|
|
|
|
Or add the registry to your `pip.conf` / `pyproject.toml` and install normally:
|
|
|
|
```bash
|
|
pip install devx
|
|
```
|
|
|
|
## Usage
|
|
|
|
### CI/CD Automation
|
|
|
|
devx provides CI/CD modules invoked via `python -m devx.ci.*`:
|
|
|
|
```bash
|
|
# Release automation (versioning, changelog, tagging)
|
|
python -m devx.ci.release
|
|
python -m devx.ci.release --dry-run
|
|
|
|
# Publish a release to the Gitea PyPI registry
|
|
python -m devx.ci.publish v1.0.0 oblachno-oss/devx
|
|
|
|
# Automated PR review
|
|
python -m devx.ci.pr_review 42 oblachno-oss/devx
|
|
|
|
# Auto-merge a PR (validates title, squash-merges)
|
|
python -m devx.ci.auto_merge feature-branch "DEVX-12: Add feature" oblachno-oss/devx 42
|
|
|
|
# Classify changes (user-facing vs workflow-only)
|
|
python -m devx.ci.classify_changes --base origin/master --head HEAD --github-output
|
|
|
|
# Sync documentation to Gitea wiki
|
|
python -m devx.ci.sync_wiki --repo oblachno-oss/devx --strict
|
|
|
|
# Generate and push quality badges
|
|
python -m devx.ci.push_badges
|
|
|
|
# Check translation completeness
|
|
python -m devx.ci.check_translations
|
|
|
|
# Documentation coverage check
|
|
python -m devx.ci.doc_coverage --fail-on-missing
|
|
|
|
# Validate a commit message
|
|
python -m devx.ci.validate_commit_msg commit-msg.txt --branch master
|
|
|
|
# Notify on CI failure (creates a Gitea issue)
|
|
python -m devx.ci.notify_failure --repo oblachno-oss/devx --run-id 123 --workflow ci --commit abc123
|
|
```
|
|
|
|
### Developer Tools
|
|
|
|
devx provides developer tooling invoked via `python -m devx.tools.*`:
|
|
|
|
```bash
|
|
# Set up a development environment (venv, deps, hooks)
|
|
python -m devx.tools.setup --bin .venv/bin
|
|
|
|
# Install CI tools (actionlint, git-cliff, act_runner, tea)
|
|
python -m devx.tools.install_tools
|
|
python -m devx.tools.install_tools --tool git-cliff --tool tea
|
|
|
|
# Check unit test speed
|
|
python -m devx.tools.check_test_speed --max-seconds 10
|
|
|
|
# Configure repository (branch protection, labels)
|
|
python -m devx.tools.configure_repo
|
|
```
|
|
|
|
### CLI
|
|
|
|
devx also provides a `devx` CLI command:
|
|
|
|
```bash
|
|
devx --help
|
|
devx --version
|
|
```
|
|
|
|
### Configuration
|
|
|
|
devx reads configuration from environment variables with `.env` file fallback:
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `DEVX_GITEA_API_URL` | `https://git.oblachno.oblachno.fyi/api/v1` | Gitea API base URL |
|
|
| `DEVX_VIKUNJA_API_URL` | `https://work.oblachno.oblachno.fyi/api/v1` | Vikunja API base URL |
|
|
| `DEVX_LANG` | `en` | Language (en, bg) |
|
|
| `REPO_TOKEN` | — | Gitea API token |
|
|
| `VIKUNJA_TOKEN` | — | Vikunja API token |
|
|
|
|
Copy `.env.example` to `.env` and fill in your tokens:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
git clone https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git
|
|
cd devx
|
|
make setup # Create venv, install deps, hooks, CI tools
|
|
make lint-all # ruff + pyright + bandit + actionlint
|
|
make pytest-cov # Unit tests with 100% coverage
|
|
```
|
|
|
|
See [AGENTS.md](AGENTS.md) for full project conventions, PR workflow, and architecture details.
|
|
|
|
## License
|
|
|
|
GPL-3.0
|