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""" } } }