Skip to content

Commit 521ac22

Browse files
author
Abel Milash
committed
Option C: bulk fetch all picklists in single API call
1 parent 203af1e commit 521ac22

7 files changed

Lines changed: 2038 additions & 596 deletions

File tree

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# Dataverse Python SDK Release Guide
2+
3+
Step-by-step release process for the PowerPlatform Dataverse Client Python SDK.
4+
5+
**SDK Repository**: [microsoft/PowerPlatform-DataverseClient-Python](https://github.com/microsoft/PowerPlatform-DataverseClient-Python)
6+
**PyPI Package**: [PowerPlatform-Dataverse-Client](https://pypi.org/project/PowerPlatform-Dataverse-Client/)
7+
8+
---
9+
10+
## Prerequisites
11+
12+
- Write access to the GitHub repository (microsoft/PowerPlatform-DataverseClient-Python)
13+
- Access to the Azure DevOps CI/CD pipeline for PyPI publishing: https://dev.azure.com/dynamicscrm/OneCRM/_build?definitionId=29949
14+
- _(Optional)_ **GitHub CLI (`gh`)** — enables automated PR creation and GitHub releases from the terminal.
15+
- Install: `winget install GitHub.cli`, then `gh auth login`.
16+
17+
---
18+
19+
## Release Checklist
20+
21+
### Step 1: Identify Changes Since Last Release
22+
23+
1. Find the last release version and date in CHANGELOG.md (the current dev version is in `pyproject.toml` under `version`)
24+
2. List merged PRs since the last release:
25+
- GitHub UI: https://github.com/microsoft/PowerPlatform-DataverseClient-Python/pulls?q=is%3Apr+is%3Amerged
26+
- Or via git: `git log --oneline --since="<last-release-date>"`
27+
3. For each PR, read the full description to understand the user-facing impact
28+
29+
### Step 2: Update CHANGELOG.md
30+
31+
1. Create a branch: `git checkout -b release/v<version>` (e.g., `release/v0.1.0b6`)
32+
2. Add a new section at the top of CHANGELOG.md (below the header), using today's date:
33+
34+
```markdown
35+
## [X.Y.Z] - YYYY-MM-DD
36+
37+
### Added
38+
- Description of new feature (#PR_NUMBER)
39+
40+
### Fixed
41+
- Description of bug fix (#PR_NUMBER)
42+
```
43+
44+
3. Add a version comparison link at the bottom of CHANGELOG.md:
45+
46+
```markdown
47+
[X.Y.Z]: https://github.com/microsoft/PowerPlatform-DataverseClient-Python/compare/vPREVIOUS...vX.Y.Z
48+
```
49+
50+
**Changelog writing rules:**
51+
52+
- Focus on **why it matters to users**, not implementation details
53+
- Do NOT reference internal function names or implementation choices
54+
- DO describe the user-visible behavior change or new capability
55+
- Include PR numbers for reference: `(#123)`
56+
57+
**Category headings:**
58+
- New features → **Added**
59+
- Changes to existing functionality → **Changed**
60+
- Soon-to-be removed features → **Deprecated**
61+
- Removed features → **Removed**
62+
- Bug fixes → **Fixed**
63+
- Security fixes → **Security**
64+
65+
**What to exclude:**
66+
- Internal refactoring (unless it affects performance/behavior)
67+
- Test-only changes
68+
- CI/CD changes
69+
- Documentation-only updates
70+
71+
### Step 3: Create PR for Changelog
72+
73+
1. Commit: `git add CHANGELOG.md && git commit -m "Update CHANGELOG.md for v<version> release"`
74+
2. Push: `git push -u origin release/v<version>`
75+
3. Create a PR on GitHub targeting `main`:
76+
- **With `gh` CLI:** `gh pr create --base main --title "Update CHANGELOG.md for v<version> release" --body "Release changelog for v<version>"`
77+
4. Get the PR reviewed and merged
78+
79+
### Step 4: Create Git Tag
80+
81+
After the changelog PR is merged:
82+
83+
1. Pull latest main:
84+
```bash
85+
git switch main
86+
git pull origin main
87+
```
88+
89+
2. Create and push the tag:
90+
```bash
91+
git tag -a v<version> -m "Release v<version>"
92+
git push origin v<version>
93+
```
94+
95+
> **Important:** The tag must be on the `main` commit that includes the changelog update.
96+
97+
### Step 5: Publish to PyPI
98+
99+
Trigger the Azure DevOps CI/CD pipeline:
100+
- Pipeline: https://dev.azure.com/dynamicscrm/OneCRM/_build?definitionId=29949
101+
102+
**Runtime variables (set when queuing the pipeline):**
103+
104+
| Variable | Description |
105+
|---|---|
106+
| `PushToPyPI` | Set to `true` to publish to PyPI. If not set, the pipeline builds, tests, and produces artifacts without publishing. |
107+
| `PackageVersion` | The version string for the release (e.g., `0.1.0b7`). Leave empty to use the version from `pyproject.toml`. |
108+
109+
**Recommendation:** First run the pipeline **without** setting `PushToPyPI` to `true`. This validates the build, tests, and packaging. Once the dry run succeeds, queue again with `PushToPyPI` set to `true` to publish.
110+
111+
Verify the package appears on PyPI: https://pypi.org/project/PowerPlatform-Dataverse-Client/
112+
113+
### Step 6: Create GitHub Release
114+
115+
**Before writing release notes:** Review previous releases at https://github.com/microsoft/PowerPlatform-DataverseClient-Python/releases to match the tone, detail level, and formatting conventions.
116+
117+
- **With `gh` CLI:** Extract the release notes from CHANGELOG.md (the Added/Fixed/Changed sections for this version) into a temp file, then run:
118+
```bash
119+
gh release create v<version> --title "v<version>" --notes-file <notes-file> --prerelease
120+
```
121+
Omit `--prerelease` if the version does **not** contain `a`, `b`, or `rc`.
122+
- **Without `gh` CLI:**
123+
1. Go to: https://github.com/microsoft/PowerPlatform-DataverseClient-Python/releases/new
124+
2. Select the tag: `v<version>`
125+
3. Title: `v<version>`
126+
4. Copy release notes from CHANGELOG.md
127+
5. Check **"Set as a pre-release"** if the version contains `a`, `b`, or `rc` (alpha/beta/release candidate)
128+
6. Click **Publish release**
129+
130+
### Step 7: Post-Release Version Bump
131+
132+
Immediately after the release, bump the version for the next development cycle:
133+
134+
1. Create a branch: `git checkout -b post-release/bump-<next-version>`
135+
2. Update `version` in `pyproject.toml` to the next beta (e.g., `0.1.0b6``0.1.0b7`)
136+
3. Stage and commit:
137+
```bash
138+
git add pyproject.toml
139+
git commit -m "Bump version to <next-version> for next development cycle"
140+
```
141+
4. Push: `git push -u origin post-release/bump-<next-version>`
142+
5. Create a PR on GitHub and merge it:
143+
- **With `gh` CLI:** `gh pr create --base main --title "Bump version to <next-version> for next development cycle" --body "Post-release version bump"`
144+
145+
---
146+
147+
## Version Numbering
148+
149+
This project uses Semantic Versioning with PEP 440 pre-release identifiers:
150+
- Beta releases: `0.1.0b1`, `0.1.0b2`, `0.1.0b3`, ...
151+
- The version in `pyproject.toml` on `main` should always be one ahead of the latest published release
152+
153+
---
154+
155+
## Key Links
156+
157+
| Resource | URL |
158+
|---|---|
159+
| Repository | https://github.com/microsoft/PowerPlatform-DataverseClient-Python |
160+
| PyPI Package | https://pypi.org/project/PowerPlatform-Dataverse-Client/ |
161+
| CI/CD Pipeline | https://dev.azure.com/dynamicscrm/OneCRM/_build?definitionId=29949 |
162+
| Releases | https://github.com/microsoft/PowerPlatform-DataverseClient-Python/releases |
163+
| Contributing Guide | https://github.com/microsoft/PowerPlatform-DataverseClient-Python/blob/main/CONTRIBUTING.md |

0 commit comments

Comments
 (0)