File: conda-release.md

package info (click to toggle)
python-azure 20260303%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 800,060 kB
  • sloc: python: 6,612,368; ansic: 804; javascript: 287; sh: 204; makefile: 198; xml: 109
file content (65 lines) | stat: -rw-r--r-- 3,969 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Conda Release Process

Azure SDK for Python ships new releases to Conda on a **quarterly cadence** (March 1, June 1, September 1, December 1). Two pipelines work together to make this happen:

1. **Conda Update Pipeline** — opens a PR with updated Conda recipes, release logs, and yml files needed for building artifacts.
2. **Conda Build/Release Pipeline** — builds the conda packages and publishes them to Anaconda.

## Release Steps

This section covers instructions for managing a quarterly conda release, which require a few manual steps.

### Prerequisites
- Create an account on https://anaconda.org/
- Contact Steve Dower to join the AzureSDK group on https://anaconda.org/microsoft

### Automated PR Creation

The **[Conda Update Pipeline](https://dev.azure.com/azure-sdk/internal/_build?definitionId=8044&_a=summary)**  (`conda-update-pipeline.yml`) runs automatically about one week before each quarterly release date. It:

- Detects which packages have new GA versions since the last conda release, using the [Python Packages CSV](https://github.com/Azure/azure-sdk/blob/main/_data/releases/latest/python-packages.csv) as the source of truth.
- Updates package versions across the repo's conda configuration files.
- Opens a PR on `main` with all the necessary changes.

You can also trigger it manually from [Azure DevOps](https://dev.azure.com/azure-sdk/internal/_build?definitionId=8044&_a=summary) if needed.

#### Dry Run

The update pipeline has a **Dry Run** option. When enabled, it runs the update script and shows what would change, but skips opening the PR.

### What the PR Contains

The auto-generated PR includes:

- **Version bumps** for packages that have released new GA versions since the last conda release.
- **New package entries** for any GA packages that weren't previously included in conda.
- **Updated release logs** (`conda/conda-releaselogs/`) documenting which package versions are in this release.
- **New conda recipes** (`conda/conda-recipes/<package>/meta.yaml`) for brand-new data plane packages.

### Review, Approve, and Cleanup (manual)

1. **Review the PR.** Check the report in the pipeline output for any packages that encountered unexpected behavior and may need manual fixes.

2. **Handle new data plane packages** (if any are listed in the pipeline output):
   - Submit the [Conda placeholder form](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR180k2XpSUFBtXHTh8-jMUlUNlA1MFpZOVhZME1aNU1EU1Y3SjZRU0JNRC4u) to create a private dummy library on Conda for **each new data plane** package (group name AzureSdk). 
      - ⚠️**This must be done before uploading to Conda / approving the upload stage.** ⚠️
      - The form triggers a pipeline to push the placeholder library. Verify from the Anaconda portal that the placeholders have been added before proceeding.
   - Create an AKA link for new release logs at [https://aka.ms/](https://aka.ms/).

3. **Merge the PR** into `main`.

4. **Build the packages.** Merging triggers the **[Conda Build/Release Pipeline](https://dev.azure.com/azure-sdk/internal/_build?definitionId=6321)** (`conda-sdk-client.yml`) automatically. You can also run it manually and select which packages to include.

5. **Approve the release.** After a successful build, the pipeline will show a pending approval gate. Approve it to publish the packages to Anaconda (under the `Microsoft` channel).

6. **Post-release cleanup in Anaconda** (for new packages only):

   Log in to [Anaconda.org](https://anaconda.org/) and navigate to the package page:

   a. **Delete placeholder:** Go to the package settings and remove the dummy placeholder library created in step 2.

   b. **Make public:** In the package settings, change the visibility from private to public.

## Developer Guide

For more detail on the Conda release infrastructure, see [`conda-release-dev.md`](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/conda-release-dev.md).