"Enter"a basıp içeriğe geçin

ASP.NET Core Uygulamasını Jenkins ile IIS’de Yayınlama

Tahmini okuma süresi: 11 dakika

Bu makalede ASP.NET Core uygulamasını Jenkins kullanarak IIS’de yayınlama konusuna değineceğim. Bu makalenin konusu pipeline hazırlamak olduğu için Jenkins kurulumu ile ilgili aşağıdaki sayfadan yardım alabilirsiniz.

Senaryomuzda deployment yapacağımız hedef makine ve Jenkins kurulu olan makine farklı olacaktır ki Jenkins için dedike bir sunucu ayarlamanız gerekmektedir. Zira job’lar çalışırken kaynaklarınızı fazlasıyla tüketebilir 🙂

Pipeline aşağıdaki 4 adımdan oluşacak.

Checkout : Github’dan kaynak kod çekilecek.
Build : Kaynak kod derlenecek.
Deploy : Hedef makineye deployment yapılacak.

Pipeline’ı hazırlamadan önce aşağıdaki gereksinimleri sağlamanız gerekmektedir.

1.Git’in Kurulması
Checkout yapılabilmesi için Jenkins makinesinde Git’in kurulu olması gerekmektedir. Aşağıdaki adresten Git’i kurabilirsiniz.

2.NET Core SDK’nın Kurulması
Build yapılabilmesi için Jenkins makinesinde .NET Core SDK’nın kurulu olması gerekmektedir. Aşağıdaki adresten uygulamanızdaki versiyona göre ilgili SDK’yı kurabilirsiniz.

3.Jenkins Makinesine MsDeploy’un Kurulması
Deploy yapılabilmesi için Jenkins makinesinde msdeploy’un kurulu olması gerekmektedir. Bunun için aşağıdaki adresten ilgili kurulumu indirip yükleyebilirsiniz.

4.Güvenli Makine Tanımının Yapılması
Jenkins makinesi ve hedef makine aynı domain’de değilse Jenkins makinesinden hedef makineye deployment yapılamayacaktır. Aşağıdaki gibi bir hata verecektir.

Connecting to remote server 0.0.0.0 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting.

Bu hatanın çözümü için Jenkins makinesine hedef makinenin güvenli olduğunu belirtmeniz gerekmektedir. Bunun için Powershell’de aşağıdaki komut satırını çalıştırabilirsiniz.

winrm set winrm/config/client '@{TrustedHosts="0.0.0.0"}'

5.Web Management Service’in Kurulması
Hedef makinesine uzaktan deployment yapılabilmesi için hedef makinesindeki IIS’de Web Management Service’in kurulu ve çalışır olması gerekmektedir. Servisin kurulu olup olmadığını kontrol etmek için IIS’i açın. Sol taraftaki “Connections” penceresinden sunucunuzu seçin. Sağ bölümde “Management” sekmesinin altında “Management Service” modülünü kontrol edin.

IIS - Management Service
IIS – Management Service

Bu modül gözükmüyor ise Windows özelliklerinden Management Tools’u kurabilirsiniz.

6.Web Management Service’in Aktif Edilmesi
Modülün çalışır vaziyette olması gerekmektedir. Modülün üstüne çift tıklayarak “Enable Remote Connections” seçeneğini aktip edip “start” yapabilirsiniz.

IIS - Management Service 2
IIS – Management Service 2

7.Hedef Makineye MsDeploy’un Kurulması
Hedef makinesinde MsDeploy’un kurulu olması gerekmektedir. Bunun için aşağıdaki adresten ilgili kurulumu indirip yükleyebilirsiniz.

Kurulumu yaparken “Custom” seçeneğini seçerek “IIS Deployment Handler” özelliklerini aktif etmelisiniz.

MsDeploy
MsDeploy

Servisin başarılı şekilde kurulduğu kontrol etmek için IIS’i açın. Sol taraftaki “Connections” penceresinden sunucunuzu seçin. Sağ bölümde “Management” sekmesinin altında “Management Service Delegation” modülünü kontrol edin.

IIS Management Service Delegation
IIS Management Service Delegation

Her şey hazır 🙂 Artık Jenkins’de pipeline’nı hazırlayabiliriz.


Jenkins’i açıp “New Item > Pipeline” yolunu izleyerek “job” oluşturun.

Jenkins - New Item
Jenkins – New Item

Pipeline bölümüne aşağıdaki script’i yapıştırın.

İşte bu kadar. Artık Build Now yapabilirsiniz. Kolay gelsin.

2 Yorum

  1. Hasan Hasanov Hasan Hasanov

    Merhabalar Ahmet bey, elinize sağlık güzel ve yararlı bir makale olmuş.

    • ahmetkucukoglu ahmetkucukoglu

      Eyvallah Hasan. Teşekkür ederim.

Hasan Hasanov için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir