Jenkins ile ASP.NET Core Uygulamaların IIS’ de Yayınlanması 

Windows sunucuda kurduğumuz Jenkins üzerinden, farklı bir sunucu üzerindeki IIS’ de uygulamamızı yayınlayacağız. Jenkins sunucusu ve uygulama sunucusu olarak iki ortam olacak.

Jenkins sunucusunun hazırlanması

1- Jenkins kurulumu

Windows işletim sistemi üzerine Jenkins kurulumunu aşağıdaki URL’ de anlatıldığı şekilde yapabilirsiniz.

https://www.jenkins.io/doc/book/installing/windows/

2- .NET Core SDK kurulumu

Jenkins sunucusuna uygulamaları derleyebilmek adına .NET Core SDK’ nı aşağıdaki URL’ den indirip kurabilirsiniz.

https://dotnet.microsoft.com/en-us/download

3- Git kurulumu

Jenkins sunucusuna kodların checkout yapılabilmesi için Git kurulumunu aşağıdaki URL’ den indirip yapabilirsiniz.

https://git-scm.com/download/win

4- MsDeploy kurulumu

Jenkins makinesine kodları deploy edebilmek için MsDeploy kurulumunu aşağıdaki URL’ den indirip yapabilirsiniz.

https://www.iis.net/downloads/microsoft/web-deploy

Uygulama sunucusunun hazırlanması

1- Web Management Service kurulumu

Server Manager > Manage > Add Roles and Features” ekranında “Web Management Service” kurulumunu yapabilirsiniz.

Web Management Service aktif edelim.

2- MsDeploy kurulumu

Uygulama makinesine kodları deploy edebilmek için MsDeploy kurulumunu aşağıdaki URL’ den indirip yapabilirsiniz. Tüm eklentilerini kurmanız gerek.

https://www.iis.net/downloads/microsoft/web-deploy

Jenkins Pipeline

//Gitlab kaynak kod adresi
String gitlabUrl = "http://xxx/"

//Gitlab user
String gitlabUser = "userxxx"

//Kaynak kodun publish edileceği dizin
String publishedPath = "appPublish"

//Hedef makinesinde IIS'de tanımlı olan sitenin ismi
String iisApplicationName = "xxx.com"

//Hedef makinenin IP veya DNS i
String targetServerIP = "xxx"

//Hedef makinenin Computer ismi
String targetServerComputerName = "xxx"

//Jenkins MSBuild lokasyonu
String MSBUILD = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe"

//Jenkins Nuget lokasyonu
String NUGET = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\nuget.exe"

//Jenkins MSDeploy lokasyonu
String MSDEPLOY = "C:\\Program Files (x86)\\IIS\\Microsoft Web Deploy V3\\msdeploy.exe"

node () {
    stage('Gitlab Checkout') {
        checkout([
            $class: 'GitSCM', 
            branches: [[name: 'master']], 
            doGenerateSubmoduleConfigurations: false, 
            extensions: [], 
            submoduleCfg: [], 
            userRemoteConfigs: [[credentialsId: "$gitlabUser", url: "${gitlabUrl}"]]])
    }
    stage('Build and Publish') {
        bat "\"${NUGET}\" config -set http_proxy=http://xxx.com:3128"
        bat "\"${NUGET}\" config -set https_proxy=http://xxx.com:3128"
        bat "\"${NUGET}\" restore HRApps.sln"
        bat "\"${MSBUILD}\" Web\\Web.csproj /p:Configuration=Debug /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=true /p:publishUrl=\"${WORKSPACE}\\${publishedPath}\""
    }
    stage('IIS Deploy'){
        withCredentials([usernamePassword(credentialsId: 'jenkins', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { bat """ "${MSDEPLOY}" -verb:sync -source:iisApp="${WORKSPACE}\\${publishedPath}" -enableRule:AppOffline -dest:iisApp="${iisApplicationName}",ComputerName="https://${targetServerIP}:8172/msdeploy.axd",UserName="${targetServerComputerName}\\$USERNAME",Password="$PASSWORD",AuthType="Basic" -allowUntrusted""" }
    }

}
Back To Top