ALM
Get Release Management Datas With API REST TFS
Microsoft has released a documentation of the VSTS and TFS integrating REST APIs. In the recent past we were using the client object model and API to interact with TFS. But it was very difficult for client which don’t have .Net Framework installed, and after installation of this later, you must to have Visual Studio, install dependencies on TFS assemblies, know C# …..
Now you can interact with VSTS and TFS via POWERSHELL scripts, or another language, with simple instructions.
It implies also an openness to other technologies and also ease of use.
You specify different HTTP verbs (such as GET, PUT, POST and PATCH) and the connection point to a specific URI (Uniform Resource Identifier) to interact with the API.
In our post we will define the URI of our TFS server, our project collection and also that of the team project.
$UriCollectionProject = $TFSInstanceURL+"/"+$ProjectCollection+"/_apis/projects?api-version=2.2-preview.1" $CollectionResponse = Invoke-RestMethod -Method Get -Credential $credential -ContentType application/json -Uri $UriCollectionProject
When pointing to TFS, you can pass a username and password (masked as a secret variable) through
So we must to add theses lines below
$User = "Aghilas.yakoub" $Password = "MyPassword" $securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($User, $securePassword)
Us in this post we will try to list Releases runned by a specific person.
So secondly we will try to retrieve the list of team projects in a collection.
Emeber that a collection contains a set of project and a project contains a set of releases.
Below calling a GET on the URL of the collection.
$UriCollection = $TFSURL+"/"+$ProjectCollectionName+"/_apis/projects?api-version=2.2-preview.1" $CollectionResponse = Invoke-RestMethod -Method Get -Credential $credential -ContentType application/json -Uri $UriCollection
$CollectionResponse contains set of team projects.
foreach ($project in $CollectionResponse.value) { $TeamProject= $project.Name …. }
Now in a second time we will try to retrieve the list of release on a team project.
We will use the following suffix: /_apis/release/releases?api-version=2.2-preview.1
Ref : https://www.visualstudio.com/en-us/docs/integrate/api/rm/releases#get-a-release
#Construct URI for query team prpject and his releases $Uri = $TFSURL +"/"+$ ProjectCollectionName +"/"+$TeamProject+"/_apis/release/releases?api-version=2.2-preview.1" #Get response of previous uri $releaseresponse = Invoke-RestMethod -Method Get -Credential $credential -ContentType application/json -Uri $Uri
Now we must just get created releases by Aghilas
foreach ($releaseInstance in $releaseresponse.value) { If($releaseInstance.createdBy –eq “Aghilas”) { ...... } }
GC.Collect
Package and publish your extension TFS 2015 VNEXT
In order apeak about solution , we explain just that we have two aspects to setup, packaging and publishing, we begin with our sample with packaging.
- PACKAGING View
For the packaging we follow steps below in order to construct our package, the result of this step is vsix file.
1. Setup Node.js
2. Install vset tool with this command : npm install vset –save-dev
3. Run Node.js command prompt tool (C:\Windows\System32\cmd.exe /k “C:\Program Files (x86)\nodejs\nodevars.bat”)
4. Locate you on directory of your extension
5. Run vset package command
Your vsix is generated into your root irectory
For information you can inspect content of your extension, by unzip your vsix
- PUBLISHING View
Before publish our extension it’s possible to visit differents extension avaiable on the cloud, it’s possible to download and install on premise version of tfs, in order to reuse.
We choose to publish our expansion on the market place on Azure
We follow theses steps, firstly we create a publisher, secondly
1. Go to https://marketplace.visualstudio.com/manage/publishers/
2. Choose to create a publisher by completing a unique Id
After that
3. Upload your extension by drag and drop your vsix
4. Correct and adapt your manifest information
5. Now it’s ok and my vsix is downloaded
6. Share my extension on my account azure, an it’s possible to update my version on clickin on update button
7. Go to admin tfs section, and selection extension tab, clck on my extension target
8. On Build VNEXT find my created extension
Create your extension TFS 2015 VNEXT
Start by downloading a template project, you have two project templates, one dedicated to the integration part, another dedicated to the realization of custom build or release tasks.
In this post we will realize an extension that will aim to start an application pool, without managing this specify.
For the part back we will combine our extension with a shell script.
Begin with open Explorer Visual Studio extensions,
Install the following template :
Below is a detail on the different of your solution.
Most of these directories will be deleted in the second time.
Now we will start developing our own extension,
First, delete the files that we use nothing:
- Remove the test directory
- Remove typings directory
- Delete the file app.ts
- Add directory Sample
- Create a powershell file Sample.ps1
- Create a task manifest file task.json
- Create logo into directory
Below the output of created project
- Edit the task.json by defining your layout based on controls and groups concepts, inputs are your controls typed with type propecty, and are grouped into groups, by using group property (Below sample of grouping, we have three groups)
Below the task.json file after modify
We have another section related to call code behind, for our project, code behind is powersell, it can be another type
- Implement your Code behind and match with your layout arguments
Ensure that arguments ps1 match with json arguments, in execution section on your json, ensure that you have referenced your target file.
- For debugging after implementing, open your ps ise, you can find-it in C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
Ensure that you have right of debugging by executing this script, and just click F5
- Register your extension in the manifeste
GC.Collect