Skip to content

Commit 0a29c32

Browse files
hacetinCopilot
andauthored
ci: Move PyPI publishing to internal release pipeline (#16)
* ci: move publishing to internal pipeline Keep GitHub Actions focused on cross-platform artifact builds and smoke tests, use supported runner labels, and document that PyPI publication is handled by Microsoft's internal release pipelines. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: add release policy Document the contributor release-preparation boundary and Microsoft internal publishing ownership for PyPI releases. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: add release preparation skill Guide agents through version and changelog updates while keeping tagging and publishing outside the repository workflow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: extend release preparation through tagging Require a release pull request, wait for its build checks, and obtain fresh user approval before tagging the merged main commit. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: tag the exact release merge commit Resolve the release pull request merge SHA and tag that immutable commit instead of the moving origin/main tip. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * docs: use absolute release policy link Keep the release policy link valid when the README is rendered on PyPI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * ci: run full tests on pull requests Add a PostgreSQL-backed Python 3.12 job so the PR workflow exercises the complete pytest suite in addition to packaging smoke tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 58019ec commit 0a29c32

5 files changed

Lines changed: 136 additions & 325 deletions

File tree

‎.agents/skills/pypi-publish/SKILL.md‎

Lines changed: 0 additions & 208 deletions
This file was deleted.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
name: release-preparation
3+
description: Preparing duroxide-python release pull requests. Use when bumping the package version, updating release notes, or preparing a new PyPI release.
4+
---
5+
6+
# Release Preparation
7+
8+
This skill prepares the repository changes for a release. Publishing is handled
9+
by Microsoft's internal release infrastructure as described in
10+
`RELEASE_POLICY.md`.
11+
12+
Do not publish to PyPI, create a GitHub Release, start the internal release
13+
pipeline, or request publishing credentials.
14+
15+
## Prepare the Release
16+
17+
1. Confirm the target semantic version with the user if it was not provided.
18+
2. Set the same version in:
19+
- `pyproject.toml` under `[project]`
20+
- `Cargo.toml` under `[package]`
21+
3. Move the relevant entries from `CHANGELOG.md`'s `[Unreleased]` section into
22+
a section named for the target version and current date.
23+
4. Keep an empty `[Unreleased]` section above the new release entry.
24+
5. Update directly related documentation when the release changes documented
25+
behavior.
26+
6. Confirm `Cargo.toml` uses registry versions for `duroxide` and
27+
`duroxide-pg`, with no local path overrides or `[patch.crates-io]` section.
28+
29+
Do not invent changelog entries or include unrelated changes in the release
30+
preparation.
31+
32+
## Validate the Preparation
33+
34+
Before presenting the changes:
35+
36+
- Confirm the versions in `pyproject.toml` and `Cargo.toml` match.
37+
- Confirm the changelog version and date are correct.
38+
- Confirm the diff contains only the intended release preparation.
39+
40+
## Create the Release Pull Request
41+
42+
Commit the release preparation, push the branch, and create a pull request.
43+
Check that its `Build & Smoke` workflow passes. Do not merge the pull request
44+
on the user's behalf.
45+
46+
## Tag the Merged Release
47+
48+
After the pull request is merged:
49+
50+
1. Resolve the pull request's exact merge commit SHA from GitHub and confirm
51+
the pull request state is `MERGED`.
52+
2. Fetch `origin/main`, confirm the merge SHA is contained in it, and verify the
53+
package and changelog versions at that exact commit.
54+
3. Ask the user for explicit approval to create and push the release tag. Prior
55+
approval to prepare the release or create the pull request is not sufficient.
56+
4. Confirm the `v`-prefixed tag does not already exist locally or on `origin`.
57+
5. Create the tag on the recorded merge SHA and push it to `origin`.
58+
59+
For example, package version `0.1.29` uses tag `v0.1.29`. Treat release tags as
60+
immutable; never move or reuse an existing tag. Never substitute the current
61+
`origin/main` or `HEAD` tip for the release pull request's merge SHA.

0 commit comments

Comments
 (0)