<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Azure DevOps &#8211; Sibeesh Passion</title>
	<atom:link href="https://sibeeshpassion.com/tag/azure-devops/feed/" rel="self" type="application/rss+xml" />
	<link>https://sibeeshpassion.com</link>
	<description>My passion towards life</description>
	<lastBuildDate>Wed, 15 Dec 2021 16:31:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>/wp-content/uploads/2017/04/Sibeesh_Passion_Logo_Small.png</url>
	<title>Azure DevOps &#8211; Sibeesh Passion</title>
	<link>https://sibeeshpassion.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Deploy .net 6 App to Azure from Azure DevOps using Pipelines</title>
		<link>https://sibeeshpassion.com/deploy-net-6-app-to-azure-from-azure-devops-using-pipelines/</link>
					<comments>https://sibeeshpassion.com/deploy-net-6-app-to-azure-from-azure-devops-using-pipelines/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Wed, 15 Dec 2021 14:47:13 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[.net 6]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14537</guid>

					<description><![CDATA[Working with both Azure and Azure DevOps is always fun, and the possibilities of automation are endless. I have written many articles on these topics and you can read them here. As you all know that the .net6 is been a talk in the market and I can't wait to try out things there. Here in this post, we will see how to use the Azure DevOps pipeline to build, restore and deploy the .net6 application to Azure Web App Service.]]></description>
										<content:encoded><![CDATA[
<p>Working with both Azure and Azure DevOps is always fun, and the possibilities of automation are endless. I have written many articles on these topics and you can read them <a rel="noreferrer noopener" href="https://sibeeshpassion.com/category/azure/" target="_blank">here</a>. As you all know that the .net6 is been a talk in the market and I can&#8217;t wait to try out things there. Here in this post, we will see how to use the Azure DevOps pipeline to build, restore and deploy the .net6 application to Azure Web App Service. Let&#8217;s get started. </p>



<p>At this point, I will assume that you have a .net6 application, Azure Web App Service, and Azure DevOps project with permission to configure the Pipeline and to add a new service connection to the Azure Resource Group. If you are not sure about how to configure the Service Connection to the Azure Resource Group, <a href="https://sibeeshpassion.com/azure-devops-service-connection-with-multiple-azure-resource-group/" target="_blank" rel="noreferrer noopener">this post</a> will help you. </p>



<h1 class="wp-block-heading">Create the YAML files needed</h1>



<p>We will be creating 3 YAML files as listed below. </p>



<ol class="wp-block-list"><li><a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?WT.mc_id=AZ-MVP-5001828&amp;view=azure-devops" target="_blank" rel="noreferrer noopener">A template file</a> with the all the tasks, so that we can reuse them for the environment specific pipelines</li><li>A pipeline for Test environment</li><li>A pipeline for the production environment</li></ol>



<h2 class="wp-block-heading">Template file</h2>



<p>Let&#8217;s configure all the tasks needed in our template file. We will have 2 stages in our template. You can <a href="https://sibeeshpassion.com/azure-multi-stage-pipeline-for-asp-net-core-and-azure-deploy-to-azure-app-service/" target="_blank" rel="noreferrer noopener">read this post</a> if you are not sure how to configure the stages in the pipeline. </p>



<ol class="wp-block-list"><li>Build stage, for performing the tasks below <ul><li>Install .Net Core SDK</li><li>.Net restore</li><li>.Net build</li><li>.Net publish</li><li>Publish to Azure DevOps artefacts</li></ul></li><li>Deploy stage, to deploy the artefacts generated to the Azure Web App Service. This will involves the taks below. <ul><li>Download the artefact</li><li>Deploy</li></ul></li></ol>



<p>Our final template file will look like this. </p>



<script src="https://gist.github.com/SibeeshVenu/4951d95a528d6bef87cc353eeb010548.js"></script>



<h2 class="wp-block-heading">Add pipeline for Test environment</h2>



<p>As we have a template available, we can use this to configure the pipeline for our test environment. All you have to do is to refer to this template and pass the required parameters. This is how our pipeline for our test environment can look like. </p>



<script src="https://gist.github.com/SibeeshVenu/6f6d8f7ef94f781e33b71ca031908f1b.js"></script>



<p>Here, the parameter azure subscription is the service connection name that you have created in your Azure DevOps project. Refer <a rel="noreferrer noopener" href="https://sibeeshpassion.com/azure-devops-service-connection-with-multiple-azure-resource-group/" target="_blank">to this</a> to know more.  The wwebAppName is the name of your Azure Web App Service. </p>



<h2 class="wp-block-heading">Add pipeline for Prod environment</h2>



<p>Let&#8217;s create a new pipeline for our Prod environment to see how easily we can reuse the template. </p>



<script src="https://gist.github.com/SibeeshVenu/1c9f4a5d53e696cbb5241efa0bef1ef3.js"></script>



<p>Wasn&#8217;t that cool?</p>



<h1 class="wp-block-heading">Configure the pipelines in the Azure DevOps</h1>



<p>Just creating the YAML field will not create the pipelines in our DevOps, as Microsoft has removed that option due to some security concerns. So we will have to configure them manually for the first time. Let&#8217;s do it. </p>



<ol class="wp-block-list"><li>Go to the Pipelines section from your Azure DevOps and click on the New pipeline button. </li><li>Select Azure Repos Git (YAML) from the next screen. </li><li>Select the repository that you pushed your YAML file code changes. </li><li>Azure DevOps will analyze your repository and sugges the YAML templates. Select the Existing Azure Pipeline YAML file option.</li><li>Selct the branch and the path to your YAML file as in the preceding image, review the same and run the pipeline. </li></ol>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/12/image-8.png"><img fetchpriority="high" decoding="async" width="801" height="376" src="/wp-content/uploads/2021/12/image-8.png" alt="" class="wp-image-14538" srcset="/wp-content/uploads/2021/12/image-8.png 801w, /wp-content/uploads/2021/12/image-8-300x141.png 300w, /wp-content/uploads/2021/12/image-8-768x361.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a><figcaption>Configure the pipelines in Azure DevOps</figcaption></figure>



<p>That&#8217;s it. Everything else will be working as expected from the next time as we have configured the triggers in the pipelines. If you are getting an error as &#8220;Task &#8220;NETSdkError&#8221; skipped, due to false condition; (&#8216;$(_TargetFrameworkVersionWithoutV)&#8217; &gt; &#8216;$(NETCoreAppMaximumVersion)&#8217;) was evaluated&#8221;, you will have to make sure that you are installing the correct version of the .Net Core SDK as mentioned in <a href="https://stackoverflow.com/a/70352273/5550507" target="_blank" rel="noreferrer noopener">this answer</a>.</p>



<h1 class="wp-block-heading">Source code</h1>



<p>You can get the complete source code from this <a href="https://github.com/SibeeshVenu/deploy-.net6-azure-web-app-yaml" target="_blank" rel="noreferrer noopener">GitHub repository</a>. Please feel free to fork/star. </p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Here in this post, we have learned the following things.</p>



<ol class="wp-block-list" id="block-d40e081d-b702-477c-8b2d-f217c2c2b5fb"><li>How to configure a YAML template</li><li>How to reuse a YAML template in the pipelines</li><li>How to deploy the .net 6 application to Azure Web App Service</li></ol>



<h2 class="wp-block-heading">About the Author</h2>



<p>I am yet another developer who is passionate about writing and video creation. I have written close to 500 blogs on my&nbsp;<a href="https://sibeeshpassion.com/" target="_blank" rel="noreferrer noopener">blog</a>. And I upload videos on my YouTube channels&nbsp;<a href="https://www.youtube.com/njanorumalayali" target="_blank" rel="noreferrer noopener">Njan Oru Malayali</a>&nbsp;and&nbsp;<a href="https://www.youtube.com/SibeeshPassion" target="_blank" rel="noreferrer noopener">Sibeesh Passion</a>. Please feel free to follow me.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards</p>



<p>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/deploy-net-6-app-to-azure-from-azure-devops-using-pipelines/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Azure DevOps Service Connection with Multiple Azure Resource Group</title>
		<link>https://sibeeshpassion.com/azure-devops-service-connection-with-multiple-azure-resource-group/</link>
					<comments>https://sibeeshpassion.com/azure-devops-service-connection-with-multiple-azure-resource-group/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Fri, 19 Nov 2021 12:51:47 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[Azure DevOps Service Connection]]></category>
		<category><![CDATA[Service Connection with Multiple Azure Resource Group]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14511</guid>

					<description><![CDATA[I wanted to use the Azure DevOps same service connection to connect to multiple resource groups, so that I can use the same service connection in a pipeline to connect to those resources when it is necessary by using the "azureSubscription"option in the pipeline tasks. ]]></description>
										<content:encoded><![CDATA[
<p>As you know that we can easily achieve a lot of automation by combining <a rel="noreferrer noopener" href="https://sibeeshpassion.com/tag/azure-devops/" target="_blank">Azure DevOps</a> and <a rel="noreferrer noopener" href="https://sibeeshpassion.com/tag/azure/" target="_blank">Azure Services</a>. I have an Azure Pipeline that will build my application, publish my packages/artefacts generated to an Azure Web App Service and then publish the content to a CDN as well. I am sure that you might have done this several times, and we use the <a rel="noreferrer noopener" href="https://sibeeshpassion.com/azure-function-build-and-release-pipeline-in-azure-devops-ci-cd/" target="_blank">Azure DevOps service connection</a> to connect to the Azure Services.  While we add the Service Connection there is an option to select the Azure Resource Manager using service principal(automatic), and then we set the subscription and the resource group. </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/11/image-3.png"><img decoding="async" width="540" height="800" src="/wp-content/uploads/2021/11/image-3.png" alt="" class="wp-image-14515" srcset="/wp-content/uploads/2021/11/image-3.png 540w, /wp-content/uploads/2021/11/image-3-203x300.png 203w" sizes="(max-width: 540px) 100vw, 540px" /></a><figcaption> Azure Resource Manager using service principal(automatic) </figcaption></figure></div>



<p>This will create a new Azure AD App Registration on your Azure AD and then a new service principal will be created to connect the Azure Resource group you have mentioned. By default, this will work with only one resource group as there is no UI to select multiple resource groups. But, I wanted to use the same service connection to connect to multiple resource groups, so that I can use the same service connection in a pipeline to connect to those resources when it is necessary by using the <code>"azureSubscription"</code>option in the pipeline tasks. I was getting the preceding error when I try with the existing service connection. </p>



<pre class="wp-block-code"><code>1. Starting: Publish app to installer website ============================================================================== Task : Azure App Service deploy Description : Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby Version : 3.184.1 Author : Microsoft Corporation Help : https://aka.ms/azureappservicetroubleshooting ============================================================================== Got connection details for Azure App Service:'weu-aps01' ##&#91;error]Error: Resource 'weu-aps01' doesn't exist. Resource should exist before deployment. Finishing: Publish app to installer website 
</code></pre>



<p>Here in this post, we will see how we can resolve this issue. </p>



<h1 class="wp-block-heading">Azure AD App Registration and Service Prinicipals</h1>



<p>Here are the screenshots of the AD app registered and the service principal created. </p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/11/image-4.png"><img decoding="async" width="801" height="515" src="/wp-content/uploads/2021/11/image-4.png" alt="" class="wp-image-14516" srcset="/wp-content/uploads/2021/11/image-4.png 801w, /wp-content/uploads/2021/11/image-4-300x193.png 300w, /wp-content/uploads/2021/11/image-4-768x494.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a><figcaption>AD App Registered on the Azure AD</figcaption></figure>



<p>Now, if you just go to your Azure Resource group and then click on the Access Control, under the role assignments you should be able to see the new service principal for the new AD app with contributor access. </p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/11/image-5.png"><img decoding="async" width="800" height="423" src="/wp-content/uploads/2021/11/image-5.png" alt="" class="wp-image-14517" srcset="/wp-content/uploads/2021/11/image-5.png 800w, /wp-content/uploads/2021/11/image-5-300x159.png 300w, /wp-content/uploads/2021/11/image-5-768x406.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption>Service Principal Created for the AD App Registration</figcaption></figure>



<h1 class="wp-block-heading">Azur DevOps Service Connection with Multiple Resource Group</h1>



<p>As you might have guessed already, to connect multiple resource groups to the same azure DevOps service connection, all we have to do is to add a new role assignment with the new AD application registration. Get the name of the service principal created, by clicking on the manage Service Principal option in the Service Connection and then copy the value for the Display name from the next page. </p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/11/image-6.png"><img decoding="async" width="801" height="476" src="/wp-content/uploads/2021/11/image-6.png" alt="" class="wp-image-14518" srcset="/wp-content/uploads/2021/11/image-6.png 801w, /wp-content/uploads/2021/11/image-6-300x178.png 300w, /wp-content/uploads/2021/11/image-6-768x456.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></a><figcaption>Manage Service Principal</figcaption></figure>



<p>Now, go to the resource group that you wish to give access to, click on the Access Control(IAM) and then the +Add button.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/11/image-7.png"><img decoding="async" width="800" height="286" src="/wp-content/uploads/2021/11/image-7.png" alt="" class="wp-image-14519" srcset="/wp-content/uploads/2021/11/image-7.png 800w, /wp-content/uploads/2021/11/image-7-300x107.png 300w, /wp-content/uploads/2021/11/image-7-768x275.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption>Access Control (IAM)</figcaption></figure>



<p>Select the Add role assignment option and then select the role as a contributor in the role grid, press next. From the next screen, select <strong>user, group, or service principal</strong> as the option for <strong>Assign access to</strong>. Click on the + Select members, search for our AD Registered app name, the display name and then select the same from the result, click on the select button. Finally, click the Review + assign button. </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/11/image-8.png"><img decoding="async" width="513" height="600" src="/wp-content/uploads/2021/11/image-8.png" alt="" class="wp-image-14520" srcset="/wp-content/uploads/2021/11/image-8.png 513w, /wp-content/uploads/2021/11/image-8-257x300.png 257w" sizes="(max-width: 513px) 100vw, 513px" /></a><figcaption>Select the Service Principal</figcaption></figure></div>



<h1 class="wp-block-heading">Testing Azure DevOps Service Connection with Multiple Resource Group</h1>



<p>I had a pipeline that connects Azure Resources from different resource groups, so to test this, all I have to do is to run the pipeline, and see whether I am getting the same error I was getting earlier. If you ever get any error saying that, <code>##[error]Error: Virtual application doesn't exists : resources</code> make sure that you have configured the virtual directory in your Azure Web App, here resources is my virtual application. I know that it is specific to my case, still thought to share this in this post. </p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2021/11/Azure-Web-App-Virtual-Application.png"><img decoding="async" width="799" height="417" src="/wp-content/uploads/2021/11/Azure-Web-App-Virtual-Application.png" alt="" class="wp-image-14522" srcset="/wp-content/uploads/2021/11/Azure-Web-App-Virtual-Application.png 799w, /wp-content/uploads/2021/11/Azure-Web-App-Virtual-Application-300x157.png 300w, /wp-content/uploads/2021/11/Azure-Web-App-Virtual-Application-768x401.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></a><figcaption>Azure Web App Virtual Application</figcaption></figure>



<h1 class="wp-block-heading">Conclusion</h1>



<p>In this post, we learned the preceding things.</p>



<ul class="wp-block-list"><li>What is Azure DevOps service connection</li><li>How to configure an Azure DevOps service connection with multiple azure resource groups</li></ul>



<h1 class="wp-block-heading">About the Author</h1>



<p>I am yet another developer who is passionate about writing and video creation. I have written close to 500 blogs on my&nbsp;<a href="https://sibeeshpassion.com/" target="_blank" rel="noreferrer noopener">blog</a>. And I upload videos on my YouTube channels&nbsp;<a href="https://www.youtube.com/njanorumalayali" target="_blank" rel="noreferrer noopener">Njan Oru Malayali</a>&nbsp;and&nbsp;<a href="https://www.youtube.com/SibeeshPassion" target="_blank" rel="noreferrer noopener">Sibeesh Passion</a>. Please feel free to follow me.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h1 class="wp-block-heading">Your turn. What do you think?</h1>



<p>Thanks a lot for reading. Did I miss anything that you may think is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards</p>



<p>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/azure-devops-service-connection-with-multiple-azure-resource-group/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Get Azure DevOps Sprint Capacity Using API and PostMan</title>
		<link>https://sibeeshpassion.com/get-azure-devops-sprint-capacity-using-api-and-postman/</link>
					<comments>https://sibeeshpassion.com/get-azure-devops-sprint-capacity-using-api-and-postman/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Sun, 22 Aug 2021 10:54:32 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[azure devops analytics]]></category>
		<category><![CDATA[Azure DevOps APIs]]></category>
		<category><![CDATA[azure devops capacity]]></category>
		<category><![CDATA[get average sprint capacity azure devops]]></category>
		<category><![CDATA[get azure devops iteration capacity]]></category>
		<category><![CDATA[get sprint capacity azure devops programatically]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14453</guid>

					<description><![CDATA[ I wanted to know my Sprint capacity programmatically as I need to find the average sprint capacity and the area where my team is spending time, whether it is Development or Testing, etc. Unfortunately, there is no option to see that in the Azure DevOps, but luckily there are APIs we can get this information.]]></description>
										<content:encoded><![CDATA[
<p>Obviously, you can do many things in <a rel="noreferrer noopener" href="https://sibeeshpassion.com/tag/azure-devops/" target="_blank">Azure DevOps</a>, but there may be some cases where you may need to do something special to get what you wanted. Here, I wanted to know my Sprint capacity programmatically as I need to find the average sprint capacity and the area where my team is spending time, whether it is Development or Testing, etc. Unfortunately, there is no option to see that in the Azure DevOps, but luckily there are APIs we can get this information. Here, in this post, we will see how we can get that, let&#8217;s get started. </p>



<h1 class="wp-block-heading">Get the PAT (Personal Access Token)</h1>



<p>To connect to our DevOps using an API, we should authenticate and to do that, we need to create a PAT aka Personal Access Token. Goto your Azure DevOps and click on the User Settings button, and then Personal access tokens.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/08/image-2.png"><img decoding="async" width="400" height="613" src="/wp-content/uploads/2021/08/image-2.png" alt="" class="wp-image-14456" srcset="/wp-content/uploads/2021/08/image-2.png 400w, /wp-content/uploads/2021/08/image-2-196x300.png 196w" sizes="(max-width: 400px) 100vw, 400px" /></a><figcaption>Personal access tokens</figcaption></figure></div>



<p>Click on the +New Token button and fill all the required fields in the next screen. Once it is done, click on Create button, this will generate a token for you. <em>Please remember that you need to copy this token before you leave the page or reload, as this is not saved anywhere</em>. </p>



<h1 class="wp-block-heading">Setup PostMan</h1>



<p>I usually create a collection in PostMan before I do any related calls. You can create a collection by clicking the + icon in the collection section. Once it is created, click on the Authorization tab and change the type to Basic Auth, past the token you copied from Azure DevOps in the password field. Please remember that you should leave the Username field blank. </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/08/image-3.png"><img decoding="async" width="800" height="538" src="/wp-content/uploads/2021/08/image-3.png" alt="" class="wp-image-14457" srcset="/wp-content/uploads/2021/08/image-3.png 800w, /wp-content/uploads/2021/08/image-3-300x202.png 300w, /wp-content/uploads/2021/08/image-3-768x516.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption>Setup PostMan using Azure DevOps Token</figcaption></figure></div>



<h1 class="wp-block-heading">Call the Azure DevOps APIs</h1>



<p>As we have successfully set up our PostMan, now we are ready to execute the APIs. </p>



<h2 class="wp-block-heading">Get Iterations</h2>



<p>Create a GET request under the collection we have created using <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/rest/api/azure/devops/work/iterations/list?view=azure-devops-rest-6.0&amp;WT.mc_id=AZ-MVP-5001828" target="_blank">this format</a> to get the Iterations as we will use this in our next API call. The example is given below. </p>



<pre class="wp-block-code"><code>GET https://dev.azure.com/{organization}/{project}/{team}/_apis/work/teamsettings/iterations?api-version=6.0</code></pre>



<p>The Organization name and project name can be easily found on the Azure DevOps home page or from the URL you access your DevOps, for example, if you access your DevOps by this URL &#8220;<code>https://dev.azure.com/sibeeshpassion/publicrepo</code>&#8220;, sibeeshpassion is your organization name and publicrepo is your project name.  </p>



<p>You can either use your team name or team id as the next parameter. If you want to use the Team id, the easy way to find it is to go to your team by accessing this URL &#8220;<code>https://dev.azure.com/{orgName}/{projectName}/_settings/teams</code>&#8220;, click on the Team you wish, and then click on either Notification or Dashboard.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/08/image-5.png"><img decoding="async" width="850" height="703" src="/wp-content/uploads/2021/08/image-5.png" alt="" class="wp-image-14459" srcset="/wp-content/uploads/2021/08/image-5.png 850w, /wp-content/uploads/2021/08/image-5-300x248.png 300w, /wp-content/uploads/2021/08/image-5-768x635.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></a><figcaption>Azure DevOps Teams</figcaption></figure></div>



<p>A new page will be opened and you can get the Team id from the URL of the new page. For example, &#8220;<code>https://dev.azure.com/{orgName}/{projectName}/_settings/notifications?teamId=989154f4f-32f6-4dab-b7f5-165457afsgd36f</code>&#8220;. One thing to note here is to set the Type as &#8220;Inherit auth from parent&#8221; under the Authorization tab.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/08/image-4.png"><img decoding="async" width="750" height="784" src="/wp-content/uploads/2021/08/image-4.png" alt="" class="wp-image-14458" srcset="/wp-content/uploads/2021/08/image-4.png 750w, /wp-content/uploads/2021/08/image-4-287x300.png 287w" sizes="(max-width: 750px) 100vw, 750px" /></a><figcaption>Get API Authorization Type</figcaption></figure></div>



<p>Click on the Send button now, and you should see the result. You can visualize the data you get <a rel="noreferrer noopener" href="https://learning.postman.com/docs/sending-requests/visualizer/" target="_blank">by using the visualizer if you wish.</a> </p>



<h2 class="wp-block-heading">Get the capacity</h2>



<p>As we now have all the iteration details we can perform the API call to get the capacity of each sprint. Create another GET request, by <a href="https://docs.microsoft.com/en-us/rest/api/azure/devops/work/capacities/list?view=azure-devops-rest-6.0&amp;WT.mc_id=AZ-MVP-5001828" target="_blank" rel="noreferrer noopener">using this format</a> and set the Authorization Type as &#8220;Inherit auth from parent&#8221;. The sample API looks like below, </p>



<pre class="wp-block-code"><code>GET https://dev.azure.com/{organization}/{project}/{team}/_apis/work/teamsettings/iterations/{iterationId}/capacities?api-version=6.0</code></pre>



<p>Replace the {iterationId} from the result of the previous execution. When you click on the Send button, you should now get a JSON array with all the details as below.</p>



<script src="https://gist.github.com/SibeeshVenu/914a3b9853b9195219ce2993fe7ad815.js"></script>



<p>Please be noted that I have removed all the values from the result. With the result, you can loop through the array and find the analytics data that you are looking for. </p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="/wp-content/uploads/2021/08/image-6.png"><img decoding="async" width="800" height="465" src="/wp-content/uploads/2021/08/image-6.png" alt="" class="wp-image-14460" srcset="/wp-content/uploads/2021/08/image-6.png 800w, /wp-content/uploads/2021/08/image-6-300x174.png 300w, /wp-content/uploads/2021/08/image-6-768x446.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><figcaption>Get Capacities API Result</figcaption></figure></div>



<p>I am planning to create one front end application to do this, thus keep an eye here. You can also get the capacity of the team member by <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/rest/api/azure/devops/work/capacities/get?view=azure-devops-rest-6.0&amp;WT.mc_id=AZ-MVP-5001828" target="_blank">executing this API</a>. </p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Thanks for reading this post, and here we learned,</p>



<ol class="wp-block-list"><li>How to get a personal access token from Azure DevOps?</li><li>How to authnticate the Azure DevOps APIs using the Personal Access Tokens and use the same in PostMan?</li><li>How to get the Team Iterations and Sprint Capacities of a Team in Azure DevOps?</li></ol>



<h1 class="wp-block-heading">About the Author</h1>



<p>I am yet another developer who is passionate about writing and video creation. I have written close to 500 blogs on my&nbsp;<a href="https://sibeeshpassion.com/" target="_blank" rel="noreferrer noopener">blog</a>. And I upload videos on my YouTube channels&nbsp;<a href="https://www.youtube.com/njanorumalayali" target="_blank" rel="noreferrer noopener">Njan Oru Malayali</a>&nbsp;and&nbsp;<a href="https://www.youtube.com/SibeeshPassion" target="_blank" rel="noreferrer noopener">Sibeesh Passion</a>. Please feel free to follow me.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h1 class="wp-block-heading">Your turn. What do you think?</h1>



<p>Thanks a lot for reading. Did I miss anything that you may think is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards</p>



<p>Sibeesh Venu</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/get-azure-devops-sprint-capacity-using-api-and-postman/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Azure Multi-Stage Pipeline for Asp.Net Core and Azure, Deploy to Azure App Service</title>
		<link>https://sibeeshpassion.com/azure-multi-stage-pipeline-for-asp-net-core-and-azure-deploy-to-azure-app-service/</link>
					<comments>https://sibeeshpassion.com/azure-multi-stage-pipeline-for-asp-net-core-and-azure-deploy-to-azure-app-service/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Fri, 06 Nov 2020 16:27:54 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[asp net core and angular azure pipeline]]></category>
		<category><![CDATA[asp net core and angular pipeline]]></category>
		<category><![CDATA[Azure app service multi stage pipeline]]></category>
		<category><![CDATA[azure app service pipeline]]></category>
		<category><![CDATA[azure app service yml]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[multi stage pipeline azure]]></category>
		<category><![CDATA[multi stage pipeline for asp net core and angular]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14235</guid>

					<description><![CDATA[Here in this post, we are going to see how we can create a multi-stage pipeline, for our Asp.Net core and Angular application, with a task to deploy it to the Azure App Service.]]></description>
										<content:encoded><![CDATA[
<p>When do you actually think about the deployment? Is it from the day you start developing your application or once after finished developing? If you are in the second category, it is already late to move to the first category. The word pipeline comes into the picture when we talk about deployment. This way we can easily achieve Continuous Integration and Continuous Delivery. So, here in this post, we are going to see how we can create a multi-stage pipeline, for our Asp.Net core and Angular application, and at the end to deploy it to the Azure App Service. I am going to use Azure DevOps, but the steps may look similar if you use any other public cloud. Let&#8217;s start then.</p>



<h2 class="wp-block-heading">Asp.Net Core Application with Angular</h2>



<p>I already created both Asp.Net and Angular applications using the Angular project template. There are many advantages that I can think of if you are using this template. Some of them are listed below.</p>



<ul class="wp-block-list"><li><strong>Angular CLI integration</strong>. In development mode, there&#8217;s no need to run&nbsp;ng serve. It runs in the background automatically, so your client-side resources are dynamically built on demand and the page refreshes when you modify any file.</li><li><strong>Efficient production builds</strong>. In production mode, development-time features are disabled, and your&nbsp;dotnet publish&nbsp;configuration automatically invokes&nbsp;ng build&nbsp;to produce minified, ahead-of-time compiled JavaScript files.</li></ul>



<p>You can read more about this template <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/aspnet/core/client-side/spa/angular?WT.mc_id=AZ-MVP-5001828&amp;view=aspnetcore-3.1&amp;tabs=visual-studio" target="_blank">here</a>. Open your application once it is created, and you should be able to see your Angular application in the <em>ClientApp </em>folder. Now, go to the file Startup.cs and check the method ConfigurationServices, here we are setting to serve the angular project from dist folder for the production. </p>



<script src="https://gist.github.com/SibeeshVenu/85eedd9d6cfc798f0570d92c1893cf90.js"></script>



<p>Look the Configure method and that is where we set the SPA. </p>



<script src="https://gist.github.com/SibeeshVenu/ed73be2f6a0510fc9be5f165c92b2b8f.js"></script>



<p>Enough of the details about the application. Let&#8217;s start creating the pipeline now. </p>



<h2 class="wp-block-heading">Azure Multi-Stage Pipeline</h2>



<p>Go to your Azure DevOps project and click on the Pipelines, you should see an option to create a dummy YAML file there. And when it is created, just replace it with the preceding content. </p>



<script src="https://gist.github.com/SibeeshVenu/6bf5f5ee0233760cc92cf70a55472c0b.js"></script>



<p>From the pipeline, you can see that we have 4 stages Build, Deploy_to_dev_environment, Deploy_to_staging_environment, Deploy_to_production_environment. In the stage build, we build the application and save the output to the publish_out folder. If you don&#8217;t provide any folder name, most likely you will get an error &#8220;Program does not contain a static &#8216;Main&#8217; method suitable for an entry point&#8221;, and I have already <a rel="noreferrer noopener" href="https://stackoverflow.com/questions/64715817/azure-devops-pipeline-program-does-not-contain-a-static-main-method-suitable-f/64715818#64715818" target="_blank">answered this question on StackOverflow</a>. Please feel free to check that.</p>



<p>After the build, we run the task publish, and please remember that your Angular application will also be ready for production as we use the Angular template from Visual Studio. In the other stages, we added a task to deploy the package to the Azure App Service. Please be noted that you need Azure Service Connection to do this. Please <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure?WT.mc_id=AZ-MVP-5001828&amp;view=azure-devops" target="_blank">follow this</a> doc to do that. </p>



<p>Once everything is done, just go to your Azure DevOps project and run your pipeline. If everything goes well, you should now see the output as in the preceding image. Please remember that the stages depend on the branch you run, that is the condition we added. For example, for dev we added the condition <em>condition: and(succeeded(&#8216;Build&#8217;), eq(variables[&#8216;build.sourceBranch&#8217;], &#8216;refs/heads/dev&#8217;))</em></p>



<figure class="wp-block-image size-large"><img decoding="async" width="650" height="515" src="/wp-content/uploads/2020/11/Multi-stage-pipeline-output.jpg" alt="" class="wp-image-14236" srcset="/wp-content/uploads/2020/11/Multi-stage-pipeline-output.jpg 650w, /wp-content/uploads/2020/11/Multi-stage-pipeline-output-300x238.jpg 300w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Multi stage pipeline output</figcaption></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Here in this post, we have seen how to create an azure multi-stage pipeline fou our Asp.Net core and Angular application, that will also deeply to an Azure App Service. </p>



<h2 class="wp-block-heading">About the Author</h2>



<p>I am yet another developer who is passionate about writing and video creation. I have written close to 500 blogs on my&nbsp;<a href="https://sibeeshpassion.com/" target="_blank" rel="noreferrer noopener">blog</a>. And I upload videos on my YouTube channels&nbsp;<a href="https://www.youtube.com/njanorumalayali" target="_blank" rel="noreferrer noopener">Njan Oru Malayali</a>&nbsp;and&nbsp;<a href="https://www.youtube.com/SibeeshPassion" target="_blank" rel="noreferrer noopener">Sibeesh Passion</a>. Please feel free to follow me.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards</p>



<p>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/azure-multi-stage-pipeline-for-asp-net-core-and-azure-deploy-to-azure-app-service/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Create Microsoft Teams App Using Vuejs, Azure, JavaScript SDK</title>
		<link>https://sibeeshpassion.com/create-microsoft-teams-app-using-vuejs-azure-javascript-sdk/</link>
					<comments>https://sibeeshpassion.com/create-microsoft-teams-app-using-vuejs-azure-javascript-sdk/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Wed, 24 Jun 2020 08:39:50 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[develop custom apps for microsoft teams]]></category>
		<category><![CDATA[Microsoft teams]]></category>
		<category><![CDATA[microsoft teams app with vuejs]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[Vuejs]]></category>
		<category><![CDATA[yeoman generator vuejs]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14136</guid>

					<description><![CDATA[Create and connect our Teams application with Vuejs, a new Azure Web App, Create Build and Release pipeline for our Vuejs application and then install Tab App.]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction</h2>



<p>The Microsoft Teams Yeoman generator is an amazing tool to develop applications for your Microsoft Teams, but it is not capable to work with Vuejs yet. I wanted to develop my application in Vuejs, so I created a Microsoft Teams app using Teams JavaScript SDK as <a href="https://sibeeshpassion.com/create-custom-web-apps-for-microsoft-teams-using-azure-function-node-js/">I explained in my previous post</a>. This blog is a continuation of the previous post, so please read that to get an idea of what we are going to develop in this blog post. </p>



<h2 class="wp-block-heading">Background</h2>



<p>In our last post, we developed,</p>



<ol class="wp-block-list"><li>a Microsoft Teams app with JavaScript SDK</li><li>an Azure Function to serve the static file as a website</li><li>Generate the manifest file for our Teams Application</li><li>Install the App in Teams</li></ol>



<p>And in this post we will be doing,</p>



<ol class="wp-block-list"><li>Create a sample Vuejs application</li><li>Connect our Microsoft Teams application with Vuejs application, at the end both are JavaScript right?</li><li>Create a new Web App in the Azure portal</li><li>Create Build pipeline for our Vuejs application</li><li>Create a release pipeline for our Vuejs application</li></ol>



<p>So do you like any of the point mentioned above? If yes, please stay with me till the end.</p>



<h2 class="wp-block-heading">Develop Microsoft Teams App with Vuejs</h2>



<h3 class="wp-block-heading">Setup Vuejs and create a new project</h3>



<p>The first thing to do is to install the Vue CLI on our machine, and you can do that by running the preceding command.</p>



<pre class="wp-block-code"><code>npm install -g @vue/cli</code></pre>



<p>Please read the <a href="https://cli.vuejs.org/guide/installation.html" target="_blank" rel="noreferrer noopener nofollow">installation guides here</a>, if you want to know it in detail. Once that is done, now is the time to create our first vuejs application using this command. </p>



<pre class="wp-block-code"><code>vue create hello-world</code></pre>



<p>You will be asked to select your preset, I select the default one, that is (babel, eslint). In the end, you will be given a beautiful, small Vuejs application. Easy right? As the motive of this blog post is not to talk about the Vuejs application, I won&#8217;t go in detail about it. </p>



<h3 class="wp-block-heading">Connect both Tab Apps and Vuejs app</h3>



<p>The Vuejs application has a folder called Public, and this is where we paste the files of our Teams Tab App. So now your public folder should look like below.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="261" height="313" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Public-Folder-in-Vuejs-1.png" alt="" class="wp-image-14138" srcset="/wp-content/uploads/2020/06/Public-Folder-in-Vuejs-1.png 261w, /wp-content/uploads/2020/06/Public-Folder-in-Vuejs-1-250x300.png 250w" sizes="(max-width: 261px) 100vw, 261px" /><figcaption>Public folder in Vuejs</figcaption></figure></div>



<p>Now open the Index.html file in the public folder and update the codes with our Tab App&#8217;s Index.html file, please remember that we are just adding some codes here, not replacing the complete HTML. Here is the complete Index.html file content.</p>



<script src="https://gist.github.com/SibeeshVenu/085b906722d1a80553197976f8d41a2d.js"></script>



<p>I have explained the Tab App&#8217;s code in my previous post, so reading that is still a good idea. Now let us go see the content of the config.html file, we are going to do some changes here. As I combined both Vuejs application and out Teams Tab app to one single application I thought to create an Azure Web App to host this application, instead of doing it with an Azure Function App as we did on the first blog. So here is your config.html file.</p>



<script src="https://gist.github.com/SibeeshVenu/d7fac90b5e28689254dc8a9347d317e7.js"></script>



<p>The only change that I did is changing websiteUrl, contentUrl in the code. We will be creating this website soon, no worries. We will have to do the changes in the manifest.json file too. Here is your manifest file.</p>



<script src="https://gist.github.com/SibeeshVenu/ebfdc823d1e474b87dc1d06b2cbd619e.js"></script>



<p>Please be noted that we have changed the configurationUrl and add our new URL to the validDomains. <strong>This step is very important</strong>.</p>



<h3 class="wp-block-heading">Create a Build Pipeline for Our App</h3>



<p>To create a build pipeline, go to your Azure DevOps and select your project, and then click on New Pipeline after clicking on the Pipelines section. You will be asked to select your repository and the pipeline configuration. As a configuration, select Node.js with Vue.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="918" height="505" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Nodejs-with-Vue.png" alt="" class="wp-image-14140" srcset="/wp-content/uploads/2020/06/Nodejs-with-Vue.png 918w, /wp-content/uploads/2020/06/Nodejs-with-Vue-300x165.png 300w, /wp-content/uploads/2020/06/Nodejs-with-Vue-768x422.png 768w, /wp-content/uploads/2020/06/Nodejs-with-Vue-425x234.png 425w" sizes="(max-width: 918px) 100vw, 918px" /><figcaption>Nodejs with Vue</figcaption></figure>



<p>And in the section &#8220;Review your pipeline YAML&#8221; replace the content with the below codes.</p>



<script src="https://gist.github.com/SibeeshVenu/098cbc3ec8655de89591a88b6d5c7e85.js"></script>



<p>Now all you have to do is to click Save and run button. You can already see that we are building our application, copying the artifacts from the dist folder to Build.ArtifactStagingDirectory and then publish it with the name www. Sounds good? So once the build is successful you should see your artifacts as preceding.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="955" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs-1024x955.png" alt="" class="wp-image-14141" srcset="/wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs-1024x955.png 1024w, /wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs-300x280.png 300w, /wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs-768x717.png 768w, /wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs-425x397.png 425w, /wp-content/uploads/2020/06/Buit-Artifact-Azure-Vuejs.png 1150w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Build Artifact Azure Vuejs</figcaption></figure>



<p>Do you remember that we placed all of our Tab App related contents in the public folder of the Vue app? The artifacts generated will have those files too. Now we need to set up our Release pipeline, but before that, we should create an Azure Web App in the Azure portal.</p>



<h3 class="wp-block-heading">Create an Azure Web App</h3>



<p>Creating an Azure Web App is really straight forward, I am sure that you will be able to create one. Click on the New Resource and then search for Web App, provide all the information in the form you get now. Once everything is filled, review, and create. That&#8217;s it.  <strong>Remember to give the resource name as the name we gave in the manifest.json, config.html files</strong>.</p>



<h3 class="wp-block-heading">Create a Release Pipeline for Vue App</h3>



<p>As we already have an artifact ready, it is time to create a release pipeline. Go to the Pipelines section in your Azure DevOps and click on Releases, and then click on +New Release Pipeline.  Now select the artifacts you have, and select the Task Azure Web App Deploy. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="442" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task-1024x442.png" alt="" class="wp-image-14142" srcset="/wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task-1024x442.png 1024w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task-300x130.png 300w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task-768x332.png 768w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task-425x184.png 425w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Task.png 1271w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Azure Web App Deploy</figcaption></figure>



<p>And here is how your Task should look like.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="804" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Azure-Web-App-Task-Details-1024x804.png" alt="" class="wp-image-14143" srcset="/wp-content/uploads/2020/06/Azure-Web-App-Task-Details-1024x804.png 1024w, /wp-content/uploads/2020/06/Azure-Web-App-Task-Details-300x235.png 300w, /wp-content/uploads/2020/06/Azure-Web-App-Task-Details-768x603.png 768w, /wp-content/uploads/2020/06/Azure-Web-App-Task-Details-425x334.png 425w, /wp-content/uploads/2020/06/Azure-Web-App-Task-Details.png 1403w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Azure Web App Task Details</figcaption></figure>



<p>Now click Save and run a new release. And if you check the release log, if everything goes well, this is how it should be.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="897" height="479" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Azure-Web-App-Deploy-Log.png" alt="" class="wp-image-14144" srcset="/wp-content/uploads/2020/06/Azure-Web-App-Deploy-Log.png 897w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Log-300x160.png 300w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Log-768x410.png 768w, /wp-content/uploads/2020/06/Azure-Web-App-Deploy-Log-425x227.png 425w" sizes="(max-width: 897px) 100vw, 897px" /><figcaption>Azure Web App Log</figcaption></figure>



<p>Now you should be able to visit your Azure web application and make sure that the index.html, config.html works fine. Because in our next step we are going to install our App in Teams. </p>



<h2 class="wp-block-heading">Install the Vue Tab App</h2>



<p>Now go to the public folder in your Vue application and select the files manifest.json, color.png, outline.png, and right click and create a Zip file. We will be uploading this Zip file in our Teams. If you are unsure how to do this, I have already explained that in <a href="https://sibeeshpassion.com/create-custom-web-apps-for-microsoft-teams-using-azure-function-node-js/#install-the-teams-app-in-teams">our previous blog</a>. Once after the installation, go to your Tab app and I am sure the Vuejs application will be loaded in the tab.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="937" src="https://sibeeshpassion.com/wp-content/uploads/2020/06/Team-Tab-App-Output-1024x937.png" alt="" class="wp-image-14146" srcset="/wp-content/uploads/2020/06/Team-Tab-App-Output-1024x937.png 1024w, /wp-content/uploads/2020/06/Team-Tab-App-Output-300x274.png 300w, /wp-content/uploads/2020/06/Team-Tab-App-Output-768x702.png 768w, /wp-content/uploads/2020/06/Team-Tab-App-Output-1536x1405.png 1536w, /wp-content/uploads/2020/06/Team-Tab-App-Output-425x389.png 425w, /wp-content/uploads/2020/06/Team-Tab-App-Output.png 1710w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Team Tab App Output</figcaption></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>I hope this post was useful and you have learned the below things.</p>



<ol class="wp-block-list"><li>How to create a Vuejs application?</li><li>How to connect a JavaScript SDK Team Tab application with Vuejs app</li><li>How to create an Azure Web App?</li><li>How to create Build Pipeline for Vuejs app in Azure DevOps?</li><li>How to create Release Pipeline for Vuejs app in Azure DevOps?</li><li>How to install the new Vuejs Team Tab app in Microsoft Teams?</li></ol>



<p>There is also another way of doing this with the <a href="https://github.com/pnp/generator-spfx" target="_blank" rel="noreferrer noopener">Generator SPFX</a> , this will help you create the SharePoint web part in Vuejs and the same can be added to the Microsoft Teams as <a href="https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/using-web-part-as-ms-teams-tab?WT.mc_id=AZ-MVP-5001828">explained in this blog</a>.<strong> I may write about this on my next blog. Stay tuned</strong>.</p>



<h2 class="wp-block-heading">Source Code</h2>



<p>Please feel free to check out the repository <a href="https://github.com/SibeeshVenu/Microsoft-Teams-App-with-Vuejs-and-Azure" target="_blank" rel="noreferrer noopener">here</a>.</p>



<h2 class="wp-block-heading">About the Author</h2>



<p>I am yet another developer who is passionate about writing and video creation. I have written close to 500 blogs on my <a href="https://sibeeshpassion.com/" target="_blank" rel="noreferrer noopener">blog</a>. And I upload videos on my YouTube channels <a href="https://www.youtube.com/njanorumalayali" target="_blank" rel="noreferrer noopener">Njan Oru Malayali</a> and <a href="https://www.youtube.com/SibeeshPassion" target="_blank" rel="noreferrer noopener">Sibeesh Passion</a>. Please feel free to follow me.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/create-microsoft-teams-app-using-vuejs-azure-javascript-sdk/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Move Azure DevOps Work Items From One Organization to Another</title>
		<link>https://sibeeshpassion.com/move-azure-devops-work-items-from-one-organization-to-another/</link>
					<comments>https://sibeeshpassion.com/move-azure-devops-work-items-from-one-organization-to-another/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Mon, 09 Mar 2020 15:45:27 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[azure devops]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[azure scrum]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[move workitems azure devops]]></category>
		<category><![CDATA[org to org work items transfer]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14052</guid>

					<description><![CDATA[[toc] Introduction I understand that you need to move all of your Azure DevOps Work Items from one of your organization to another. And that is the reason why you are reading this article, no worries, you came to the right place. At the end of this article, I am sure that you will be able to achieve this. In my previous article, I had shown you how you can move your repository from one organization to another, if you have not read it, consider reading it. Move Work Items to Another DevOps As I mentioned in my previous post [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction</h2>



<p>I understand that you need to move all of your Azure DevOps Work Items from one of your organization to another. And that is the reason why you are reading this article, no worries, you came to the right place. At the end of this article, I am sure that you will be able to achieve this. In my previous article, <a href="https://medium.com/@sibeeshvenu/move-git-repositories-from-one-to-other-organization-in-azure-devops-d15ee4283dc9">I had shown you how you can move your repository from one organization to another</a>, if you have not read it, consider reading it. </p>



<h2 class="wp-block-heading">Move Work Items to Another DevOps </h2>



<p>As I mentioned in my previous post I had already set up a sample project in my source DevOps organization and another in my destination DevOps organization. Then I created a sample user and gave access to both projects.</p>



<h3 class="wp-block-heading">Check the DevOps Project Process</h3>



<p> Now before we start we need to make sure that both of the projects follow the same Process in the DevOps.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="788" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/DevOps-Process-Check-1024x788.png" alt="" class="wp-image-14053" srcset="/wp-content/uploads/2020/03/DevOps-Process-Check-1024x788.png 1024w, /wp-content/uploads/2020/03/DevOps-Process-Check-300x231.png 300w, /wp-content/uploads/2020/03/DevOps-Process-Check-768x591.png 768w, /wp-content/uploads/2020/03/DevOps-Process-Check-425x327.png 425w, /wp-content/uploads/2020/03/DevOps-Process-Check.png 1119w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>DevOps Process Check</figcaption></figure></div>



<h3 class="wp-block-heading">Change the Project Process</h3>



<p>If the process of the two projects is different, then you will end up in many issues in the publishing steps, thus changing it to one is very important. To change, you need to have certain permissions as mentioned in <a href="https://docs.microsoft.com/en-us/azure/devops/organizations/settings/work/change-process-agile-to-scrum?view=azure-devops#prerequisites"><strong>this post</strong></a>. Once you have enough permission, go to your organization settings and click on the Process menu under Boards.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="703" height="1024" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Organization-Process-Settings-703x1024.png" alt="" class="wp-image-14054" srcset="/wp-content/uploads/2020/03/Organization-Process-Settings-703x1024.png 703w, /wp-content/uploads/2020/03/Organization-Process-Settings-206x300.png 206w, /wp-content/uploads/2020/03/Organization-Process-Settings-768x1119.png 768w, /wp-content/uploads/2020/03/Organization-Process-Settings-377x550.png 377w, /wp-content/uploads/2020/03/Organization-Process-Settings.png 1011w" sizes="(max-width: 703px) 100vw, 703px" /><figcaption>Organization Process Settings</figcaption></figure></div>



<p>Now you should be able to select the projects which are assigned to each process, clicking the project number will redirect you to the list.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="182" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/DevOps-Project-and-Process-1024x182.png" alt="" class="wp-image-14055" srcset="/wp-content/uploads/2020/03/DevOps-Project-and-Process-1024x182.png 1024w, /wp-content/uploads/2020/03/DevOps-Project-and-Process-300x53.png 300w, /wp-content/uploads/2020/03/DevOps-Project-and-Process-768x136.png 768w, /wp-content/uploads/2020/03/DevOps-Project-and-Process-1536x273.png 1536w, /wp-content/uploads/2020/03/DevOps-Project-and-Process-2048x364.png 2048w, /wp-content/uploads/2020/03/DevOps-Project-and-Process-425x76.png 425w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>DevOps Project and Process</figcaption></figure></div>



<p>Now click on the three dots you see near to the project name and then click on the Change button.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="350" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Change-the-DevOps-Process-1024x350.png" alt="" class="wp-image-14056" srcset="/wp-content/uploads/2020/03/Change-the-DevOps-Process-1024x350.png 1024w, /wp-content/uploads/2020/03/Change-the-DevOps-Process-300x102.png 300w, /wp-content/uploads/2020/03/Change-the-DevOps-Process-768x262.png 768w, /wp-content/uploads/2020/03/Change-the-DevOps-Process-425x145.png 425w, /wp-content/uploads/2020/03/Change-the-DevOps-Process.png 1204w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Change the DevOps Process</figcaption></figure></div>



<p>Just select the process and click Save. And also make sure that you have enabled all the Backlog Navigation Levels. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1025" height="989" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Backlog-Navigation-Levels.png" alt="" class="wp-image-14058" srcset="/wp-content/uploads/2020/03/Backlog-Navigation-Levels.png 1025w, /wp-content/uploads/2020/03/Backlog-Navigation-Levels-300x289.png 300w, /wp-content/uploads/2020/03/Backlog-Navigation-Levels-768x741.png 768w, /wp-content/uploads/2020/03/Backlog-Navigation-Levels-425x410.png 425w" sizes="(max-width: 1025px) 100vw, 1025px" /><figcaption>Backlog Navigation Levels</figcaption></figure></div>



<p>You are done!.</p>



<h3 class="wp-block-heading">Create Query to Get the Work Items</h3>



<p>Now let&#8217;s say that I have below sample work items, and I need to create a query to get all these work items. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="966" height="651" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Work-Items-in-Source-Organization.png" alt="" class="wp-image-14057" srcset="/wp-content/uploads/2020/03/Work-Items-in-Source-Organization.png 966w, /wp-content/uploads/2020/03/Work-Items-in-Source-Organization-300x202.png 300w, /wp-content/uploads/2020/03/Work-Items-in-Source-Organization-768x518.png 768w, /wp-content/uploads/2020/03/Work-Items-in-Source-Organization-425x286.png 425w" sizes="(max-width: 966px) 100vw, 966px" /><figcaption>Work Items in Source Organization</figcaption></figure></div>



<p>Click on the Queries menu on the left side and then click on the +New Query button. In the Type of Query button, click on the &#8220;Tree of work items&#8221; if you need the tree structure in the work items otherwise just click on &#8220;Flat list of work items&#8221;</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="719" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Tree-of-Work-Items-1024x719.png" alt="" class="wp-image-14059" srcset="/wp-content/uploads/2020/03/Tree-of-Work-Items-1024x719.png 1024w, /wp-content/uploads/2020/03/Tree-of-Work-Items-300x211.png 300w, /wp-content/uploads/2020/03/Tree-of-Work-Items-768x539.png 768w, /wp-content/uploads/2020/03/Tree-of-Work-Items-425x298.png 425w, /wp-content/uploads/2020/03/Tree-of-Work-Items.png 1087w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Tree of Work Items</figcaption></figure></div>



<p>Change the <em>Type of tree</em> dropdown value to Parent/Child, and then run the query.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="990" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Parent-Child-Query-DevOps-1024x990.png" alt="" class="wp-image-14061" srcset="/wp-content/uploads/2020/03/Parent-Child-Query-DevOps-1024x990.png 1024w, /wp-content/uploads/2020/03/Parent-Child-Query-DevOps-300x290.png 300w, /wp-content/uploads/2020/03/Parent-Child-Query-DevOps-768x743.png 768w, /wp-content/uploads/2020/03/Parent-Child-Query-DevOps-425x411.png 425w, /wp-content/uploads/2020/03/Parent-Child-Query-DevOps.png 1096w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Parent-Child Query DevOps</figcaption></figure></div>



<p>Just save the query, we will be using that very soon.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="918" height="557" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/DevOps-Export-Query.png" alt="" class="wp-image-14060" srcset="/wp-content/uploads/2020/03/DevOps-Export-Query.png 918w, /wp-content/uploads/2020/03/DevOps-Export-Query-300x182.png 300w, /wp-content/uploads/2020/03/DevOps-Export-Query-768x466.png 768w, /wp-content/uploads/2020/03/DevOps-Export-Query-425x258.png 425w" sizes="(max-width: 918px) 100vw, 918px" /><figcaption>DevOps Export Query</figcaption></figure></div>



<h3 class="wp-block-heading">Install the Azure DevOps Office Integration Tool</h3>



<p>To download the tool, please visit <a href="https://visualstudio.microsoft.com/downloads/#other-family">here</a>. Once you install the same, you should see a Team tab in your Excel, yes, we are going to play with Excel now.</p>



<h3 class="wp-block-heading">Get Data From Azure DevOps in Excel</h3>



<p>Click on the Team button and then New List, you will see an option to select the server, or if you don&#8217;t have any you need to add it by clicking the servers button.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="857" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel-1024x857.png" alt="" class="wp-image-14062" srcset="/wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel-1024x857.png 1024w, /wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel-300x251.png 300w, /wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel-768x643.png 768w, /wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel-425x356.png 425w, /wp-content/uploads/2020/03/Connect-Azure-DevOps-from-Excel.png 1408w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Connect Azure DevOps from Excel</figcaption></figure></div>



<p>Now add both Source and Destination DevOps servers.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="744" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-1024x744.png" alt="" class="wp-image-14063" srcset="/wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-1024x744.png 1024w, /wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-300x218.png 300w, /wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-768x558.png 768w, /wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-315x230.png 315w, /wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel-425x309.png 425w, /wp-content/uploads/2020/03/Add-DevOps-Servers-in-Excel.png 1185w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Add DevOps Servers in Excel</figcaption></figure></div>



<p>Now it is time to connect our Source DevOps server.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="850" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Connect-DevOps-Server-1024x850.png" alt="" class="wp-image-14077" srcset="/wp-content/uploads/2020/03/Connect-DevOps-Server-1024x850.png 1024w, /wp-content/uploads/2020/03/Connect-DevOps-Server-300x249.png 300w, /wp-content/uploads/2020/03/Connect-DevOps-Server-768x637.png 768w, /wp-content/uploads/2020/03/Connect-DevOps-Server-425x353.png 425w, /wp-content/uploads/2020/03/Connect-DevOps-Server.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption> Connect DevOps Server </figcaption></figure></div>



<p>Click on the New List under the Team tab, will give you an option to select the query that we created before, just select the same and press Ok.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="921" height="645" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Select-DevOps-Query.png" alt="" class="wp-image-14065" srcset="/wp-content/uploads/2020/03/Select-DevOps-Query.png 921w, /wp-content/uploads/2020/03/Select-DevOps-Query-300x210.png 300w, /wp-content/uploads/2020/03/Select-DevOps-Query-768x538.png 768w, /wp-content/uploads/2020/03/Select-DevOps-Query-425x298.png 425w" sizes="(max-width: 921px) 100vw, 921px" /><figcaption>Select DevOps Query</figcaption></figure></div>



<p>This will fetch all the work items from your source DevOps. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="201" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-1024x201.png" alt="" class="wp-image-14066" srcset="/wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-1024x201.png 1024w, /wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-300x59.png 300w, /wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-768x151.png 768w, /wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-1536x302.png 1536w, /wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel-425x84.png 425w, /wp-content/uploads/2020/03/DevOps-Work-Items-in-Excel.png 1840w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>DevOps Work Items in Excel</figcaption></figure></div>



<p> Click on the Team button, select any columns in the excel sheet, click on the <em>Choose Column</em>. Select All Work Items Types in the dropdown and then move all the columns to the right side.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="856" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Show-all-the-Columns-1024x856.png" alt="" class="wp-image-14069" srcset="/wp-content/uploads/2020/03/Show-all-the-Columns-1024x856.png 1024w, /wp-content/uploads/2020/03/Show-all-the-Columns-300x251.png 300w, /wp-content/uploads/2020/03/Show-all-the-Columns-768x642.png 768w, /wp-content/uploads/2020/03/Show-all-the-Columns-425x355.png 425w, /wp-content/uploads/2020/03/Show-all-the-Columns.png 1492w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Show all the Columns</figcaption></figure></div>



<p>This will show all the columns in the excel sheet with data. Now it is time to publish these work items to our destination DevOps. </p>



<h3 class="wp-block-heading">Publish Work Items to Destination DevOps</h3>



<p>To do this, open another Excel then click on the New List button under the Team Tab. Now select the destination DevOps and connect. In the next Pop up, select the <em>Input List</em> option.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="921" height="645" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Input-List.png" alt="" class="wp-image-14067" srcset="/wp-content/uploads/2020/03/Input-List.png 921w, /wp-content/uploads/2020/03/Input-List-300x210.png 300w, /wp-content/uploads/2020/03/Input-List-768x538.png 768w, /wp-content/uploads/2020/03/Input-List-425x298.png 425w" sizes="(max-width: 921px) 100vw, 921px" /><figcaption>Input List</figcaption></figure></div>



<p>You will be seeing some columns in the excel sheet now. Click the Team button and then <em>Add Tree Level</em>, this will make sure that we have the tree structure in our DEstination DevOps too. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Please make sure that you are adding as many levels you have in your Source DevOps Excel sheet. In our case, it is 4.</p><cite>Tree Level</cite></blockquote>



<p>Now click on the Choose Columns and add all the columns as we did with the Source Excel Sheet. <strong>Please make sure that both Excel sheet columns are in the same order.</strong> You can order the fields in the order you wish. Once both excel sheet has the same order, then select the data from the source and then select the first data cell in the destination excel sheet and then press Enter. This is how the data looks like in the destination Excel.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="228" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Pasted-Data-1024x228.png" alt="" class="wp-image-14071" srcset="/wp-content/uploads/2020/03/Pasted-Data-1024x228.png 1024w, /wp-content/uploads/2020/03/Pasted-Data-300x67.png 300w, /wp-content/uploads/2020/03/Pasted-Data-768x171.png 768w, /wp-content/uploads/2020/03/Pasted-Data-1536x342.png 1536w, /wp-content/uploads/2020/03/Pasted-Data-425x95.png 425w, /wp-content/uploads/2020/03/Pasted-Data.png 1680w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Pasted Data</figcaption></figure></div>



<p>Please be noted that the above screenshot doesn&#8217;t include all the columns. In your case, it should be there in the excel sheet.</p>



<p>Now select any column in the Excel sheet and then click on the Publish button under the Team tab. By chance, if you are getting any errors you may have to manually review the same and assign the right values.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="916" height="984" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Work-Item-Publishing-Errors.png" alt="" class="wp-image-14072" srcset="/wp-content/uploads/2020/03/Work-Item-Publishing-Errors.png 916w, /wp-content/uploads/2020/03/Work-Item-Publishing-Errors-279x300.png 279w, /wp-content/uploads/2020/03/Work-Item-Publishing-Errors-768x825.png 768w, /wp-content/uploads/2020/03/Work-Item-Publishing-Errors-425x457.png 425w" sizes="(max-width: 916px) 100vw, 916px" /><figcaption>Work Item Publishing Errors</figcaption></figure></div>



<p>If everything goes well, you should see all your work items in your destination Azure DevOps.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="830" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/New-Work-Items-1024x830.png" alt="" class="wp-image-14073" srcset="/wp-content/uploads/2020/03/New-Work-Items-1024x830.png 1024w, /wp-content/uploads/2020/03/New-Work-Items-300x243.png 300w, /wp-content/uploads/2020/03/New-Work-Items-768x622.png 768w, /wp-content/uploads/2020/03/New-Work-Items-425x344.png 425w, /wp-content/uploads/2020/03/New-Work-Items.png 1191w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>New Work Items</figcaption></figure></div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Thanks a lot for reading this article. I hope now you have learned about</p>



<ul class="wp-block-list"><li>how to use queries in Azure DevOps</li><li>how to use Azure DevOps integration tools for Office</li><li>how to change the project Process</li><li>how to move the work items from one DevOps to another</li></ul>



<p>If you have learned anything else from this article, please let me know in the comment section.</p>



<h2 class="wp-block-heading">Follow me</h2>



<p>If you like this article, consider following me, haha!.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/move-azure-devops-work-items-from-one-organization-to-another/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Move Git Repositories From One to Other Organization in Azure DevOps</title>
		<link>https://sibeeshpassion.com/move-git-repositories-from-one-to-other-organization-in-azure-devops/</link>
					<comments>https://sibeeshpassion.com/move-git-repositories-from-one-to-other-organization-in-azure-devops/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Fri, 06 Mar 2020 14:49:50 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[azure devops]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git repository manage]]></category>
		<category><![CDATA[move git repository to other]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14033</guid>

					<description><![CDATA[[toc] Introduction For this topic, I strongly believe that there is no need for an introduction as you already know what is Git and Azure DevOps, and I am guessing that you need to move your codebase or repositories from one of your organization to another. That is the reason why you are here. I believe that there is no direct way of achieving this, there may be some paid tools which do the tricks, but I didn&#8217;t want to pay anything for this small requirement. So let&#8217;s just see how I achieved this. Trust me this is not a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction</h2>



<p>For this topic, I strongly believe that there is no need for an introduction as you already know what is Git and Azure DevOps, and I am guessing that you need to move your codebase or repositories from one of your organization to another. That is the reason why you are here. I believe that there is no direct way of achieving this, there may be some paid tools which do the tricks, but I didn&#8217;t want to pay anything for this small requirement. So let&#8217;s just see how I achieved this. Trust me this is not a tough task as it sounds. </p>



<h2 class="wp-block-heading">Background</h2>



<p>I was working with a project and my customer wanted to move the repositories to their Azure DevOps from ours. So before I do it directly with their DevOps, I wanted to try this out. So I created my own Azure DevOps and moved a sample repository to there from my company Azure DevOps. </p>



<h2 class="wp-block-heading">Move Repositories to Another Organization&#8217;s DevOps</h2>



<h3 class="wp-block-heading">Add a User to Both Organization</h3>



<p>To start doing this process, you should add a user to both projects. I created a sample user (tester@njanorumalayali.com) and assign the contributor access for the two repositories. If you don&#8217;t have permission to do so, please contact your project administrator and get it done. Once that is done, you can download all the codes from your Source Organization repository. To do that it is a good idea to use an SSH connection. </p>



<h3 class="wp-block-heading">Configure SSH Key</h3>



<p>To create one Generate the RSA key pair by running the <strong>ssh-keygen</strong> command. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="709" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Generate-SSH-Keys-1024x709.png" alt="" class="wp-image-14034" srcset="/wp-content/uploads/2020/03/Generate-SSH-Keys-1024x709.png 1024w, /wp-content/uploads/2020/03/Generate-SSH-Keys-300x208.png 300w, /wp-content/uploads/2020/03/Generate-SSH-Keys-768x532.png 768w, /wp-content/uploads/2020/03/Generate-SSH-Keys-425x294.png 425w, /wp-content/uploads/2020/03/Generate-SSH-Keys.png 1099w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Generate SSH Keys</figcaption></figure></div>



<h3 class="wp-block-heading">Update the SSH Key in Source DevOps and Clone the Repository</h3>



<p>Now go to your source organization and add the Public Key Data under the <em>SSH public keys</em> section. You can find this public key in <code>.ssh</code> folder.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="703" height="274" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Public-Key-in-SSH-Folder.png" alt="" class="wp-image-14044" srcset="/wp-content/uploads/2020/03/Public-Key-in-SSH-Folder.png 703w, /wp-content/uploads/2020/03/Public-Key-in-SSH-Folder-300x117.png 300w, /wp-content/uploads/2020/03/Public-Key-in-SSH-Folder-425x166.png 425w" sizes="(max-width: 703px) 100vw, 703px" /><figcaption>Public Key in SSH Folder.png</figcaption></figure></div>



<p>Let&#8217;s add a new SSH key now.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="500" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Add-a-new-SSH-Key-1024x500.png" alt="" class="wp-image-14035" srcset="/wp-content/uploads/2020/03/Add-a-new-SSH-Key-1024x500.png 1024w, /wp-content/uploads/2020/03/Add-a-new-SSH-Key-300x146.png 300w, /wp-content/uploads/2020/03/Add-a-new-SSH-Key-768x375.png 768w, /wp-content/uploads/2020/03/Add-a-new-SSH-Key-1536x750.png 1536w, /wp-content/uploads/2020/03/Add-a-new-SSH-Key-425x207.png 425w, /wp-content/uploads/2020/03/Add-a-new-SSH-Key.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Add a new SSH Key</figcaption></figure></div>



<p>Now we can get the SSH clone URL and clone our repository. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="460" height="312" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Clone-Repository-Using-SSH.png" alt="" class="wp-image-14036" srcset="/wp-content/uploads/2020/03/Clone-Repository-Using-SSH.png 460w, /wp-content/uploads/2020/03/Clone-Repository-Using-SSH-300x203.png 300w, /wp-content/uploads/2020/03/Clone-Repository-Using-SSH-425x288.png 425w" sizes="(max-width: 460px) 100vw, 460px" /><figcaption>Clone Repository Using SSH</figcaption></figure></div>



<p>You should get a result as in the preceding image if everything correct. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="344" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Clone-Result-1024x344.png" alt="" class="wp-image-14037" srcset="/wp-content/uploads/2020/03/Clone-Result-1024x344.png 1024w, /wp-content/uploads/2020/03/Clone-Result-300x101.png 300w, /wp-content/uploads/2020/03/Clone-Result-768x258.png 768w, /wp-content/uploads/2020/03/Clone-Result-425x143.png 425w, /wp-content/uploads/2020/03/Clone-Result.png 1123w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Clone Result</figcaption></figure></div>



<h3 class="wp-block-heading">Check out all the Branches and Tags</h3>



<p>Now let us just go inside of the cloned project and make sure all the branches are available by running <strong><code>git branch -a</code></strong>.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="560" height="181" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/git-branch-all.png" alt="" class="wp-image-14038" srcset="/wp-content/uploads/2020/03/git-branch-all.png 560w, /wp-content/uploads/2020/03/git-branch-all-300x97.png 300w, /wp-content/uploads/2020/03/git-branch-all-425x137.png 425w" sizes="(max-width: 560px) 100vw, 560px" /><figcaption>git branch all</figcaption></figure></div>



<p>Now it is time to <strong>check out all the branches locally</strong> so that they can be pushed to our new Organization DevOps. This is really important if you need those branches. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="364" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Check-out-all-the-branches-1024x364.png" alt="" class="wp-image-14039" srcset="/wp-content/uploads/2020/03/Check-out-all-the-branches-1024x364.png 1024w, /wp-content/uploads/2020/03/Check-out-all-the-branches-300x107.png 300w, /wp-content/uploads/2020/03/Check-out-all-the-branches-768x273.png 768w, /wp-content/uploads/2020/03/Check-out-all-the-branches-1536x546.png 1536w, /wp-content/uploads/2020/03/Check-out-all-the-branches-425x151.png 425w, /wp-content/uploads/2020/03/Check-out-all-the-branches.png 1597w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Check out all the branches</figcaption></figure></div>



<p>Now fetch all of your tags too by running <code>git fetch --tags</code>. Once that is done you can verify once again whether all the branches are downloaded locally or not. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="427" height="205" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/All-branches-downloaded-locally.png" alt="" class="wp-image-14040" srcset="/wp-content/uploads/2020/03/All-branches-downloaded-locally.png 427w, /wp-content/uploads/2020/03/All-branches-downloaded-locally-300x144.png 300w, /wp-content/uploads/2020/03/All-branches-downloaded-locally-425x204.png 425w" sizes="(max-width: 427px) 100vw, 427px" /><figcaption>All branches downloaded locally</figcaption></figure></div>



<h3 class="wp-block-heading">Update the SSH Key in the Destination DevOps</h3>



<p>Follow the same procedure as you did for the source DevOps and update the SSH public key there.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="956" height="445" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Destination-DevOps-SSH.png" alt="" class="wp-image-14041" srcset="/wp-content/uploads/2020/03/Destination-DevOps-SSH.png 956w, /wp-content/uploads/2020/03/Destination-DevOps-SSH-300x140.png 300w, /wp-content/uploads/2020/03/Destination-DevOps-SSH-768x357.png 768w, /wp-content/uploads/2020/03/Destination-DevOps-SSH-425x198.png 425w" sizes="(max-width: 956px) 100vw, 956px" /><figcaption>Destination DevOps SSH</figcaption></figure></div>



<h3 class="wp-block-heading">Remove Old and Add New Origin </h3>



<p>Now comes the important step. Here we are removing the old Origin and add our new Origin so that we can push all our changes including the branches and tags. So we are going to run the below commands one by one.</p>



<pre class="wp-block-preformatted">git remote rm origin
git remote add origin <new ssh origin from destination devops>
git push origin --all
git push --tags</pre>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="473" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-1024x473.png" alt="" class="wp-image-14042" srcset="/wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-1024x473.png 1024w, /wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-300x139.png 300w, /wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-768x355.png 768w, /wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-1536x709.png 1536w, /wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin-425x196.png 425w, /wp-content/uploads/2020/03/Remove-Old-and-Add-New-Origin.png 1579w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Remove Old and Add New Origin</figcaption></figure></div>



<p>As you can see in the above image, all of our codebases now is been uploaded to the new Azure DevOps. I told you already it is not that hard as it sounds.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="762" height="459" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/All-the-branches-in-new-DevOps.png" alt="" class="wp-image-14043" srcset="/wp-content/uploads/2020/03/All-the-branches-in-new-DevOps.png 762w, /wp-content/uploads/2020/03/All-the-branches-in-new-DevOps-300x181.png 300w, /wp-content/uploads/2020/03/All-the-branches-in-new-DevOps-425x256.png 425w" sizes="(max-width: 762px) 100vw, 762px" /><figcaption>All the branches in new DevOps</figcaption></figure></div>



<p>One thing to notice here is that the new repository will contain your branch history too. </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="958" height="1024" src="https://sibeeshpassion.com/wp-content/uploads/2020/03/History-of-the-branches-958x1024.png" alt="" class="wp-image-14050" srcset="/wp-content/uploads/2020/03/History-of-the-branches-958x1024.png 958w, /wp-content/uploads/2020/03/History-of-the-branches-281x300.png 281w, /wp-content/uploads/2020/03/History-of-the-branches-768x821.png 768w, /wp-content/uploads/2020/03/History-of-the-branches-425x454.png 425w, /wp-content/uploads/2020/03/History-of-the-branches.png 1052w" sizes="(max-width: 958px) 100vw, 958px" /><figcaption>History of the branches</figcaption></figure></div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Thanks a lot for reading this article. I hope now you have learned about</p>



<ul class="wp-block-list"><li>the basic git commands</li><li>how to configure SSH connection in Azure DevOps</li><li>how to push the repositories to another DevOps</li></ul>



<p>If you have learned anything else from this article, please let me know in the comment section.</p>



<h2 class="wp-block-heading">Follow me</h2>



<p>If you like this article, consider following me, haha!.</p>



<ul class="wp-block-list"><li><a href="https://github.com/SibeeshVenu">GitHub</a></li><li><a href="https://medium.com/@sibeeshvenu">medium</a></li><li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li></ul>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/move-git-repositories-from-one-to-other-organization-in-azure-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Azure Function Build and Release Pipeline in Azure DevOps CI CD</title>
		<link>https://sibeeshpassion.com/azure-function-build-and-release-pipeline-in-azure-devops-ci-cd/</link>
					<comments>https://sibeeshpassion.com/azure-function-build-and-release-pipeline-in-azure-devops-ci-cd/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Tue, 09 Jul 2019 11:10:48 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[Azure Function]]></category>
		<category><![CDATA[Build Pipeline]]></category>
		<category><![CDATA[CI and CD]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Release Pipeline]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=13794</guid>

					<description><![CDATA[[toc] Introduction Playing with Azure Function is always a nice feeling, and it is very important to configure both build and release pipeline for all of your applications, Azure Functions are not different. In this article, we will see how we can create both build and release pipeline in Azure DevOps for our Azure Function application. I hope you will like it. Prerequisites You should have an Azure Function application to configure the build and release pipeline for the same. You can either create a new one in the Azure portal, or you can use any existing azure functions available [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction</h2>



<p>Playing with <a href="https://sibeeshpassion.com/tag/azure-function/">Azure Function</a> is always a nice feeling, and it is very important to configure both build and release pipeline for all of your applications, Azure Functions are not different. In this article, we will see how we can create both build and release pipeline in <a href="https://sibeeshpassion.com/tag/azure-devops/">Azure DevOps</a> for our Azure Function application. I hope you will like it.</p>



<h2 class="wp-block-heading">Prerequisites </h2>



<p>You should have an Azure Function application to configure the build and release pipeline for the same. You can either create a <a href="https://sibeeshpassion.com/azure-function-as-output-job-topology-of-an-azure-stream-analytics-job/#creating-an-azure-function-solution-and-function">new one in the Azure portal</a>, or you can use any existing azure functions available in internet, for example you can see one <a href="https://github.com/SibeeshVenu/Realtime-IoT-Device-Data-using-Azure-SignalR-and-Azure-Function-in-Angular">here</a>.</p>



<h2 class="wp-block-heading">Setting Build Pipeline for Azure Function</h2>



<p>Go to your Azure DevOps and click on Builds</p>



<figure class="wp-block-image"><img decoding="async" width="505" height="581" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Select-Build.png" alt="" class="wp-image-13795" srcset="/wp-content/uploads/2019/07/Select-Build.png 505w, /wp-content/uploads/2019/07/Select-Build-261x300.png 261w, /wp-content/uploads/2019/07/Select-Build-425x489.png 425w" sizes="(max-width: 505px) 100vw, 505px" /><figcaption>Select Builds</figcaption></figure>



<p>Now you should see an option to select where your code is available. You can choose accordingly.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="542" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Select-Code-Source.png" alt="" class="wp-image-13796" srcset="/wp-content/uploads/2019/07/Select-Code-Source.png 650w, /wp-content/uploads/2019/07/Select-Code-Source-300x250.png 300w, /wp-content/uploads/2019/07/Select-Code-Source-425x354.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Select Code Source</figcaption></figure>



<p>As my project is in Azure repository, I will select that. Please be noted that I will be using the classic editor to create the pipeline now, so that I can show the steps with the screenshots. You should be able to see the final yml file at the end of the configuration.</p>



<p>Now you can select the template of your project, I will select .Net Core as the template as my Azure Function is in .Net Core.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="319" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Select-Template.png" alt="" class="wp-image-13797" srcset="/wp-content/uploads/2019/07/Select-Template.png 650w, /wp-content/uploads/2019/07/Select-Template-300x147.png 300w, /wp-content/uploads/2019/07/Select-Template-425x209.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Asp.Net Core as Template</figcaption></figure>



<p>Now you can see that our Pipeline is created with some default tasks and settings as follows.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="586" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Pipeline-Tasks.png" alt="" class="wp-image-13824" srcset="/wp-content/uploads/2019/07/Pipeline-Tasks.png 650w, /wp-content/uploads/2019/07/Pipeline-Tasks-300x270.png 300w, /wp-content/uploads/2019/07/Pipeline-Tasks-425x383.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Pipeline Taks</figcaption></figure>



<figure class="wp-block-image"><img decoding="async" width="650" height="428" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Pipeline-Settings.png" alt="" class="wp-image-13799" srcset="/wp-content/uploads/2019/07/Pipeline-Settings.png 650w, /wp-content/uploads/2019/07/Pipeline-Settings-300x198.png 300w, /wp-content/uploads/2019/07/Pipeline-Settings-425x280.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Pipeline Settings for Azure Function</figcaption></figure>



<p>As everything is already created for us, let us save and queue the build. Please make sure that your source code branch is valid and you had verified the build. I forgot to do this, and I was getting the below error, as there was some issue with my code (there was an additional dot(.) in my code, I added it by mistake).</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="696" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Initial-Build-Run-Error.png" alt="" class="wp-image-13800" srcset="/wp-content/uploads/2019/07/Initial-Build-Run-Error.png 650w, /wp-content/uploads/2019/07/Initial-Build-Run-Error-280x300.png 280w, /wp-content/uploads/2019/07/Initial-Build-Run-Error-425x455.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Initial Build Error</figcaption></figure>



<p>So I edited my code and build, and then initiate a manual build again. But even after that I was getting an error as &#8220;No web project was found in the repository. Web projects are identified by presence of either a web.config file or wwwroot folder in the directory&#8221;.</p>



<figure class="wp-block-image"><img decoding="async" width="651" height="114" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Second-Build-Error.png" alt="" class="wp-image-13801" srcset="/wp-content/uploads/2019/07/Second-Build-Error.png 651w, /wp-content/uploads/2019/07/Second-Build-Error-300x53.png 300w, /wp-content/uploads/2019/07/Second-Build-Error-425x74.png 425w" sizes="(max-width: 651px) 100vw, 651px" /><figcaption>Second Build Error</figcaption></figure>



<p>The reason for this is, that by default the &#8220;Publish Web Projects&#8221; is enabled in the Publish task. As ours is not a web project, and if this option is enabled the Publish task will look for a web project in the repository and run the publish command. If we have a web.config file or a wwwroot folder in the directory, it is been treated as a web project. </p>



<p>We have to disable this option as it is not applicable for our project, as it is not a web project. To do so, please go to your Publish task.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="576" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/All-Tasks.png" alt="" class="wp-image-13826" srcset="/wp-content/uploads/2019/07/All-Tasks.png 650w, /wp-content/uploads/2019/07/All-Tasks-300x266.png 300w, /wp-content/uploads/2019/07/All-Tasks-425x377.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>All Tasks</figcaption></figure>



<p>Now you should deselect the &#8220;Publish Web Projects&#8221; option.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="613" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Unselect-Publish-Web-Project-Option.png" alt="" class="wp-image-13803" srcset="/wp-content/uploads/2019/07/Unselect-Publish-Web-Project-Option.png 650w, /wp-content/uploads/2019/07/Unselect-Publish-Web-Project-Option-300x283.png 300w, /wp-content/uploads/2019/07/Unselect-Publish-Web-Project-Option-425x401.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Deselect  Publish Web Projects </figcaption></figure>



<p>Now save your build configuration and queue a new build. If everything goes well, you should see that your build is successful.</p>



<figure class="wp-block-image"><img decoding="async" width="651" height="288" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Build-Success.png" alt="" class="wp-image-13804" srcset="/wp-content/uploads/2019/07/Build-Success.png 651w, /wp-content/uploads/2019/07/Build-Success-300x133.png 300w, /wp-content/uploads/2019/07/Build-Success-425x188.png 425w" sizes="(max-width: 651px) 100vw, 651px" /><figcaption>Build Success</figcaption></figure>



<p>If you wish to see the YAML code of a task, you should be able to see it if you click on &#8220;View YAML&#8221; link.</p>



<figure class="wp-block-image"><img decoding="async" width="1000" height="208" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/View-YAML-of-one-Task.png" alt="" class="wp-image-13834" srcset="/wp-content/uploads/2019/07/View-YAML-of-one-Task.png 1000w, /wp-content/uploads/2019/07/View-YAML-of-one-Task-300x62.png 300w, /wp-content/uploads/2019/07/View-YAML-of-one-Task-768x160.png 768w, /wp-content/uploads/2019/07/View-YAML-of-one-Task-425x88.png 425w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>Please do not forget to enable if you need to trigger the build automatically when there is a check in happened in the repository.</p>



<figure class="wp-block-image"><img decoding="async" width="1004" height="97" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Enable-Disable-Continous-Integration.png" alt="" class="wp-image-13808" srcset="/wp-content/uploads/2019/07/Enable-Disable-Continous-Integration.png 1004w, /wp-content/uploads/2019/07/Enable-Disable-Continous-Integration-300x29.png 300w, /wp-content/uploads/2019/07/Enable-Disable-Continous-Integration-768x74.png 768w, /wp-content/uploads/2019/07/Enable-Disable-Continous-Integration-425x41.png 425w" sizes="(max-width: 1004px) 100vw, 1004px" /><figcaption>Enable or Disable Continuous Integration </figcaption></figure>



<h2 class="wp-block-heading">Setting Release Pipeline for Azure Function</h2>



<p>Now that we have got our build successful, let us go ahead and create a release pipeline for our Azure Function. But before we do that, we need to create a service connection in our Azure DevOps project. To create one, please go to your Azure DevOps projects settings -&gt; Pipelines -&gt; Service Connections. </p>



<figure class="wp-block-image"><img decoding="async" width="1000" height="690" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Azure-Resource-Manager-Connection.png" alt="" class="wp-image-13809" srcset="/wp-content/uploads/2019/07/Azure-Resource-Manager-Connection.png 1000w, /wp-content/uploads/2019/07/Azure-Resource-Manager-Connection-300x207.png 300w, /wp-content/uploads/2019/07/Azure-Resource-Manager-Connection-768x530.png 768w, /wp-content/uploads/2019/07/Azure-Resource-Manager-Connection-425x293.png 425w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption>Azure Resource Manager Connection</figcaption></figure>



<p>Once it is created, you should see the same under your service connections slab. Now go to the Pipelines section of your Azure DevOps project and click on Releases and the click on New pipeline and select Azure App Service Deployment as the template.</p>



<figure class="wp-block-image"><img decoding="async" width="1024" height="370" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task-1024x370.png" alt="" class="wp-image-13810" srcset="/wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task-1024x370.png 1024w, /wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task-300x108.png 300w, /wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task-768x278.png 768w, /wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task-425x154.png 425w, /wp-content/uploads/2019/07/Azure-App-Service-Deployment-Task.png 1176w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Azure App Service Deployment</figcaption></figure>



<p>You should see this task in the Task section of your pipeline. If you are unable to see the service connection that you had created on the right panel, just remove the task and add the same again and then check. Your task definition should be looking as below.</p>



<figure class="wp-block-image"><img decoding="async" width="677" height="1024" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Azure-App-Service-Deploy-Task-677x1024.png" alt="" class="wp-image-13811" srcset="/wp-content/uploads/2019/07/Azure-App-Service-Deploy-Task-677x1024.png 677w, /wp-content/uploads/2019/07/Azure-App-Service-Deploy-Task-198x300.png 198w, /wp-content/uploads/2019/07/Azure-App-Service-Deploy-Task-364x550.png 364w, /wp-content/uploads/2019/07/Azure-App-Service-Deploy-Task.png 746w" sizes="(max-width: 677px) 100vw, 677px" /><figcaption>Azure App Service Deploy Task</figcaption></figure>



<p>Once you are done, save your pipeline. And before you create a release, make sure that you had assigned the right build artifacts. Click on Add an artifact.</p>



<figure class="wp-block-image"><img decoding="async" width="1008" height="736" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Release-Pipeline.png" alt="" class="wp-image-13812" srcset="/wp-content/uploads/2019/07/Release-Pipeline.png 1008w, /wp-content/uploads/2019/07/Release-Pipeline-300x219.png 300w, /wp-content/uploads/2019/07/Release-Pipeline-768x561.png 768w, /wp-content/uploads/2019/07/Release-Pipeline-315x230.png 315w, /wp-content/uploads/2019/07/Release-Pipeline-425x310.png 425w" sizes="(max-width: 1008px) 100vw, 1008px" /><figcaption>Add an Artifact Option</figcaption></figure>



<p>Now you should set the artifacts properties.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="728" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Assign-Artifact-Properties.png" alt="" class="wp-image-13814" srcset="/wp-content/uploads/2019/07/Assign-Artifact-Properties.png 650w, /wp-content/uploads/2019/07/Assign-Artifact-Properties-268x300.png 268w, /wp-content/uploads/2019/07/Assign-Artifact-Properties-425x476.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Assign Artifacts Properties </figcaption></figure>



<p>Click on Add and Save your pipeline and then queue a release by clicking on the button Create release. You may get the error &#8221; Error: More than one package matched with specified pattern: d:\a\r1\a\**\*.zip. Please restrain the search pattern&#8221; now.</p>



<figure class="wp-block-image"><img decoding="async" width="1000" height="221" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/More-than-One-Package-Matched.png" alt="" class="wp-image-13836" srcset="/wp-content/uploads/2019/07/More-than-One-Package-Matched.png 1000w, /wp-content/uploads/2019/07/More-than-One-Package-Matched-300x66.png 300w, /wp-content/uploads/2019/07/More-than-One-Package-Matched-768x170.png 768w, /wp-content/uploads/2019/07/More-than-One-Package-Matched-425x94.png 425w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption>Error</figcaption></figure>



<p> The reason behind this is, that your solution has many projects in it and each projects will be having its own zip folder in the artifacts, so to fix this we should specify our Azure Function Project in the Package section of our pipeline task.</p>



<p>Click on the Azure App service Deploy task and the go to the Package or Folder section and then click on the three dots.</p>



<figure class="wp-block-image"><img decoding="async" width="1000" height="145" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Package-or-Folder-Option.png" alt="" class="wp-image-13816" srcset="/wp-content/uploads/2019/07/Package-or-Folder-Option.png 1000w, /wp-content/uploads/2019/07/Package-or-Folder-Option-300x44.png 300w, /wp-content/uploads/2019/07/Package-or-Folder-Option-768x111.png 768w, /wp-content/uploads/2019/07/Package-or-Folder-Option-425x62.png 425w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption>Package or Folder Option</figcaption></figure>



<p>Now you should have an option to select the right zip file.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="676" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Choose-the-Correct-zip.png" alt="" class="wp-image-13817" srcset="/wp-content/uploads/2019/07/Choose-the-Correct-zip.png 650w, /wp-content/uploads/2019/07/Choose-the-Correct-zip-288x300.png 288w, /wp-content/uploads/2019/07/Choose-the-Correct-zip-425x442.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Choose the Right Zip File</figcaption></figure>



<p>Now Create the release again and you should see that the release is successful. You can also see my StackOverflow answer <a href="https://stackoverflow.com/questions/56950661/error-more-than-one-package-matched-with-specified-pattern-azure-function-relea/56950662#56950662">here</a>.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="295" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Release-Dev.png" alt="" class="wp-image-13818" srcset="/wp-content/uploads/2019/07/Release-Dev.png 650w, /wp-content/uploads/2019/07/Release-Dev-300x136.png 300w, /wp-content/uploads/2019/07/Release-Dev-420x190.png 420w, /wp-content/uploads/2019/07/Release-Dev-425x193.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Release Dev</figcaption></figure>



<h2 class="wp-block-heading">Enabling Continuous Deployment</h2>



<p>If you wish you can always enable the continuous delivery or deployment. This will trigger whenever there is a build. To set up this, please go to your Release pipeline and click on the trigger.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="430" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Contnuous-Delivery-Trigger.png" alt="" class="wp-image-13821" srcset="/wp-content/uploads/2019/07/Contnuous-Delivery-Trigger.png 650w, /wp-content/uploads/2019/07/Contnuous-Delivery-Trigger-300x198.png 300w, /wp-content/uploads/2019/07/Contnuous-Delivery-Trigger-425x281.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Continuous Deployment Trigger</figcaption></figure>



<p>Now you should see an option to enable the Continuous Deployment.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="499" src="https://sibeeshpassion.com/wp-content/uploads/2019/07/Continuous-Deployment-Trigger.png" alt="" class="wp-image-13822" srcset="/wp-content/uploads/2019/07/Continuous-Deployment-Trigger.png 650w, /wp-content/uploads/2019/07/Continuous-Deployment-Trigger-300x230.png 300w, /wp-content/uploads/2019/07/Continuous-Deployment-Trigger-425x326.png 425w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Enable Continuous Deployment</figcaption></figure>



<p>Now all you have to is change something in the code, and not worry about the build and releases. How cool that is?</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>In this article, we have learned,</p>



<ul class="wp-block-list"><li>How to configure Build Pipeline Configuration for Azure Function in Azure DevOps</li><li> How to configure Release Pipeline Configuration for Azure Function in Azure DevOps </li><li>About fixing errors in Pipeline configurations in Azure DevOps</li><li>How to enable Continuous Delivery/Deployment in Azure DevOps</li><li>How to enable Continuous Integration in Azure DevOps</li></ul>



<p>Please let me know what else you had learned from this Article.</p>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post as useful? Kindly do not forget to share me your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/azure-function-build-and-release-pipeline-in-azure-devops-ci-cd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SSH Deployment Task in Azure Pipelines</title>
		<link>https://sibeeshpassion.com/ssh-deployment-task-in-azure-pipelines/</link>
					<comments>https://sibeeshpassion.com/ssh-deployment-task-in-azure-pipelines/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Mon, 29 Apr 2019 13:32:09 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[UCS]]></category>
		<category><![CDATA[Virtual Machines]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=13655</guid>

					<description><![CDATA[[toc] Introduction The word automation means a lot to us, the developers. We hate to do the same work again and again, especially when it comes to some manual work, where we need to do the tasks one by one. With the help of Azure build and release pipelines in Azure DevOps, most of the build and release tasks can be automated. Here in this post, I am going to explain one such task which is SSH Deployment Task. This task is very handy when you want to perform some actions inside your virtual machine by login to the VM [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction </h2>



<p>The word automation means a lot to us, the developers. We hate to do the same work again and again, especially when it comes to some manual work, where we need to do the tasks one by one. With the help of Azure build and release pipelines in Azure DevOps, most of the build and release tasks can be automated. Here in this post, I am going to explain one such task which is SSH Deployment Task. This task is very handy when you want to perform some actions inside your virtual machine by login to the VM via SSH. Let&#8217;s jump in to the implementation now then.</p>



<h2 class="wp-block-heading">Background</h2>



<p>In one of my project. I am running a UCS server inside my Azure VM. We can consider the UCS server as a Google Play Store, where we can install and manage the relevant applications. For example, I have created my own application and I am running the same inside the UCS Azure VM. But every time when we have a new changes in the application, we have to update the new application Docker image in the UCS machine by login via SSH, below are some of the operations we do after login to the VM.</p>



<ol class="wp-block-list"><li>univention-app remove {AppName}</li><li>docker rmi $(docker ps -q)</li><li>univention-app update</li><li>univention-app install {AppName}</li></ol>



<p>We had to set up a release pipeline to make our releases easier. </p>



<h2 class="wp-block-heading">Working with SSH Deployment Task</h2>



<p>As I mentioned earlier, this task will enable you to run your specific shell commands in your Virtual Machine. But to do that, we need to do some amazing things.</p>



<h3 class="wp-block-heading">Create and Upload the Public Key to Azure VM</h3>



<p>To set up our SSH Task we need a SSH Service Connection but to configure the connection we need to generate the Public and Private keys, you can use the below command to generate the same. </p>



<pre class="wp-block-code"><code>ssh-keygen -t rsa -b 2048</code></pre>



<ul class="wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><li class="blocks-gallery-item"><figure><img decoding="async" width="1024" height="485" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/SSH-KeyGen-1-1024x485.jpg" alt="" data-id="13665" data-link="https://sibeeshpassion.com/ssh-deployment-task-in-azure-pipelines/ssh-keygen-2/" class="wp-image-13665" srcset="/wp-content/uploads/2019/04/SSH-KeyGen-1-1024x485.jpg 1024w, /wp-content/uploads/2019/04/SSH-KeyGen-1-300x142.jpg 300w, /wp-content/uploads/2019/04/SSH-KeyGen-1-768x364.jpg 768w, /wp-content/uploads/2019/04/SSH-KeyGen-1-400x190.jpg 400w, /wp-content/uploads/2019/04/SSH-KeyGen-1-1266x600.jpg 1266w, /wp-content/uploads/2019/04/SSH-KeyGen-1.jpg 1663w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>SSH KeyGen</figcaption></figure></li></ul>



<p>You can either leave the passphrase blank or provide one, if there are keys available in the default location it will ask for the rewrite. Once the key is generated, you can go to the file id_sra pub file which is located at C:\Users\{username}\.ssh folder, and copy the entire content. </p>



<p>Now we can manually SSH into our VM and add our public key to the VMs authorized_keys. </p>



<pre class="wp-block-code"><code>ssh root@IP</code></pre>



<p>Once you are logged in to the VM, you can add the newly generated public key to the authorized_keys.</p>



<pre class="wp-block-code"><code>cd .ssh/
touch authorized_keys</code></pre>



<p>You can add the content by running the preceding command.</p>



<pre class="wp-block-code"><code>echo "&lt;RSA Public Key>" > authorized_keys</code></pre>



<p>Please paste your public key inside the quotation (&#8220;&#8221;). As we already have our Private and Public key with us, now we can go ahead and create our SSH service connection.</p>



<h3 class="wp-block-heading">Set Up the SSH Service Connection</h3>



<p>First thing first, let&#8217;s create a SSH service connection in our Azure DevOps so that we can use it in our SSH Deployment Task.</p>



<p>Go to your Project Settings in your Azure DevOps project and click on the Service Connections and then click the +New service connection and then select SSH.</p>



<figure class="wp-block-image"><img decoding="async" width="493" height="350" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/Service-Connection.jpg" alt="" class="wp-image-13656" srcset="/wp-content/uploads/2019/04/Service-Connection.jpg 493w, /wp-content/uploads/2019/04/Service-Connection-300x213.jpg 300w, /wp-content/uploads/2019/04/Service-Connection-400x284.jpg 400w" sizes="(max-width: 493px) 100vw, 493px" /><figcaption>Service Connection</figcaption></figure>



<p>In the next dialogue box, you should fill all the details as preceding.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="573" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/Add-an-SSH-Service-Connection-1.jpg" alt="" class="wp-image-13664" srcset="/wp-content/uploads/2019/04/Add-an-SSH-Service-Connection-1.jpg 650w, /wp-content/uploads/2019/04/Add-an-SSH-Service-Connection-1-300x264.jpg 300w, /wp-content/uploads/2019/04/Add-an-SSH-Service-Connection-1-400x353.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Add SSH Service Connection</figcaption></figure>



<h3 class="wp-block-heading">Create the Release Pipeline</h3>



<p>Wow!. We have created our Service connection successfully, and now it is time to use it. Go to your Azure DevOps project and click on Pipelines and then Releases. Now click on +New button and then +New release pipeline. </p>



<p>In the next dialogue, you should select the template for your pipeline, in this case, I will select &#8220;Empty Job&#8221;. Now click on the Tasks and then Agent Job. You can verify the Agent Job details, and once it is done, click on the + icon and then add SSH Task after searching with the keyword &#8220;SSH&#8221;.</p>



<figure class="wp-block-image"><img decoding="async" width="648" height="118" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/SSH-Task.jpg" alt="" class="wp-image-13660" srcset="/wp-content/uploads/2019/04/SSH-Task.jpg 648w, /wp-content/uploads/2019/04/SSH-Task-300x55.jpg 300w, /wp-content/uploads/2019/04/SSH-Task-400x73.jpg 400w" sizes="(max-width: 648px) 100vw, 648px" /></figure>



<p>Once the task is added, we can go ahead and set up the configuration.</p>



<figure class="wp-block-image"><img decoding="async" width="491" height="748" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/SSH-Task-Configuration.jpg" alt="" class="wp-image-13661" srcset="/wp-content/uploads/2019/04/SSH-Task-Configuration.jpg 491w, /wp-content/uploads/2019/04/SSH-Task-Configuration-197x300.jpg 197w, /wp-content/uploads/2019/04/SSH-Task-Configuration-400x609.jpg 400w, /wp-content/uploads/2019/04/SSH-Task-Configuration-394x600.jpg 394w" sizes="(max-width: 491px) 100vw, 491px" /><figcaption>SSH Task Configuration</figcaption></figure>



<p>Please remember to use the SSH service connection you have created. You can give the commands to run inside the VM in the commands section, each lines will be considered as a new command. You can always disable the option &#8220;Fail on STDER&#8221; if you think it is necessary. In my case I had disabled this feature as my UCS machine was running the some background tasks as part of the &#8220;univention-app&#8221; commands, some of such tasks were returning some errors, as these errors are not part of my releases, and as it is not any impacts in my deployment. Please remember to enable &#8220;Continue on error&#8221; in such scenarios. </p>



<p>Here, the adm_secret file is the file which contains the password of my UCS Admin Password. You can do this by running the preceding commands.</p>



<pre class="wp-block-code"><code>touch adm-secret;
echso "your secret" > adm_secret</code></pre>



<p>Once your configuration is done, save your release configuration and create a new release. I hope the release will be successful.  </p>



<figure class="wp-block-image"><img decoding="async" width="649" height="266" src="https://sibeeshpassion.com/wp-content/uploads/2019/04/Release-Pipeline-Result.jpg" alt="" class="wp-image-13663" srcset="/wp-content/uploads/2019/04/Release-Pipeline-Result.jpg 649w, /wp-content/uploads/2019/04/Release-Pipeline-Result-300x123.jpg 300w, /wp-content/uploads/2019/04/Release-Pipeline-Result-400x164.jpg 400w" sizes="(max-width: 649px) 100vw, 649px" /><figcaption>Release Pipeline Result</figcaption></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>In this article, we have learned, </p>



<ul class="wp-block-list"><li>How to create SSH Service connection in Azure DevOps</li><li>How to create and configure SSH Task in Azure Pipelines</li><li>How to generate Private and Public RSA keys </li></ul>



<p>Please let me know what else you had learned from this Article. </p>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post as useful? Kindly do not forget to share me your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/ssh-deployment-task-in-azure-pipelines/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deploy Angular App Using Azure DevOps Build and Release Pipelines</title>
		<link>https://sibeeshpassion.com/deploy-angular-app-using-azure-devops-build-and-release-pipelines/</link>
					<comments>https://sibeeshpassion.com/deploy-angular-app-using-azure-devops-build-and-release-pipelines/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Mon, 07 Jan 2019 15:59:50 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[Angular Pipeline in Azure]]></category>
		<category><![CDATA[Angular Release Pipeline]]></category>
		<category><![CDATA[Azure DevOps]]></category>
		<category><![CDATA[Deploy Angular to Azure Easily]]></category>
		<category><![CDATA[TFS]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=13530</guid>

					<description><![CDATA[[toc] Introduction I understand that there are many article on the same topic. But most of the solutions didn&#8217;t work for me with the latest pipeline configuration, so, I thought of writing this article. Here, we are going to set up our Build and Release pipeline configuration of our Angular application very easy, in fact, by following some basic tasks. We will be using Azure DevOps FTP pipeline service connection for the configuration. Let&#8217;s stop the introduction and jump in to the configuration. Background I was trying to deploy my Angular application to Azure, for that I wanted to set [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>[toc]</p>



<h2 class="wp-block-heading">Introduction</h2>



<p>I understand that there are many article on the same topic. But most of the solutions didn&#8217;t work for me with the latest pipeline configuration, so, I thought of writing this article. Here, we are going to set up our Build and Release pipeline configuration of our Angular application very easy, in fact, by following some basic tasks. We will be using Azure DevOps FTP pipeline service connection for the configuration. Let&#8217;s stop the introduction and jump in to the configuration. </p>



<h2 class="wp-block-heading">Background</h2>



<p>I was trying to deploy my <a href="https://sibeeshpassion.com/category/angular">Angular</a> application to Azure, for that I wanted to set up my build and release pipelines. I had followed some tutorials which are available already, but I was facing some issues with the same. Later, I had decided to use the Azure FTP Upload Release Task. So, basically, we will be having only one task in our Release pipeline.</p>



<h2 class="wp-block-heading">Set Up the Pipelines</h2>



<p>As I was mentioning, here, we are going to configure our Build and Release configuration. </p>



<h3 class="wp-block-heading">Build Pipeline</h3>



<p>Here we are going to configure the Azure DevOps build pipeline. But, before, we need to define our script in the package.json file. </p>



<script src="https://gist.github.com/nanotroy/6300ed763b7a9c508545b08cddd194cc.js"></script>



<p>If you have different routes, and if you need to access them directly in the URL of the browser, you should consider adding a web.config file in your src folder. </p>



<script src="https://gist.github.com/nanotroy/48ef50c3d524c3ac65e3a23fed235bd7.js"></script>



<p>Once that is done, add it as an asset in the angular.json file.</p>



<script src="https://gist.github.com/nanotroy/7cd6f89662554f217896239194b51310.js"></script>



<p>Now, go to your Azure DevOps site, and click on Pipelines and then Builds. Click on the plus icon.</p>



<h4 class="wp-block-heading">Pipeline</h4>



<p>Click on the Pipeline section. Here you can mention your pipeline name and the Agent pool, please remember to select the Agent pool as Hosted VS2017, or else you may end up seeing an error as &#8220;<a href="https://stackoverflow.com/questions/51227020/npm-failed-with-return-code-4294963238-in-ci-in-vsts/54072646#54072646">Npm failed with return code: 1 2019-01-07T10:14:37.3309955Z ##[section]Finishing: npm build</a>&#8220;.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="304" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Select-the-Pipeline-Agent.jpg" alt="" class="wp-image-13531" srcset="/wp-content/uploads/2019/01/Select-the-Pipeline-Agent.jpg 650w, /wp-content/uploads/2019/01/Select-the-Pipeline-Agent-300x140.jpg 300w, /wp-content/uploads/2019/01/Select-the-Pipeline-Agent-400x187.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Select the Pipeline Agent</figcaption></figure>



<h4 class="wp-block-heading">Phase 1</h4>



<p>I recommend you to leave this as it is, you can change the display name though. </p>



<h4 class="wp-block-heading">npm install</h4>



<p>Click on the + icon in the Phase section and search for &#8220;npm&#8221; and click add. Now we can configure this task. </p>



<figure class="wp-block-image"><img decoding="async" width="650" height="493" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/npm-install-task.jpg" alt="" class="wp-image-13532" srcset="/wp-content/uploads/2019/01/npm-install-task.jpg 650w, /wp-content/uploads/2019/01/npm-install-task-300x228.jpg 300w, /wp-content/uploads/2019/01/npm-install-task-400x303.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>npm install task</figcaption></figure>



<p>You can also click on the ribbon View YAML, to see the <g class="gr_ gr_3 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling" id="3" data-gr-id="3">yml</g> version of the task.</p>



<h4 class="wp-block-heading">npm build</h4>



<p>In this step, we will add a new npm task and configure it for our build script. </p>



<figure class="wp-block-image"><img decoding="async" width="650" height="513" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/npm-run-build.jpg" alt="" class="wp-image-13533" srcset="/wp-content/uploads/2019/01/npm-run-build.jpg 650w, /wp-content/uploads/2019/01/npm-run-build-300x237.jpg 300w, /wp-content/uploads/2019/01/npm-run-build-400x316.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>npm run build</figcaption></figure>



<p>Please be noted that the command is custom and we have given the script which we have already set in our package.json file, which is prod-build-dev. </p>



<h4 class="wp-block-heading">Publish Artifact</h4>



<p>Here, in this step, we will publish our artifacts generated. This is very important, otherwise, the release configuration will not be able to find your package.json file in the directory. Add a new task called &#8220;Publish Build Artifacts&#8221; and configure the same as mentioned in the image below. </p>



<figure class="wp-block-image"><img decoding="async" width="650" height="486" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Publish-Build-Artifacts.jpg" alt="" class="wp-image-13534" srcset="/wp-content/uploads/2019/01/Publish-Build-Artifacts.jpg 650w, /wp-content/uploads/2019/01/Publish-Build-Artifacts-300x224.jpg 300w, /wp-content/uploads/2019/01/Publish-Build-Artifacts-400x299.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Publish Build Artifacts<br></figcaption></figure>



<h4 class="wp-block-heading">Enable the Continuous Integration</h4>



<p>As we have set up the Tasks, now it is time to set up the continuous integration. Click on the Triggers section and check the Enable continuous integration.  </p>



<figure class="wp-block-image"><img decoding="async" width="650" height="216" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Enable-Continuous-Integration.jpg" alt="" class="wp-image-13535" srcset="/wp-content/uploads/2019/01/Enable-Continuous-Integration.jpg 650w, /wp-content/uploads/2019/01/Enable-Continuous-Integration-300x100.jpg 300w, /wp-content/uploads/2019/01/Enable-Continuous-Integration-400x133.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Enable Continuous Integration</figcaption></figure>



<h4 class="wp-block-heading">Debugging the Build</h4>



<p>If you ever need to debug the build pipeline, you can enable the same in the Variable section. Just making the system.debug value to true will do the trick. </p>



<figure class="wp-block-image"><img decoding="async" width="651" height="137" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Debugging-Build.jpg" alt="" class="wp-image-13536" srcset="/wp-content/uploads/2019/01/Debugging-Build.jpg 651w, /wp-content/uploads/2019/01/Debugging-Build-300x63.jpg 300w, /wp-content/uploads/2019/01/Debugging-Build-400x84.jpg 400w" sizes="(max-width: 651px) 100vw, 651px" /><figcaption>Debugging Build</figcaption></figure>



<h4 class="wp-block-heading">Run the Build</h4>



<p>Once you are done everything, you can click on the Save &amp; Queue button to initiate the build. Our Agent will run now, the tasks will be executed, as we have enabled the debug property to true in the Variables, we can now see the detailed logs in the console. The following tasks will be happening.</p>



<figure class="wp-block-image"><img decoding="async" width="641" height="1008" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Build-Pipeline-Output.jpg" alt="" class="wp-image-13537" srcset="/wp-content/uploads/2019/01/Build-Pipeline-Output.jpg 641w, /wp-content/uploads/2019/01/Build-Pipeline-Output-191x300.jpg 191w, /wp-content/uploads/2019/01/Build-Pipeline-Output-400x629.jpg 400w, /wp-content/uploads/2019/01/Build-Pipeline-Output-382x600.jpg 382w" sizes="(max-width: 641px) 100vw, 641px" /><figcaption>Build Pipeline Output</figcaption></figure>



<h3 class="wp-block-heading">Release Pipeline</h3>



<p>Wow, we have successfully created our build pipeline, now it is time to create a Release pipeline. As I mentioned earlier, we are going to have only one Task in our Release pipeline, which is nothing but &#8220;FTP Upload&#8221;. Click on the Pipelines and then Releases, click on the +New icon to create a new Release pipeline. </p>



<h4 class="wp-block-heading">Select the Artifacts</h4>



<p>Here, in this step, we should select the Artifacts generated in the build.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="563" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Select-the-Artifacts.jpg" alt="" class="wp-image-13539" srcset="/wp-content/uploads/2019/01/Select-the-Artifacts.jpg 650w, /wp-content/uploads/2019/01/Select-the-Artifacts-300x260.jpg 300w, /wp-content/uploads/2019/01/Select-the-Artifacts-400x346.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /><figcaption>Select the Artifacts</figcaption></figure>



<h4 class="wp-block-heading">Select the Stage</h4>



<p>Click on the Stages and add one.</p>



<h4 class="wp-block-heading">Adding a FTP Service Connection</h4>



<p>Before we add a new FTP Upload task, we need to create a new FTP service connection in our Azure DevOps site. Click on the Project Settings on the bottom left corner, go to the Pipelines section, and then click on the Service connections. Now click on the + New service connection, in the pop up you need to provide the details which you can get from the Publish profile of your Azure Web App (Click on the Get Publish Profile in your Web App resource, overview section in the Azure portal).</p>



<figure class="wp-block-image"><img decoding="async" width="649" height="370" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Add-a-Generic-Service-Connection.jpg" alt="" class="wp-image-13540" srcset="/wp-content/uploads/2019/01/Add-a-Generic-Service-Connection.jpg 649w, /wp-content/uploads/2019/01/Add-a-Generic-Service-Connection-300x171.jpg 300w, /wp-content/uploads/2019/01/Add-a-Generic-Service-Connection-400x228.jpg 400w" sizes="(max-width: 649px) 100vw, 649px" /><figcaption>Add a Generic Service Connection</figcaption></figure>



<h4 class="wp-block-heading">Add the FTP Upload Task</h4>



<p>Now it is time to add the FTP Upload Task. Click on the + icon in the Agent Job Task and add the task FTP Upload.</p>



<figure class="wp-block-image"><img decoding="async" width="470" height="807" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/FTP-Upload-Task.jpg" alt="" class="wp-image-13541" srcset="/wp-content/uploads/2019/01/FTP-Upload-Task.jpg 470w, /wp-content/uploads/2019/01/FTP-Upload-Task-175x300.jpg 175w, /wp-content/uploads/2019/01/FTP-Upload-Task-400x687.jpg 400w, /wp-content/uploads/2019/01/FTP-Upload-Task-349x600.jpg 349w" sizes="(max-width: 470px) 100vw, 470px" /><figcaption>FTP Upload Task</figcaption></figure>



<p>Here the remote directory is the folder where our application files are going to be, you should be able to see those files if you just log in to the explorer using your FTP details from your app publish profile. </p>



<h4 class="wp-block-heading">Create a Release</h4>



<p>Now, it is time to create a Release, click on the + Release button and then + Create a release. In the upcoming window, you should be able to see the pipeline and the Artifacts selected. Just click on the Create button. The Agent will be started in a few seconds, once it is ready, it will execute the tasks. Please be noted that the FTP Upload task will remove the content from the directory first and then upload the new one. </p>



<figure class="wp-block-image"><img decoding="async" width="598" height="247" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Release-Pipeline-Tasks-Output.jpg" alt="" class="wp-image-13543" srcset="/wp-content/uploads/2019/01/Release-Pipeline-Tasks-Output.jpg 598w, /wp-content/uploads/2019/01/Release-Pipeline-Tasks-Output-300x124.jpg 300w, /wp-content/uploads/2019/01/Release-Pipeline-Tasks-Output-400x165.jpg 400w" sizes="(max-width: 598px) 100vw, 598px" /><figcaption>Release Pipeline Tasks Output</figcaption></figure>



<h2 class="wp-block-heading">Change the App Service Virtual Path</h2>



<p>As we have given a custom folder in the Release configuration, we should also change the Virtual Path of the Azure App service. To do so, go to your Azure App Service and then select Virtual Path under Application Settings. Set the Virtual Path as &#8220;/&#8221; and Virtual Path as &#8220;site\wwwroot\wwwroot\yourappname(the folder name inside dist folder)&#8221; and the type as &#8220;Application&#8221;.</p>



<figure class="wp-block-image"><img decoding="async" width="653" height="94" src="https://sibeeshpassion.com/wp-content/uploads/2019/01/Set-Virtual-Physical-Path.jpg" alt="" class="wp-image-13544" srcset="/wp-content/uploads/2019/01/Set-Virtual-Physical-Path.jpg 653w, /wp-content/uploads/2019/01/Set-Virtual-Physical-Path-300x43.jpg 300w, /wp-content/uploads/2019/01/Set-Virtual-Physical-Path-400x58.jpg 400w" sizes="(max-width: 653px) 100vw, 653px" /><figcaption>Set Virtual Physical Path</figcaption></figure>



<p>Once you are done, you can see your Angular application running. </p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Wow!. Now we have learned,</p>



<ul class="wp-block-list"><li>How to set up the Azure DevOps Build Pipeline configuration</li><li> How to set up the Azure DevOps Release Pipeline configuration </li><li>How to create new FTP Service Connection in Azure DevOps</li><li>How to configure Azure Web App</li></ul>



<p>You can always read my articles related to Azure <a href="https://sibeeshpassion.com/category/azure">here</a>. </p>



<h2 class="wp-block-heading">Your turn. What do you think?</h2>



<p>Thanks a lot for reading. Did I miss anything that you may think which is needed in this article? Could you find this post as useful? Kindly do not forget to share me your feedback.</p>



<p>Kindest Regards<br>Sibeesh Venu</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/deploy-angular-app-using-azure-devops-build-and-release-pipelines/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
