You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8d1fdf4
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: eng/pipelines/Patch-Release-README.md
+32-5Lines changed: 32 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
# Path Release Pipeline
1
+
# Patch Release Pipeline
2
2
3
3
The patch release pipeline is a pipeline designed to release a patch of updated azure-sdk-for-java Artifacts in preparation for release of the Azure Java SDK BOM (Bill of Materials).
4
4
5
5
## Prerequisites
6
6
7
-
The patch release pipeline differs from service directory pipelines in that the Artifacts list should change, every time, prior to this pipeline being run. The list of what Artifacts and external dependencies that needs updated, built, and released, to enable the BOM release, is computed by other Java scripts. The last part of this computation feeds in the computed artifacts list to the [Update-Artifacts-List-For-Patch-Release.ps1][update_for_release_script] script which, in turn, updates the [patch-release.yml][patch_release_yml] file's Artifacts and AdditionalModules lists. The updated patch-release.yml should be checked in along with the version_client.txt, pom, CHANGELOGand README updates when prepping for the patch release.
7
+
The patch release pipeline differs from service directory pipelines in that the Artifacts list should change, every time, prior to this pipeline being run. The list of what Artifacts and external dependencies that needs updated, built, and released, to enable the BOM release, is computed by other Java scripts. The last part of this computation feeds in the computed artifacts list to the [Update-Artifacts-List-For-Patch-Release.ps1][update_for_release_script] script which, in turn, updates the [patch-release.yml][patch_release_yml] file's Artifacts and AdditionalModules lists. The prepare pipeline also removes entries from `external_dependencies.txt` that are not referenced by version-update markers in any POM file. The updated patch-release.yml should be checked in along with the version_client.txt, external_dependencies.txt, pom, CHANGELOG, README, and generated `patch-changelog.md` updates when prepping for the patch release.
@@ -26,6 +26,30 @@ This is the yml file that belongs to the [java - patch-release][java_patch_relea
26
26
27
27
The [java - patch-release][java_patch_release] pipeline is manual only. There is no purpose to running this pipeline other than than to release a patch build. The pipeline will build, analyze, verify and release the set of Artifacts that are in the patch-release.yml.
28
28
29
+
After package publication succeeds, the pipeline creates a merge-back PR against
30
+
`main`. It does not merge the patch release branch. The PR contains only:
31
+
32
+
- released dependency versions promoted into `eng/versioning/version_client.txt`,
33
+
while keeping `main`'s current versions;
34
+
- the exact patch entries recorded in `patch-changelog.md`; and
If `main` already contains a newer dependency version, the merge-back keeps the
39
+
newer value. Source resets, README changes, `patch-changelog.md`, and all other
40
+
patch-branch changes are intentionally excluded.
41
+
42
+
### `patch-changelog.md`
43
+
44
+
The prepare pipeline generates `patch-changelog.md` at the repository root after
45
+
all patch artifacts have been prepared. Each entry records the artifact
46
+
coordinate, repository-relative changelog path, released patch version, and the
47
+
exact markdown block generated for that release.
48
+
49
+
The file is committed to the patch release branch so the release pipeline can
50
+
consume deterministic changelog content. It is a transient release artifact and
51
+
must not be copied or merged into `main`.
52
+
29
53
### How build works in the patch build pipeline
30
54
31
55
Normal service directory pipelines are only concerned with the set of Artifacts that live within that service directory. Any interdependencies within that service directory use current versions of each other and any dependencies outside of that service directory use the dependency versions. When a artifacts from a service directory are released, the released version becomes the new dependency version and everything that depends on it gets the updated version. This is why monthly releases have a release order. The From Source runs, which are part of every test matrix, is how we know this process works.
@@ -36,12 +60,15 @@ The patch-release pipeline utilizes the same tools that the From Source runs use
36
60
37
61
**Release verifications are done in the AnalyzeAndVerify Job.** In the patch-release pipeline, verifications normally done as part of the release task in service directories pipelines are now being done as part of the AnalyzeAndVerify job. This can be done since there's no ambiguity as to whether or not the artifacts are going to be released.
38
62
39
-
**Testing is not done in the patch-release pipeline.** Unlike service directory pipelines, there are no tests being run. We have a highly customizable test matrix which many service directories have made changes to. Because of this, it's nearly impossible to rectify a test matrix for a set of artifacts that spans the entire repository. There is a mitigation for this; as part of the preparation for patch release versions, poms, CHANGELOG and README files all need to be updated. These updates will cause each individual service directory pipeline to get run as part of the process for the update PR. In between the update PR and kicking off the patch-release pipeline, there should be no outside changes that aren't related to the aforementioned update. The matrix of FromSource and non-FromSource runs should provide enough verification. We already make the same assumptions when we release service directory, update the dependency version and then release a service directory that depends on what was previously released.
63
+
**Testing is not done in the patch-release pipeline.** Unlike service directory pipelines, there are no tests being run. We have a highly customizable test matrix which many service directories have made changes to. Because of this, it's nearly impossible to rectify a test matrix for a set of artifacts that spans the entire repository. There is a mitigation for this; as part of the preparation for patch release versions, POM, CHANGELOG, README, and patch changelog manifest files all need to be updated. These updates will cause each individual service directory pipeline to get run as part of the process for the update PR. In between the update PR and kicking off the patch-release pipeline, there should be no outside changes that aren't related to the aforementioned update. The matrix of FromSource and non-FromSource runs should provide enough verification. We already make the same assumptions when we release service directory, update the dependency version and then release a service directory that depends on what was previously released.
40
64
41
65
## Testing changes/updates to the patch-release pipeline
42
66
43
-
The easiest way to test the patch release pipeline is to use the example above which sets the Artifacts list to the
44
-
list of template libraries. After running, add the following parameter **TestPipeline**: **true**. This will allow the release of the template libraries without any version preparation, just run and release. The parameter will cause the test pipeline version code, which sets template libraries to a new beta version, based upon the buildId, for release and then auto closes the version increment PR.
67
+
The merge-back path requires a prepared patch branch containing
68
+
`patch-changelog.md`. Run the prepare pipeline with the intended test artifact
69
+
set, then run the patch release pipeline from that branch with
70
+
**TestPipeline** set to **true**. The test parameter keeps the existing
71
+
test-package behavior and automatically closes the generated merge-back PR.
0 commit comments