The edk2toolext is published as a pypi (pip) module. The pip module is named edk2-pytool-extensions. Pypi allows for easy version management, dependency management, and sharing.
Publishing/releasing a new version is generally handled thru a server based build process but for completeness the process is documented here.
Versioning follows: aa.bb.cc and is based on tags in git
- aa == Major version. Changes don’t need to be backward compatible
- bb == Minor version. Significant new features. Backward compatibility generally maintained except when new feature is used.
- cc == Patch version. Bug fix or small optional feature. Backward compatibility maintained.
Note: If this release contains a breaking change, you may need to navigate to the Milestones page and "edit" the milestone version to roll it to the next minor / major version. If it was already done, then you don't need to do it again.
- Navigate to the Releases section on the main page of edk2-pytool-extensions
- Click
Draft a new release
at the top right of the page - Click
Choose a tag
and create the new release version (v0.21.8
,v0.22.0
, etc.) - Click
Generate release notes
- Add a new section
## Dependency Updates
- If the major / minor is rolled in this release, add a
## Integration Steps
section - Move all dependabot contributions to the
## Dependency Updates
section - Leave all "true" contributions in the
## What's Changed
section - Copy the integration steps from the pull request into the
## Integration Steps
section - Click
Publish release
These are the steps you need to do once a release is complete, to setup contributing to the next tag.
- Navigate to the Milestones section on the Pull requests page
- Click
New Milestone
and create a new tag that should be the last release with the patch version + 1 - Click
Create milestone
- Close the old milestone for the latest release tag
NOTE: Feel free to add additional sections to the release notes as necessary. The release is not immediate. A pipeline will be queued that will perform final CI checks and then release to pypi. You can monitor this pipeline HERE
NOTE: These directions assume you have already configured your workspace for developing. If not please first do that. Directions on the developing page.
-
Pass all development tests and checks.
-
Update the readme.md
Release Version History
section with info on all important changes for this version. Remove the "-dev" tag from the version about to be released. -
Get your changes into master branch (official releases should only be done from the master branch)
-
Make a git tag for the version that will be released and push tag. Tag format is v<Major>.<Minor>.<Patch>
-
Do the release process
-
Install tools
pip install --upgrade -e .[publish]
-
Build a wheel
python build --sdist --wheel
-
Confirm wheel version is aligned with git tag
ConfirmVersionAndTag.py
-
Publish the wheel/distribution to pypi
twine upload dist/*
-