Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions .github/workflows/publish-v0.2.0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Publish rfqdiff v0.2.0

on:
push:
branches: [main]
paths:
- ".github/workflows/publish-v0.2.0.yml"

permissions:
contents: write

jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Check out release commit
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Verify release metadata
run: |
python - <<'PY'
from pathlib import Path
import tomllib

project = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8"))["project"]
assert project["name"] == "rfqdiff", project
assert project["version"] == "0.2.0", project

changelog = Path("CHANGELOG.md").read_text(encoding="utf-8")
assert "## [0.2.0] - 2026-08-29" in changelog
assert "## [0.2.0] - Unreleased" not in changelog
PY

- name: Guard against duplicate release
env:
GH_TOKEN: ${{ github.token }}
run: |
if git rev-parse "refs/tags/v0.2.0" >/dev/null 2>&1; then
echo "v0.2.0 tag already exists" >&2
exit 1
fi
if gh release view v0.2.0 >/dev/null 2>&1; then
echo "v0.2.0 release already exists" >&2
exit 1
fi

- name: Run release tests
run: |
python -m pip install --upgrade pip build twine
python -m pip install -e .
python -m unittest discover -s tests -v
python -m build
python -m twine check dist/*

- name: Create annotated release tag
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag -a v0.2.0 "$GITHUB_SHA" -m "rfqdiff v0.2.0"
git push origin refs/tags/v0.2.0

- name: Prepare release notes
run: |
awk '
/^## \[0\.2\.0\]/ {capture=1; next}
/^## \[/ && capture {exit}
capture {print}
' CHANGELOG.md > "$RUNNER_TEMP/release-notes.md"
test -s "$RUNNER_TEMP/release-notes.md"

- name: Publish GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create v0.2.0 \
dist/* \
--title "rfqdiff v0.2.0" \
--notes-file "$RUNNER_TEMP/release-notes.md" \
--verify-tag
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

All notable changes to `rfqdiff` are documented here.

## [0.2.0] - Unreleased
## [0.2.0] - 2026-08-29

Release hardening is in progress. The package metadata and machine-readable contract are on the v0.2 line; the latest published GitHub Release is still v0.1.0 until the v0.2.0 release is created.
The v0.2 line completes the original productization roadmap and release-hardening work for transparent, auditable commercial quotation comparison.

### Added

Expand All @@ -20,6 +20,8 @@ Release hardening is in progress. The package metadata and machine-readable cont
- Public Python helpers for quotation loading, weight validation and report export.
- Test coverage across Python 3.11, 3.12 and 3.13.
- Wheel/source-distribution build validation and installed-package smoke tests in CI.
- Sanitized industrial golden-pilot coverage for the complete quotation decision flow.
- Downstream compatibility verification with `supplier-scorecard` and the multi-tool Phase 2 procurement pilot.

### Changed

Expand Down
Loading