Öğretici: Jenkins ve Azure DevOps Services kullanarak Linux sanal makinesine dağıtma

Sürekli tümleştirme (CI) ve sürekli dağıtım (CD), kodunuzu derleyebileceğiniz, yayınlayabileceğiniz ve dağıtabileceğiniz bir işlem hattı oluşturur. Azure DevOps Services, Azure’a dağıtım için eksiksiz ve tam özellikli bir dizi CI/CD otomasyon aracı sağlar. Jenkins, CI/CD otomasyonu sağlayan, popüler bir üçüncü taraf CI/CD sunucu tabanlı aracıdır. Bulut uygulamanızı ve hizmetinizi nasıl sunacağınızı özelleştirmek için Azure DevOps Services ve Jenkins’i birlikte kullanabilirsiniz.

Bu öğreticide, Node.js web uygulaması derlemek için Jenkins’i kullanacaksınız. Ardından, Linux sanal makineleri (VM’ler) içeren

bir dağıtım grubuna dağıtmak için Azure DevOps kullanın. Şunları yapmayı öğreneceksiniz:

  • Örnek uygulamayı alma.
  • Jenkins eklentilerini yapılandırma.
  • Node.js için Jenkins Serbest stil projesi yapılandırma.
  • Azure DevOps Services tümleştirmesi için Jenkins’i yapılandırın.
  • Jenkins hizmet uç noktası oluşturma.
  • Azure sanal makineleri için dağıtım grubu oluşturma.
  • Azure Pipelines yayın işlem hattı oluşturma.
  • El ile ve CI ile tetiklenen dağıtımlar yürütme.

Önkoşullar

Örnek uygulamayı alma

Bir Git deposunda depolanan, dağıtılacak bir uygulamanız olması gerekir. Bu öğretici için, GitHub’dan erişebileceğiniz bu örnek uygulamayı kullanmanızı öneririz. Bu öğretici, Node.js ve bir uygulama yüklemek için kullanılan örnek bir betik içerir. Kendi deponuzla çalışmak istiyorsanız benzer bir örnek yapılandırmanız gerekir.

Bu uygulamanın çatalını oluşturun ve bu öğreticinin daha sonraki adımlarında kullanmak üzere konumu (URL) not edin. Daha fazla bilgi için bkz. Depo çatalı oluşturma.

Dekont

Uygulama, Yeoman aracılığıyla oluşturulmuştur. Express, bower ve grunt kullanır. Ayrıca bağımlılıklar olarak bazı npm paketlerini içerir. Örnek, Nginx’i ayarlayan ve uygulamayı dağıtan bir betik de içerir. Sanal makinelerde yürütülür. Betik özellikle:

  1. Node, Nginx ve PM2'yi yükler.
  2. Nginx ve PM2’yi yapılandırır.
  3. Düğüm uygulamasını başlatır.

Jenkins eklentilerini yapılandırma

İlk olarak iki Jenkins eklentisini yapılandırmanız gerekir: NodeJS ve VS Team Services Sürekli Dağıtımı.

  1. Jenkins hesabınızı açın ve Manage Jenkins (Jenkins’i yönet) seçeneğini belirleyin.
  2. Manage Jenkins (Jenkins’i yönet) sayfasında Manage Plugins (Eklentileri yönet) seçeneğini belirleyin.
  3. Listeyi filtreleyerek NodeJS eklentisini bulun ve Yeniden başlatmadan yükle seçeneğini belirleyin. Adding the NodeJS plug-in to Jenkins
  4. Listeyi filtreleyerek VS Team Services Sürekli Dağıtımı eklentisini bulun ve Yeniden başlatmadan yükle seçeneğini belirleyin.
  5. Jenkins panosuna geri dönüp Manage Jenkins (Jenkins’i yönet) seçeneğini belirleyin.
  6. Genel Araç Yapılandırması seçeneğini belirleyin. NodeJS öğesini bulun ve NodeJS yüklemeleri seçeneğini belirleyin.
  7. Otomatik olarak yükle seçeneğini belirleyin ve bir Ad değeri girin.
  8. Kaydet'i seçin.

Node.js için Jenkins Serbest stil projesi yapılandırma

  1. Yeni Öğe’yi seçin. Bir öğe adı girin.
  2. Serbest stilde proje’yi seçin. Tamam seçeneğini işaretleyin.
  3. Kaynak Kodu Yönetimi sekmesinde Git’i seçin ve uygulama kodunuzu içeren deponun ve dalın ayrıntılarını girin.
    Add a repo to your build
  4. Derleme Tetikleyicileri sekmesinde SCM’yi Yokla seçeneğini belirleyin ve üç dakikada bir Git deposundaki değişiklikleri yoklamak için H/03 * * * * zamanlamasını girin.
  5. Derleme Ortamı sekmesinde Düğüm Sağla &npm bin/ klasör YOLU'nuseçin ve NodeJS Yükleme değerini seçin. npmrc dosyası değerini use system default olarak ayarlanmış şekilde bırakın.
  6. Derleme sekmesinde Kabuk yürüt’ü seçin ve npm install komutunu girerek tüm bağımlılıkların güncelleştirildiğinden emin olun.

