Skip to content

Commit ead3c7e

Browse files
authored
Merge pull request #9 from frankovo/release/0.2.1
Release/0.2.1
2 parents ead9606 + 7680b55 commit ead3c7e

File tree

9 files changed

+120
-4
lines changed

9 files changed

+120
-4
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,6 @@ Thumbs.db
5353
# -----------------
5454
benchmark_results/
5555
release.sh
56+
release-tag.sh
57+
gpg-check.sh
5658
notes/

CONTRIBUTING.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,8 @@ We welcome improvements, bug fixes, and new ideas.
5252

5353
- Be respectful and constructive in discussions.
5454
- Focus on clear communication and collaborative problem‑solving.
55+
56+
## Releases
57+
58+
Releases are managed separately by the maintainer.
59+
See [RELEASE.md](./RELEASE.md) for the full release process.

MANIFEST.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
include README-pypi.md LICENSE
1+
include README-pypi.md
2+
include LICENSE
3+
include CONTRIBUTING.md
4+
include RELEASE.md
25
recursive-include src/dns_benchmark *.py
36
recursive-include docs/screenshots *.png
47
exclude sample_data/*

Makefile

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
.PHONY: install install-dev uninstall mypy black isort flake8 cov test clean cli-test
1+
.PHONY: install install-dev uninstall mypy black isort flake8 cov test clean cli-test \
2+
gpg-check release-patch release-minor release-major release-tag
23

34
# 🔧 Install package (runtime only)
45
install:
@@ -40,3 +41,25 @@ clean:
4041
cli-test:
4142
# Run only the CLI smoke tests marked with @pytest.mark.cli
4243
pytest -vv -s -m cli tests/test_cli_commands.py
44+
45+
# GPG sanity check
46+
gpg-check:
47+
./gpg-check.sh
48+
49+
# Release targets
50+
release-patch:
51+
./release.sh patch
52+
53+
release-minor:
54+
./release.sh minor
55+
56+
release-major:
57+
./release.sh major
58+
59+
# Tag after PR merge
60+
release-tag:
61+
@if [ -z "$(VERSION)" ]; then \
62+
echo "❌ Usage: make release-tag VERSION=X.Y.Z"; exit 1; \
63+
fi
64+
./release-tag.sh $(VERSION)
65+

README-pypi.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77

88
![Python Version](https://img.shields.io/badge/python-3.9%2B-blue.svg)
99
![License](https://img.shields.io/badge/license-MIT-green.svg)
10+
![Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen.svg)
11+
12+
[![Downloads](https://img.shields.io/pypi/dm/dns-benchmark-tool.svg)](https://pypi.org/project/dns-benchmark-tool/)
13+
[![GitHub stars](https://img.shields.io/github/stars/frankovo/dns-benchmark-tool.svg?style=social&label=Star)](https://github.com/frankovo/dns-benchmark-tool/stargazers)
14+
[![GitHub forks](https://img.shields.io/github/forks/frankovo/dns-benchmark-tool.svg?style=social&label=Fork)](https://github.com/frankovo/dns-benchmark-tool/network/members)
15+
[![Issues](https://img.shields.io/github/issues/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/issues)
16+
[![Last commit](https://img.shields.io/github/last-commit/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/commits/main)
17+
[![Main branch protected](https://img.shields.io/badge/branch%20protection-main%20✅-brightgreen)](./RELEASE.md)
1018

1119
Benchmark DNS resolvers across domains and record types.
1220
Generates analytics and exports to CSV, Excel, PDF, and JSON.

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
![License](https://img.shields.io/badge/license-MIT-green.svg)
1010
![Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen.svg)
1111

12+
[![Downloads](https://img.shields.io/pypi/dm/dns-benchmark-tool.svg)](https://pypi.org/project/dns-benchmark-tool/)
13+
[![GitHub stars](https://img.shields.io/github/stars/frankovo/dns-benchmark-tool.svg?style=social&label=Star)](https://github.com/frankovo/dns-benchmark-tool/stargazers)
14+
[![GitHub forks](https://img.shields.io/github/forks/frankovo/dns-benchmark-tool.svg?style=social&label=Fork)](https://github.com/frankovo/dns-benchmark-tool/network/members)
15+
[![Issues](https://img.shields.io/github/issues/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/issues)
16+
[![Last commit](https://img.shields.io/github/last-commit/frankovo/dns-benchmark-tool.svg)](https://github.com/frankovo/dns-benchmark-tool/commits/main)
17+
[![Main branch protected](https://img.shields.io/badge/branch%20protection-main%20✅-brightgreen)](./RELEASE.md)
18+
1219
A powerful open-source CLI tool to benchmark DNS resolvers across domains and record types.
1320
Generates detailed analytics, exports to CSV/Excel/PDF/JSON, and supports automation in CI/CD.
1421

RELEASE.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Release Process
2+
3+
This document describes how releases are managed for `dns-benchmark-tool`.
4+
5+
---
6+
7+
## Workflow Overview
8+
9+
1. **Create a release branch**
10+
- From `main`, create a branch named `release/x.y.z`.
11+
- Example: `release/0.2.1`.
12+
13+
2. **Make changes**
14+
- Update `pyproject.toml` and `src/dns_benchmark/__init__.py` with the new version.
15+
- Update changelog or documentation as needed.
16+
- Commit changes with **signed commits**.
17+
18+
3. **Push the branch**
19+
20+
```bash
21+
git push origin release/x.y.z
22+
```
23+
24+
4. **Open a Pull Request**
25+
- Target branch: `main`.
26+
- CI must pass before merge.
27+
- Branch protection rules apply (signed commits, tests, etc.).
28+
29+
5. **Merge the PR**
30+
- Once stable, merge `release/x.y.z` into `main`.
31+
- At this point, `main` reflects the new version.
32+
33+
6. **Tag the release**
34+
35+
- After merging, create and push a tag on `main`:
36+
37+
```bash
38+
git checkout main
39+
git pull origin main
40+
git tag vX.Y.Z
41+
git push origin vX.Y.Z
42+
```
43+
44+
- Example: `v0.2.1`.
45+
46+
7. **Publish**
47+
- GitHub Actions sees the tag and publishes the package to PyPI.
48+
- Verify the new version is available on PyPI.
49+
50+
---
51+
52+
## Notes
53+
54+
- **Do not push tags from release branches.** Tags should only be created on `main` after the PR is merged.
55+
- **One tag per version.** PyPI does not allow re‑uploads of the same version.
56+
- **Iterate freely** on the release branch until you are satisfied, then merge and tag.
57+
- **Only the maintainer** (with write access) should create and push release tags.
58+
59+
---
60+
61+
## Hotfixes
62+
63+
For urgent bug fixes:
64+
65+
- Create a new branch from `main` named `release/x.y.z` (next patch version).
66+
- Apply the fix, commit, and push.
67+
- Open a PR into `main`, merge once CI passes.
68+
- Tag the merge commit (`vX.Y.Z`) to publish the hotfix.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "dns-benchmark-tool"
7-
version = "0.2.0"
7+
version = "0.2.1"
88
description = "Benchmark DNS resolvers across domains and record types with analytics and reports (CSV, Excel, PDF, JSON)."
99
readme = "README-pypi.md"
1010
authors = [

src/dns_benchmark/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.2.0"
1+
__version__ = "0.2.1"

0 commit comments

Comments
 (0)