Need to implement the Rollback in release pipeline in Azure Devops - azure

I made one release pipeline with one stage for deployment and second stage of Selenium test case as per the image.
Please tell me how can i revert the deployment when Selenium test case got failed. Means when my second stage fails my first task also should be reverted. Please help.

You can run the previous successful deployment if something fails. Will that solve your case?
Below you can see an example of a post deployment condition and a rerun of the last successful release.

Please tell me how can i revert the deployment when Selenium test case got failed.
The most effective way is that you could manually choose the previous record of successful release, then you could use the "Redeploy" option to deploy the stage (dev stage) again.
Additional info:
I set the "Auto-redeploy trigger" (Deployment to this stage fails) in Stage 2. When the stage 2 is failed, it only re-deploys the previous successful Stage 2. The Stage 1 will not roll back.
Hope this helps.

Related

How to fail the Azure pipeline if any errors are reported in the task

Pipeline is not failing even though the application errors are reported in one of the task. For that i have used failonstderr: true in the pipeline and pipeline detects the errors and start failing. But the problem is failing the pipeline for warnings also. But i am looking for the pipeline should fail when errors are reportedenter image description here not on warnings. Is there any alternate solution?
You could set the control option of each task by disable Continue on error and Run this task Only when all previous tasks have succeeded. Then, any errors are reported in the task, pipeline will failed. Please refer to Task control options for more information.
As for YAML pipeline, please make sure you have add continueOnError: false to you task. Besides, make sure you haven't add condition: expression to each task. Then, it default to Only when all previous task have succeeded.

Azure Release Pipeline after Build specific stage

We have a Release Pipeline that is being trigger after a build pipeline is succeded.
We have been updating the build pipeline and adding additional stages to it that does not affect the Release process. The problem is, that sometimes the additional stages are failing, causing the Release pipeline not to be trigger, but the original initial stage is succeded and the release could still be done.
Is there a way to set up the Release Pipeline to trigger after the Build Initial Stage succeded? I can only find the build, but would be ideal to set the stage too.
You can use for instance extension Trigger Azure DevOps Pipeline.
You can third stage
initial stage
additional stage - this should go when initial stage succedded
trigger stage - this should go when additional stage failed

Is there any way to rollback devops pipeline on last successful?

I am trying to rollback in release pipeline when the latest release gets fail it will revert at last successful. I added a PowerShell task which only runs when previous tasks have failed and script which is triggering last successful but the problem is it start redeploying stages randomly not sequentially.## Heading ##
In my scenario I have 3 stages, at the end of each stage, I have added a PowerShell task that will trigger only when the previous task has failed and wrote a script accordingly to trigger last successful release. so it will trigger all the stages in the last release because I haven't got any API or command to trigger release by id. I have an API which triggers only stages. All the stages are queueing sequentially but running randomly.
enter image description here
Since you are using the Release Pipeline, I suggest that you could use Auto-redeploy trigger option for each stage.
When the stage fails, it will re-deploy the last successful release of the current stage.
For example:
Set Auto-redeploy trigger option for stage 2 -> Stage2 fail -> Auto redeploy the last successful Stage 2
Update:
From you requirement, you could try to use the Release Orchestratortask from Release Orchestrator extension. This task could be used to manage the release.
Here is the example:
You could use this task to replace the powershell task. This task supports to select the re-run release name and the target stages.
It can also be sorted according to the input stage order.
Note: you also need to set Maximum number of parallel deployments as 2 for each stage -> Pre-deployment conditions-> Deployment queue settings.

How to test a successful release prior to allowing PR to complete?

I know that build validation policy can be set on branch and it will trigger a PR build that will ensure that it succeeds.
Is there any way to test a successful release prior to allowing PR to complete? There is the following status policy option - but it shows an empty dropdown.
If you are running a classic pipeline there are a few steps that are required, as documented in the Microsoft docs: Deploy pull request builds
In short: You are on the right track with the status policy. It could be empty because the release has not yet run, or it has run but not with the correct setting.
You need to toggle Pull Request Deployment on a stage in your release pipeline, for example on the Dev stage. The picture is taken from the above mentioned docs.
After you've enabled that toggle, you should run the release once and afterwards, the status should appear as an option in your policies, which you can then set as a required condition.
For a complete step by step, you can follow the above mentioned Microsoft documentation.

Is there a way I can re-initiate failed tasks or agent phase in a TFS release?

When a certain task fails in an environment I had to always redeploy the whole environment after fixing the issue. Is there a way I could re-initiate only the failed task or just the phase where the task is failed.
For example: In the screenshot below the last task "Run script *" under "Agent Phase" has failed. I had to re-initiate the whole environment deployment to re-execute the last task which will also executes "Run on Agent" phase as well. This is painful during production release pipeline.
Recently the retryCountOnTaskFailure argument was introduced:
- task: <name of task>
retryCountOnTaskFailure: <max number of retries>
...
Understand your concern. However, this is not supported at present with on-premises TFS Server 2018.
When you're doing a PROD drop and a step near the end randomly fails, then you can't just rerun from that failed step. Had to re-deploy.
To re-run failed task/step:
Actually, there is a related user voice.
Rerun failed build task/step
https://developercommunity.visualstudio.com/idea/365697/rerun-failed-build-taskstep.html
Multiple people commented and echoed. You could monitor the status of above user voice.
To re-run failed agent phase/ agent job
Also a related user voice:
Retry failed run with multi-stage pipelines
https://developercommunity.visualstudio.com/idea/598906/retry-failed-run-with-multi-stage-pipelines.html
However, this is has been released with Azure DevOps Service now:
https://learn.microsoft.com/en-us/azure/devops/release-notes/2019/sprint-158-update#retry-failed-stages Still not available with Azure DevOps/TFS on-premises. Generally, it won't be long until it's released with latest Azure DevOps version.
With all that said, I think you still have to re-deploy on TFS 2018 at present. Sorry for any inconvenience.
In TFS 2018 you don't have this option.
However, in Azure Pipelines you have the option to re-run failed jobs, so I guess in the next release of Azure DevOps Server (TFS) this feature will be.
You can change the retries from

Resources