Azure DevOps Services tümleştirmesi için Jenkins’i yapılandırma

Dekont

Aşağıdaki adımlar için kullandığınız kişisel erişim belirtecinin, Azure DevOps Services’ta Yayınlama (okuma, yazma, yürütme ve yönetme) iznini içerdiğinden emin olun.

  1. Önceden oluşturmadıysanız, Azure DevOps Services kuruluşunuzda bir PAT oluşturun. Jenkins, Azure DevOps Services kuruluşunuza erişmek için bu bilgileri zorunlu tutar. Bu bölümün ilerleyen kısımlarındaki adımlar için belirteç bilgilerini saklayın.

    Belirteç oluşturma hakkında bilgi edinmek için Azure DevOps Services için nasıl kişisel erişim belirteci oluştururum? bölümünü okuyun.

  2. Derleme Sonrası Eylemler sekmesinde Derleme sonrası eylem ekle seçeneğini belirleyin. Yapıtları arşivle’yi seçin.

  3. Arşivlenecek dosyalar için **/* değerini girerek tüm dosyaları dahil edin.

  4. Başka bir eylem oluşturmak için Derleme sonrası eylem ekle’yi seçin.

  5. TFS/Team Services’te yayınlamayı tetikle seçeneğini belirleyin. Azure DevOps Services kuruluşunuz için https://{your-organization-name}.visualstudio.com gibi bir URI girin.

  6. Proje adını girin.

  7. Yayın işlem hattı için bir ad seçin. (Bu işlem hattını daha sonra Azure DevOps Services’ta oluşturun.)

  8. Azure DevOps Services veya Azure DevOps Server ortamınıza bağlanmak için kimlik bilgilerini seçin:

    • Azure DevOps Services kullanıyorsanız, Kullanıcı adı alanını boş bırakın.
    • Azure DevOps Server'ın şirket içi sürümünü kullanıyorsanız bir kullanıcı adı ve parola girin.
      Configuring Jenkins post-build actions
  9. Jenkins projesini kaydedin.

Jenkins hizmet uç noktası oluşturma

Hizmet uç noktası, Azure DevOps Services’ın Jenkins’e bağlanmasına olanak sağlar.

  1. Azure DevOps Services’ta Hizmetler sayfasını açın, Yeni Hizmet Uç Noktası listesini açın ve Jenkins’i seçin. Add a Jenkins endpoint
  2. Bağlantı için bir ad girin.
  3. Jenkins sunucunuzun URL’sini girin ve Güvenilmeyen SSL sertifikalarını kabul et seçeneğini belirleyin. Örnek bir URL: http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Jenkins hesabınız için kullanıcı adı ve parolayı girin.
  5. Bilgilerin doğru olup olmadığını denetlemek için Bağlantıyı doğrula’yı seçin.
  6. Hizmet uç noktasını oluşturmak için Tamam’ı seçin.

Azure sanal makineleri için dağıtım grubu oluşturma

Yayın işlem hattının sanal makinenize dağıtılabilmesi için Azure DevOps Services aracısını kaydetmek üzere bir dağıtım grubunuz olması gerekir. Dağıtım grupları, dağıtım için hedef makinelerin mantıksal gruplarının tanımlanmasını ve her bir makineye gerekli aracının yüklenmesini kolaylaştırır.

Dekont

Aşağıdaki yordamda, önkoşulları yüklediğinizden ve betiği sudo ayrıcalıklarıyla çalıştırmadığınızdan emin olun.

  1. Derleme ve Yayın hub'ının Yayınlar sekmesini açın, Dağıtım grupları'nı açın ve + Yeni'yi seçin.
  2. Dağıtım grubu için bir ad ve isteğe bağlı bir açıklama girin. Daha sonra, Oluştur'u seçin.
  3. Dağıtım hedefi sanal makineniz için işletim sistemini seçin. Örneğin, Ubuntu 16.04+ seçeneğini belirleyin.
  4. Kimlik doğrulaması için betikte kişisel bir erişim belirteci kullan seçeneğini belirleyin.
  5. Sistem önkoşulları bağlantısını seçin. İşletim sisteminiz için önkoşullarını yükleyin.
  6. Betiği panoya kopyala’yı seçerek betiği kopyalayın.
  7. Dağıtım hedefi sanal makinenizde oturum açın ve betiği çalıştırın. Betiği sudo ayrıcalıklarıyla çalıştırmayın.
  8. Yüklemeden sonra sizden dağıtım grubu etiketleri istenir. Varsayılanları kabul edin.
  9. Azure DevOps Services’ta, Dağıtım Grupları bölümündeki Hedefler kısmında yeni kaydettiğiniz sanal makinenizin olup olmadığını denetleyin.

Azure Pipelines yayın işlem hattı oluşturma

Yayın işlem hattı, Azure Pipelines’ın uygulamayı dağıtmak için kullandığı işlemi belirtir. Bu örnekte, bir kabuk betiği yürütürsünüz.

Azure Pipelines’da yayın işlem hattı oluşturmak için:

  1. Derleme ve Yayın hub'ının Yayınlar sekmesini açın ve Yayın işlem hattı oluştur'u seçin.
  2. Boş şablonunu seçerek Boş işlem ile başlamayı seçin.
  3. Yapıtlar bölümünde + Yapıt Ekle seçeneğini belirleyin ve Kaynak türü için Jenkins’i seçin. Jenkins hizmet uç noktası bağlantınızı seçin. Ardından Jenkins kaynak işini seçin ve Ekle seçeneğini belirleyin.
  4. Ortam 1’in yanındaki üç noktayı seçin. Dağıtım grubu aşaması ekle’yi seçin.
  5. Dağıtım grubunuzu seçin.
  6. Dağıtım grubu aşaması’na görev eklemek için + seçeneğini belirleyin.
  7. Kabuk Betiği görevini seçin ve Ekle seçeneğini belirleyin. Kabuk Betiği görevi, Node.js’yi yükleyip uygulamayı başlatmak için her bir sunucuda çalıştırılacak bir betik için yapılandırmayı sağlar.
  8. Betik Yolu için $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh girin.
  9. Gelişmiş’i seçin ve Çalışma Dizinini Belirtin seçeneğini etkinleştirin.
  10. Çalışma Dizini için $(System.DefaultWorkingDirectory)/Fabrikam-Node girin.
  11. Yayın işlem hattının adını, Jenkins’te derlemenin Derleme Sonrası Eylemler sekmesinde belirttiğiniz ad olacak şekilde düzenleyin. Jenkins, kaynak yapıtlar güncelleştirildiğinde yeni yayını tetikleyebilmesi için bu adı zorunlu tutar.
  12. Kaydet’i seçin ve Tamam’ı seçerek yayın işlem hattını kaydedin.

El ile ve CI ile tetiklenen dağıtımlar yürütme

  1. + Yayın’ı seçin ve Yayın Oluştur seçeneğini belirleyin.
  2. Vurgulanan açılır listede tamamladığınız derlemeyi seçin ve Kuyruk seçeneğini belirleyin.
  3. Açılır iletide yayın bağlantısını seçin. Örneğin: "Yayın-1 yayını oluşturulmuştur."
  4. Yayın konsolu çıktısını izlemek için Günlükler sekmesini açın.
  5. Tarayıcınızda, dağıtım grubunuza eklediğiniz sunuculardan birinin URL’sini açın. Örneğin, http://{your-server-ip-address} girin.
  6. Kaynak Git deposuna gidin ve app/views/index.jade dosyasındaki h1 başlığının içeriklerini, değiştirilen bazı metinlerle değiştirin.
  7. Değişikliğinizi işleyin.
  8. Birkaç dakika sonra, Azure DevOps’un Yayınlar sayfasında yeni bir yayının oluşturulduğunu görürsünüz. Gerçekleşen dağıtımı görmek için yayını açın. Tebrikler!

Jenkins eklentisiyle ilgili sorunları giderme

Jenkins eklentileriyle ilgili hatalarla karşılaşırsanız, jenkins JIRA'da belirli bileşen için bir sorun oluşturun.

Sonraki adımlar

Bu öğreticide, derleme için Jenkins’i ve yayın için Azure DevOps Services’ı kullanarak bir uygulamanın Azure’a dağıtımını otomatikleştirdiniz. Şunları öğrendiniz:

  • Jenkins’te uygulamanızı derleme.
  • Azure DevOps Services tümleştirmesi için Jenkins’i yapılandırın.
  • Azure sanal makineleri için dağıtım grubu oluşturma.
  • VM'leri yapılandıran ve uygulamayı dağıtan bir Azure Pipeline oluşturun.

Hem Derleme hem de Yayın adımları için Azure Pipelines'ı kullanma hakkında bilgi edinmek için buna bakın.

VM'lere dağıtmak üzere YAML tabanlı CI/CD işlem hattı yazma hakkında bilgi edinmek için sonraki öğreticiye geçin.