I am running a multi stage pipeline and need to run a production build pipeline after the success of pre production release pipeline so is there any way around to check the status of the release pipeline using RestAPI in azure Devops and get this response in build pipeline.
To trigger the production stage of build pipeline based on the results of the pre production release pipeline
I think you don't need to use REST API for this, you can use the result of your pipeline as a trigger for your second pipeline:
Configure pipeline resource triggers
Our repository contains a couple of CI pipelines for some services as a mono-repo. These pipelines deploy images to a docker image registry.
I want to run a separate pipeline to do the CD part, which pulls in the images from the registry and deploys them in a cluster. Is this dependency amongst different yaml pipelines possible in Azure DevOps?
In essense:
Let's assume we have Pipelines S1, S2, S3 for services.
I want to run Pipeline 'Deploy' after all three pipelines have finished.
If I'm understanding the question correctly, yes you can. But I don't think it's possible to trigger 1 pipeline when 3 others are completed.
You can trigger them 1 after another though, see the Microsoft Docs for reference: Trigger one pipeline after another
I would like to have a manual stage in a build pipeline that triggers a release pipeline and passes build number. Is it possible to accomplish this without having to add extensions from marketplace? I am pretty new to Azure, our organization just switched from Bamboo, so I am still getting acquainted with Azure DevOps Thanks!
We can’t directly call the variable of the build pipeline in the release pipeline, as a workaround, we can store the variable to artifact->publish artifact->download this artifact in the release pipeline, then we can use the build variable in the release pipeline.
I have a use case where I need to integrate ServiceNow change management as a pre-deployment stage gate. I am able to do it with vNext type pipelines but not multi-stage yaml pipelines. How to achieve this use case ?
I am using azure build and release pipelines. I understand that build pipeline produces an artifact that can be used by release pipelines and deployment can be organized into stages with options to deploy/re-deploy stage.
However, I also notice that all tasks available in release pipeline are also available in the build pipeline. Also the documentation for build pipeline states that it can be used to build, test and deploy. So what exactly is the benefit of using release pipelines?
The pipelines under "Pipelines -> Releases", are classic deployment pipelines made with the GUI.
The new YAML pipelines are always under "Pipelines -> Pipelines" and allow both build and deployment jobs: https://learn.microsoft.com/en-us/azure/devops/pipelines/process/deployment-jobs?view=azure-devops.
By using deployment jobs instead of classic Releases, the deployments will show up under "Pipelines -> Environments".
So in this way it makes sense the same tasks are available on both sides since both allow defining deployment workflows.
YAML pipelines do not have the same capabilities as classic Releases yet though, I think release gates was still missing.
For classic UI-format build and release pipeline:
Usually we use Build Pipeline to build/test our project and output the tested software binaries.
Then we can use Release Pipeline to deploy the artifacts from Build Pipeline to more than one stages depending on we need. So that, we only need to run the Build Pipeline once to get the artifacts(containing the software binaries) and we can use Release Pipeline to reuse and deploy the artifacts to different environment. (Develop, Product...)
Of course we can use Build Pipeline to run some deploy tasks, and we can use Release Pipeline to run the build and test tasks. We can but we shouldn't(not recommended), configuring the Build and Release UI pipeline can make the workflow of how we build/test(more related to CI)=>deploy(more related to CD) better.
And if you're using Multi-stage pipeline, you don't need to use the Release(UI) Pipelines. You can define CI/CD steps in one xx.yml file.
It is the same tasks but not the same processes.
Nowadays, I would say Pipelines are responsible for Continuous Integration, and Release Pipelines are more about Continuous Delivery. When all deployment features will arrive to YAML pipelines it will not be the case.
As you said, Azure Release Pipelines can use and automatically trigger on result of YAML or classic pipelines and you can use different agents. Agent for YAML or classic pipelines need all tools to compile, test and assembly the code when Agent for Release, need the tools for deployment and correct access rights to target environment.
In Release pipelines you can organize your deployments by environments/stages more easily, add steps which could be launched separately with out need to relaunch the whole pipeline (like application recovery or switch to production).
The workflow of Release Pipelines is more visual than in YAML or Classic Build pipelines.
From my experience the main difference is in Approvals and Gates features, for now.
You can try to implement the whole CI/CD process just on YAML pipelines but it could be much easier to use both Azure Pipelines capabilities to separate the logic of CI and CD, at the moment, as deployment features of YAML pipelines are still in development.
in principle there isn't. its just that usually release pipelines are geared towards deploying stuff and build pipelines towards building stuff. jenkins, for example, only had builds. and you'd be releasing with builds. it really depends on the solution you are using. octopus cannot really build stuff, but can release stuff and got tools to make releasing easier.
in ADO you can have stages in release pipelines, so you can do promotes easily, you have approval gates, etc