My team are using the VSTS Build & Release mechanism, combined with pull request branch safety settings, so that code can only be merged in when a pull request is completed.
We are experiencing something odd though, in that when a pull-request is created (and a build is spawned to prove the commit) - the completion of this build triggered by the pull request also indirectly triggers a release because we have a release trigger setup.
This in itself is probably ok, but then what also happens is upon 'completing' the pull request, another build & release cycle takes place!
Is there a way of making VSTS release triggers only kick in when the pull request is completed and merged into the release branch?
Thank you!
We can specify a branch filter on the release trigger such that only builds of master will trigger a release. PR validation builds are done in a different branch. When approved and the branch is merged into master, that's the build you want triggering a release.
Annoyingly, they keep moving things around. At the time of this writing, when editing a release, under Pipeline, under Artifacts, on the artifact, there is a circle with a lightning bolt inside, tooltip says "Continuous deployment trigger" - click that. On the right, if the trigger is enabled, you'll see "Build branch filters". Click "+ Add" and select the master branch. Save the Release definition.
As for the build doing different things, we can now set conditions on tasks such that you can have a task only run on PR validation builds or only on master builds.
https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/conditions