Repository navigation
Build a stable UiPath.Workflow release from release branches with an approval STUD-68110 - #407
Open
daniel-dumitrascu wants to merge 3 commits into
Open
daniel-dumitrascu wants to merge 3 commits into
daniel-dumitrascu wants to merge 3 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-68110 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anches STUD-68110 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a way to build a stable
UiPath.WorkflowandUiPath.Workflow.Runtimerelease, from arelease/s<sprint>branch and only after an approval. Today onlymainbuilds without the-<build number>suffix, andmainhasn't been updated since 2022 (6.0.3). Both packages always build together, with the same version:UiPath.Workflowdepends on the exactUiPath.Workflow.Runtimeof the same build.A stable release is
6.0.0.<sprint>, e.g.6.0.0.206fromrelease/s206. Normal builds keep today's versions (6.0.0-yyyyMMdd-NN, and6.0.0onmain), andsrc/Directory.Build.propsis unchanged.Changes
azure-pipelines.yaml: a Build and publish a stable release (release/s<sprint> only) checkbox, off by default. When it's ticked, a newApproveStableReleasestage runs first andBuildAndTestdepends on it, so nothing builds until someone approves on theCoreWFStableReleaseenvironment.release/s*. On any other branch, the stage fails right away without asking for an approval.ReleaseInternalandReleasePublicare unchanged and already requiresucceeded(), so a rejected approval stops the run before anything is published..pipelines/build.yaml, only when the box is ticked:Versionfromsrc/Directory.Build.propsplus the sprint of the branch as a fourth number:6.0.0.206onrelease/s206. The branch must be exactlyrelease/s<sprint>; anything else, such asrelease/s206_staging, fails.dotnet testalso gets/p:AssemblyVersion=6.0.0.0, the assembly version a normal build ofVersion6.0.0 has. Without it, the SDK would take the four numbers of the version, and the DLLs would be6.0.0.206.stable-<version>.ReleaseInternalpushes the stable packages to UiPath-Internal, the same way it pushes every release-branch build today.Why 6.0.0.<sprint>
6.0.0.0. Studio and the Robot shipUiPath.Workflow.dllandSystem.Activities.dllas 6.0.0.0, and the Robot always runs a process with its own copy of them. A package compiled against a higher assembly version can't be loaded there. That's what happened with 6.0.1 to 6.0.3 on nuget.org, whose DLLs are 6.0.1.0 to 6.0.3.0.release/s<sprint>branch has its own number, soVersionstays 6.0.0.6.0.0-<build><6.0.0<6.0.0.206<6.0.0.207<6.0.1.One stable per release branch: a second stable run on the same branch builds the same version, and its push fails because UiPath-Internal already has it.
Required before merging: Azure DevOps environment
Create
CoreWFStableReleasein the CoreWF project. There are no environments there yet, and the pipeline preview fails with "Environment CoreWFStableRelease could not be found" until it exists. Add two checks:@aoltean16,@vuplea) or a group of your choice. A timeout of about 1 day is suggested.refs/heads/release/*, refs/tags/uipath.package-signing.*. Branch control checks every repository resource of the run. This pipeline's only other repository,templates, is pinned to auipath.package-signingtag, so that pattern has to be allowed too. With it, the branch rule is also enforced server-side.How to use it
release/s<sprint>branch fromdevelopafter this PR is merged, for examplerelease/s206. The existingrelease/s184doesn't have this change.ReleaseInternalpublishesUiPath.WorkflowandUiPath.Workflow.Runtime6.0.0.206to UiPath-Internal.Effect on normal builds
mainbuilds keep the same version and the same stages. The version script only gains the stable block, which doesn't run when the box is unticked.6.0.0-20261201-01<6.0.0.206, and a package that requires 6.0.0.206 or higher won't accept them. Consumers pin exact versions, as they have since 2022, when every build already sorted below nuget.org's 6.0.3.UiPath.Workflowstill depends on Roslyn4.13.0-3.24620.4, like every build today. NuGet reports this as warning NU5104, not as an error.Testing
develop. The only differences are thestableparameter and the stable block of the version script, which compiles toif ("False" -eq "True").ApproveStableReleasecomes first and expands to the fail-fast job, andBuildAndTestdepends on it.dotnet testhas/p:AssemblyVersion="$(AssemblyVersion)", and the version script runs the stable block.release/s206:6.0.0.206, AssemblyVersion6.0.0.0, tagstable-6.0.0.206; onrelease/s184:6.0.0.184release/s206_staging,release/s0206,release/s0,release/s,release/foo,develop,support/25.10ormain: failsdevelop,release/s206,support/25.10, a PR ormain: the same output asdevelop's script (6.0.0-20261104-01, and6.0.0onmain)UiPath.Workflow 6.0.0.206depends onUiPath.Workflow.Runtime 6.0.0.206.UiPath.Workflow.dll,System.Activities.dllandSystem.Xaml.dllhave AssemblyVersion and FileVersion 6.0.0.0, and product version6.0.0.206+<commit>.6.0.0-20261104-01, DLLs 6.0.0.0, the same as today.AssemblyVersionargument:System.Activities.dllis 6.0.0.206, which is why the pipeline passes it.release/s<sprint>run after merge.Jira
https://uipath.atlassian.net/browse/STUD-68110
🤖 Generated with Claude Code