How to create new build pipeline using Azure DevOps REST API? - rest

I'm trying to create new build pipeline through programmatically. I'm looking for Azure DevOps REST API for this action. I didn't get the proper examples for creating the pipeline using REST API.
Please advise.

How to create new build pipeline using Azure DevOps REST API?
To create the new build pipeline, we could use the REST API Definitions - Create:
POST https://dev.azure.com/{organization}/{project}/_apis/build/definitions?api-version=5.0
But we need provide too much information in the Request Body, this will be a big project and error-prone. That also the reason why the document not provide a sample Request Body there.
To resolve this issue, usually we would use the REST API Definitions - Get to get the Response Body from the template pipeline:
GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=5.0
Then we just need to update the corresponding properties by modifying the Response Body.
Now, we get the new Request Body for the new pipeline, we could use it with REST API Definitions - Create to create a new pipeline.
You could check this thread for some more details.
Update:
After creating the build definition, Will it create
azure-pipelines.yml file and store in the repository like Azure Repos?
No, if you want to create a YAML type build definition using the rest api, it will not create the corresponding yaml file to our repo, because this API Definitions - Create only send the request body to the pipeline does not operate our repo. Currently, it support creating a build definition that links to a YAML file within the Git repo. If you want to create the yaml automatically, you could check the REST API Pushes - Create.
This should be where the REST API Definitions - Create needs to be improved to support the YAML pipeline. You could add your request for this feature on our UserVoice site (https://developercommunity.visualstudio.com/content/idea/post.html?space=21 ), which is our main forum for product suggestions. Thank you for helping us build a better Azure DevOps:
Hope this helps.

Related

Renaming Azure Devops Build and Release pipeline through REST API

trying to rename the pipelines build and release through REST API, I have gone through the official Microsoft documentation but didn't find any API's for this task. Did i miss any or we have such API's where by using build id/build name we can rename the pipeline
have you tried to make the change in the azure release page and look at the request that is being sent in the dev tools network tab? A couple of months ago I was able to learn how to retrieve some information that I was looking for by doing that.
Best regards.
You could use Definitions-Get API to retrieve the requested body by pipeline definition ID.
Copy the response as body and use Definitions-Update to rename the pipeline. Update the pipeline name of this revision.
Check the DevOps UI output.
The above workflow also applies to release pipeline, your need to change the REST API.
Using Releases-Get release to get the latest revision and using Releases - Update Release to rename it

Azure Invoke REST Services with VSTS

As I was working on DevOps Integration with mendix for CI/CD Pipeline creation Using Mendix API (Team Server API, Build API, Deploy API).
With this pipeline I have been using Invoke Rest Services task Invoke HTTP REST API task - Azure Pipelines | Microsoft Docs ,Implement a Simple CICD Pipeline with Mendix APIs | Mendix Documentation these are two documents which I have been referred.
I have created Pipelines for that I have added two invoke REST task.
With the below screenshot, in the GET service I could able to get the revision number and all I need to do is dynamically pass in the POST method to the Revision number attribute which was highlighted.
Kindly provide a solution on the below issues.
Thanks in advance!
Get Method for Team Server API for mendix
Post Method for Build API for mendix

azure-devops-extension-api - Run pipeline

I'm trying to run a pipeline from an Azure DevOps hub extension, using the azure-devops-extension-api.
The azure-devops-extension-api (GitHub repository) contains several rest client classes, such as the BuildRestClient class and the ReleaseRestClient class. Both of which I've successfully used methods from.
However, the azure-devops-extension-api doesn't contain any rest client class for the Runs - Run Pipeline Azure DevOps Services REST API. I'm suspecting that this is because this endpoint is new for the 6.0 version of the API, and so it hasn't been implemented in the azure-devops-extension-api yet
Is there any way that I could use this azure-devops-extension-api to run a specified pipeline?
Perhaps via the queueBuild method? I want to run a specific pipeline though, not a specific old build.
Any input would be appreciated!
What I ended up doing, was creating my own PipelineClient class (from the Runs - Run Pipeline), which extends the RestClientBase from the azure-devops-extension-api/Common/RestClientBase.
Thankful for the input I got to this question, it's appreciated!
Yes, if you want to use azure-devops-extension-api to run a specified pipeline, you can use queueBuild method.
Regarding the sourceBuildId parameter, there is no specific description in the document, I will add it here.
sourceBuildId: The source build must be a pull request build if queueing with sourceBuildId.

Automatically adding comments to all Pull Requests in Azure DevOps

Is there a way to automatically add comments to any pull requests created in Azure DevOps within a repository?
Is there a way to automatically add comments to any pull requests created in Azure DevOps within a repository?
I am afraid there is no such way to automatically add comments to any pull requests created in Azure DevOps within a repository.
That because we are currently unable to monitor the creation of pull requests in real time. And there is no similar extension to detect the creation of pull requests. In this case, we could set the action to add comment to the all pull requests.
To achieve this, we could try to add a Build Validation for each branch, and use the REST API Pull Request Thread Comments - Create to add comments to the pull requests.
POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/threads/{threadId}/comments?api-version=5.1
You could check this thread for the details info about how to use this REST API.
In this case, if we create any pull request, it will invoke the Build Validation to use REST API to add comments to the pull request.
Our team had similar needs so I created an Azure DevOps task to do just that:
PR Auto-Comment (GitHub)
Just add the task to your PR build and you're good to go.
Depending on your exact need, you may be able to use the "Automatically included reviewers" functionality that you get with branch policy. It has a custom message that can be configured to be included in every PR.

Call a release build from REST api in Azure

I want to call the Azure Devops to create a new release from one of my Release Pipelines.
I have been looking for different calls but its either to create the pipeline or build artifacts.
Is there a way to call a release pipeline from Azure API?
I did it with the next endpoint: https://learn.microsoft.com/en-us/rest/api/azure/devops/build/Builds/Queue?view=azure-devops-rest-5.0&viewFallbackFrom=vsts-rest-4.1
I was using a wrong body for the endpoint. With the example from the documentation it worked.