First, ensure your code on main is ready to publish.
For management (control plane) packages, start with this page: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/mgmt/mgmt_release.md
For client (data plane) packages, ensure that:
- The version at
sdk/path-to-your-package/_version.pyhas been updated following these guidelines. - The changelog has been updated following these guidelines.
- Package README has been updated following these guidelines.
- Samples have been updated following these guidelines.
Python packages are uploaded to PyPI. Once you've uploaded to PyPI, there's no way to overwrite the package. In case of problems, you'll need to increment the version number. Be sure that before going forward your package has passed all the necessary testing.
To avoid "accidental" pushes to our target repositories, approval will be requested directly prior to the final PyPI publish. Reference this page to learn how to request access to Azure SDK DevOps for release approval.
Instead of a single central pipeline, the python SDK has moved to service directory associated build pipelines. These are driven by yml templates at the root of each service folder. Example for storage service folder.
- Begin by locating your pipeline on the
internalproject under thepythonfolder. Naming convention ispython - <servicedir>.- To release any package under the folder
sdk/core, you would queue a build against python - core pipeline.
- To release any package under the folder
- After queuing the build, a last test pass will execute prior to splitting into a release job per defined artifact.
- Click
approveonly on packages that you wish to release to pypi. Reject all others.
Validate artifacts prior to clicking approve on the release stage for the package you wish to release.
Additional Internal Wiki Walkthrough
Note: All releases to PyPI are handled through the ESRP release process. Manual uploads via
twineare no longer permitted. See ESRP Release Process for details.
Note that the unified pipeline will maintain a separate release step for each defined artifact in the Artifacts parameter in the relevant ci.yml file. Example
The name parameter is required to be the exact package name with _ in place of -. safeName must be unique.
Example Artifact List in ci.yml:
Artifacts:
- name: azure_core
safeName: azurecore
- name: azure_core_tracing_opencensus
safeName: azurecorecoretracingopencensus
Resulting Release Stages:
This means that new mgmt packages must be added to this list of artifacts manually.
