{"id":74620,"date":"2018-09-21T12:16:32","date_gmt":"2018-09-21T19:16:32","guid":{"rendered":""},"modified":"2025-06-30T01:35:23","modified_gmt":"2025-06-30T08:35:23","slug":"configure-jenkins-cicd-pipeline-deploy-asp-net-core-application","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/","title":{"rendered":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service"},"content":{"rendered":"\n<p>In this blogpost, we will show you how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in Github and deploy the application to the Azure Web App service.<\/p>\n\n\n\n<p>We start from the solution template in Azure Marketplace since that\u2019s the fastest and easiest path to get Jenkins up and running in Azure. You can follow the steps using your existing Jenkins server, regardless of whether it\u2019s run on premises or in the cloud. The deployment target is the Azure Web App service. It is a platform-as-a-service (PaaS), which allows publishing web apps running on multiple frameworks and written in different programming languages (.NET, node.js, PHP, Python and Java). It is fully managed by Microsoft and easy to scale. We will demo how to use the Web App Jenkins Plugin to deploy the output binaries into it.<\/p>\n\n\n\n<p>This is the flow implemented in this post:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/Image-1.jpg\" alt=\"Workflow diagram: Dev commits code to Jenkins, Jenkins distributes to Azure Container Registry and Azure Kubernetes\" class=\"wp-image-73952\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Developers commit code change into GitHub<\/li>\n\n\n\n<li>Jenkins builds the application<\/li>\n\n\n\n<li>Jenkins deploys the application into Azure web app<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"pre-configurations\">Pre-configurations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Provision&nbsp;<a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/app-service\/web\/\">Azure web app service<\/a>&nbsp;for customersapi service.<\/li>\n\n\n\n<li>Provision&nbsp;<a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/app-service\/web\/\">Azure web app service<\/a>&nbsp;for customersmvc application.<\/li>\n\n\n\n<li>Provision&nbsp;<a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/application-insights\/\">Azure Application Insights service<\/a>.<\/li>\n\n\n\n<li>Configure application settings of customersapi web app. Set ApplicationInsights__InstrumentationKey to the instrumentation key of the Application Insights service.<\/li>\n\n\n\n<li>Configure application settings of customersmvc web app. Set ApplicationInsights__InstrumentationKey to the instrumentation key of the Application Insights service and CustomersAPIService__Url to the URL of customersapi service.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"deploy-jenkins-server\">Deploy Jenkins server<\/h3>\n\n\n\n<p>In the Azure portal, select&nbsp;<strong>Create a resource<\/strong>&nbsp;and search for&nbsp;<strong>Jenkins<\/strong>. Select the Jenkins offering with a publisher of&nbsp;<strong>Microsoft&nbsp;<\/strong>and select&nbsp;<strong>Create<\/strong>.<\/p>\n\n\n\n<p>Enter the following information on the basics form and click&nbsp;<strong>OK<\/strong>&nbsp;when done.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Name<\/strong>&nbsp;\u2013 name for the Jenkins deployment.<\/li>\n\n\n\n<li><strong>User name<\/strong>&nbsp;\u2013 this user name is used as the admin user for the Jenkins virtual machine.<\/li>\n\n\n\n<li><strong>Authentication type<\/strong>&nbsp;\u2013 SSH public key is recommended. If selected, copy in an SSH public key to be used when logging into the Jenkins virtual machine.<\/li>\n\n\n\n<li><strong>Subscription<\/strong>&nbsp;\u2013 select an Azure subscription.<\/li>\n\n\n\n<li><strong>Resource group<\/strong>&nbsp;\u2013 create a new or select an existing resource group.<\/li>\n\n\n\n<li><strong>Location<\/strong>&nbsp;\u2013 select a location for the Jenkins server.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/image-2.png\" alt=\"Screenshot 1 - Jenkins server config\" class=\"wp-image-73953\" \/><\/figure>\n\n\n\n<p>On the additional settings form, complete the following items:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Size<\/strong>&nbsp;\u2013 Select the appropriate sizing option for your Jenkins virtual machine.<\/li>\n\n\n\n<li><strong>VM disk type<\/strong>&nbsp;\u2013 Specify either HDD (hard-disk drive) or SSD (solid-state drive) for the Jenkins server.<\/li>\n\n\n\n<li><strong>Virtual network<\/strong>&nbsp;\u2013 (Optional) Select Virtual network to modify the default settings.<\/li>\n\n\n\n<li><strong>Subnets<\/strong>&nbsp;\u2013 Select Subnets, verify the information, and select&nbsp;<strong>OK<\/strong>.<\/li>\n\n\n\n<li><strong>Public IP address<\/strong>&nbsp;\u2013 Selecting the Public IP address allows you to give it a custom name, configure SKU, and assignment method.<\/li>\n\n\n\n<li><strong>Domain name label<\/strong>&nbsp;\u2013 Specify a value to create a fully qualified URL to the Jenkins virtual machine.<\/li>\n\n\n\n<li><strong>Jenkins release type<\/strong>&nbsp;\u2013 Select the desired release type from the options: LTS, Weekly build, or Azure Verified.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-03.png\" alt=\"Screenshot 2 - Jenkins server config\" class=\"wp-image-73959\" \/><\/figure>\n\n\n\n<p>For Integration Settings, select&nbsp;<strong>No<\/strong>&nbsp;to use Jenkins host to build the jobs.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-04.png\" alt=\"Screenshot 3 - Jenkins server config\" class=\"wp-image-73960\" \/><\/figure>\n\n\n\n<p>Once done with the integration settings, click&nbsp;<strong>OK<\/strong>, and then&nbsp;<strong>OK<\/strong>&nbsp;again on the validation summary. Click&nbsp;<strong>Create<\/strong>&nbsp;on the Terms of use summary. The Jenkins server takes a few minutes to deploy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-jenkins\">Configure Jenkins<\/h3>\n\n\n\n<p>In the Azure portal, browse to the Jenkins Resource Group, select the Jenkins virtual machine, and take note of the DNS name.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-5.png\" alt=\"Screenshot 4 - Jenkins server config\" class=\"wp-image-73961\" \/><\/figure>\n\n\n\n<p>Browser to the DNS name of the Jenkins VM and copy the returned SSH string.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-06.png\" alt=\"Screenshot 5 - Jenkins on Azure\" class=\"wp-image-73962\" \/><\/figure>\n\n\n\n<p>Open up a terminal session on your development system, and paste in the SSH string from the last step. Update \u2018username\u2019 to the username specified when deploying the Jenkins server.<br>Once connected, run the following command to retrieve the initial admin password.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nsudo cat \/var\/lib\/jenkins\/secrets\/initialAdminPassword\n<\/pre><\/div>\n\n\n<p><a href=\"https:\/\/www.microsoft.com\/net\/download\/linux-package-manager\/ubuntu16-04\/sdk-2.1.400\">Install .net core 2.1<\/a><\/p>\n\n\n\n<p>Leave the SSH session and tunnel running, and navigate to&nbsp;<a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080<\/a>&nbsp;in a browser. Paste the initial admin password into the field as seen in the following image. Select&nbsp;<strong>Continue<\/strong>&nbsp;when done.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-07.png\" alt=\"Screenshot 6 - Unlock Jenkins\" class=\"wp-image-73963\" \/><\/figure>\n\n\n\n<p>Select&nbsp;<strong>Install suggested plugins<\/strong>&nbsp;to install all recommended Jenkins plugins.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-08.png\" alt=\"Screenshot 7 - Customize Jenkins\" class=\"wp-image-73964\" \/><\/figure>\n\n\n\n<p>Create a new admin user account. This account is used for logging into and working with your Jenkins instance.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-portal-09.png\" alt=\"Screenshot 8 - Getting Started, Create First Admin User\" class=\"wp-image-73965\" \/><\/figure>\n\n\n\n<p>Select&nbsp;<strong>Save and Finish<\/strong>&nbsp;when done, and then&nbsp;<strong>Start using Jenkins<\/strong>&nbsp;to complete the configuration.<br>Jenkins is now configured and ready to build and deploy code. For this example, a simple asp.net core application is used to demonstrate a Jenkins build. It can be found at&nbsp;<a href=\"https:\/\/github.com\/mjrousos\/AspNetCore-Sample\">https:\/\/github.com\/mjrousos\/AspNetCore-Sample<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-azure-service-principal\">Create Azure service principal<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to&nbsp;<strong>Credentials<\/strong>&nbsp;-&gt;&nbsp;<strong>System<\/strong>&nbsp;-&gt;&nbsp;<strong>Global credentials<\/strong>&nbsp;-&gt;&nbsp;<strong>Add Credentials<\/strong><\/li>\n\n\n\n<li>In&nbsp;<strong>Kind<\/strong>, select&nbsp;<strong>Microsoft Azure Service Principal<\/strong>&nbsp;and input your&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-resource-manager\/resource-group-create-service-principal-portal\">subscription information<\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-pipeline-build-job-and-deploy-to-azure-web-app\"><a href=\"https:\/\/github.com\/xiangyan99\/JenkinsCiCD2Azure\/blob\/master\/Jenkins-AspnetCore-WebApp.md#create-pipeline-build-job-and-deploy-to-azure-web-app\"><\/a>Create Pipeline build job and deploy to Azure web app<\/h3>\n\n\n\n<p>Now create a Jenkins build job. Select&nbsp;<strong>New Item<\/strong>, give the build project a name such as aspnetcore-webapp, select&nbsp;<strong>Pipeline<\/strong>, and click&nbsp;<strong>OK<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-new-job-aspnetcore-webapp-10.png\" alt=\"Screenshot 9 - Create Pipeline build job\" class=\"wp-image-73958\" \/><\/figure>\n\n\n\n<p>Define parameters \u201cgit_repo\u201d, \u201cres_group\u201d, \u201ccustomersapiapp\u201d, \u201ccustomersmvcapp\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-11-1.png\" alt=\"Screenshot 10 - Create Pipeline build job\" class=\"wp-image-73966\" \/><\/figure>\n\n\n\n<p>Define parameter \u201cazure_cred_id\u201d, choose&nbsp;<strong>Credential type<\/strong>&nbsp;<strong>Microsoft Azure Service Principal<\/strong>&nbsp;and link it to the service principal credential you just created above.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-12.png\" alt=\"Screenshot 11 - Create Pipeline build job\" class=\"wp-image-73955\" \/><\/figure>\n\n\n\n<p>Under&nbsp;<strong>Pipeline<\/strong>, set&nbsp;<strong>Definition<\/strong>&nbsp;to&nbsp;<strong>Pipeline script<\/strong>&nbsp;and input code.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nnode {\n    stage('Checkout git repo') {\n      git branch: 'master', url: params.git_repo\n    }\n    stage('build and publish') {\n        sh(script: \"dotnet publish CustomersDemoClean-2017.sln -c Release \", returnStdout: true)\n    }\n    stage('deploy') {\n        azureWebAppPublish azureCredentialsId: params.azure_cred_id,\n            resourceGroup: params.res_group, appName: params.customersapiapp, sourceDirectory: \"src\/CustomersAPI\/bin\/Release\/netcoreapp2.1\/publish\/\"\n        azureWebAppPublish azureCredentialsId: params.azure_cred_id,\n            resourceGroup: params.res_group, appName: params.customersmvcapp, sourceDirectory: \"src\/CustomersMVC\/bin\/Release\/netcoreapp2.1\/publish\/\"\n    }\n}\n<\/pre><\/div>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-1024x400.webp\" alt=\"Screenshot 12 - Create Pipeline build job\" class=\"wp-image-74209 webp-format\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-1024x400.webp 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-300x117.webp 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-768x300.webp 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-330x129.webp 330w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-800x313.webp 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-400x156.webp 400w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13.webp 1262w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-webapp-13-1024x400.webp\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"run-the-build-job\">Run the build job<\/h3>\n\n\n\n<p>To test the build job, manually start a build.<br>Select&nbsp;<strong>Build Now<\/strong>&nbsp;to start a build job. It takes a few seconds for the job to start, when running, you should see status similar to the following images.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-status-14.png\" alt=\"Screenshot 13 - Build History\" class=\"wp-image-73957\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"here-you-go\">Here you go\u2026<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2018\/09\/jenkins-job-aspnetcore-aks-15-e1537545774412.png\" alt=\"Screenshot 14 - Deployed site\" class=\"wp-image-73951\" \/><\/figure>\n\n\n\n<p>Questions or feedback? Let us know in the comments below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blogpost, we will show you how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in Github and deploy the application to the Azure Web App service.<\/p>\n","protected":false},"author":5562,"featured_media":95465,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[2272],"content-type":[340],"topic":[2241,2244],"programming-languages":[],"coauthors":[2353],"class_list":["post-74620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-microsoft","content-type-tutorials-and-demos","topic-cloud","topic-devops","review-flag-1593580428-734","review-flag-1-1593580432-963","review-flag-2-1593580437-411","review-flag-new-1593580248-669","review-flag-on-pr-1593580826-861","review-flag-vm-1593580807-312"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service<\/title>\n<meta name=\"description\" content=\"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service\" \/>\n<meta property=\"og:description\" content=\"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-21T19:16:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-30T08:35:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Xiang Yan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Xiang Yan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/xiang-yan\/\",\"@type\":\"Person\",\"@name\":\"Xiang Yan\"}],\"headline\":\"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service\",\"datePublished\":\"2018-09-21T19:16:32+00:00\",\"dateModified\":\"2025-06-30T08:35:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\"},\"wordCount\":956,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp\",\"keywords\":[\"Microsoft\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\",\"name\":\"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp\",\"datePublished\":\"2018-09-21T19:16:32+00:00\",\"dateModified\":\"2025-06-30T08:35:23+00:00\",\"description\":\"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service","description":"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service","og_description":"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2018-09-21T19:16:32+00:00","article_modified_time":"2025-06-30T08:35:23+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.png","type":"image\/png"}],"author":"Xiang Yan","twitter_card":"summary_large_image","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Xiang Yan","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/xiang-yan\/","@type":"Person","@name":"Xiang Yan"}],"headline":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service","datePublished":"2018-09-21T19:16:32+00:00","dateModified":"2025-06-30T08:35:23+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/"},"wordCount":956,"commentCount":1,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp","keywords":["Microsoft"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/","url":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/","name":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp","datePublished":"2018-09-21T19:16:32+00:00","dateModified":"2025-06-30T08:35:23+00:00","description":"Learn how to provision a Jenkins VM and setup a CI\/CD pipeline to build an ASP.NET Core application stored in GitHub and deploy to the Azure cloud.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/CLO19_Ubisoft_Azure_037.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2018\/09\/21\/configure-jenkins-cicd-pipeline-deploy-asp-net-core-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Jenkins CI\/CD to deploy an ASP.NET Core application to Azure Web App service"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/74620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=74620"}],"version-history":[{"count":3,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/74620\/revisions"}],"predecessor-version":[{"id":97862,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/74620\/revisions\/97862"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95465"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=74620"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=74620"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=74620"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=74620"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=74620"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=74620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}