Öğ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 oluşturabileceğ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, tam özellikli bir CI/CD otomasyon araçları kümesi sağlar. Jenkins, CI/CD otomasyonu da sağlayan popüler bir üçüncü taraf CI/CD sunucu tabanlı araçtır. Bulut uygulamanızı veya hizmetinizi nasıl sunabileceğinizi özelleştirmek için Azure DevOps Services ve Jenkins'i birlikte kullanabilirsiniz.

Bu öğreticide jenkins kullanarak bir Node.js web uygulaması oluşturacaksınız. Ardından Azure DevOps kullanarak dağıtabilirsiniz

linux sanal makineleri (VM) içeren bir dağıtım grubuna . Şunları yapmayı öğreneceksiniz:

  • Örnek uygulamayı alın.
  • Jenkins eklentilerini yapılandırın.
  • Node.jsiçin bir Jenkins Freestyle projesi yapılandırın.
  • Azure DevOps Services tümleştirmesi için Jenkins'i yapılandırın.
  • Jenkins hizmet uç noktası oluşturun.
  • Azure sanal makineleri için bir dağıtım grubu oluşturun.
  • Azure Pipelines yayın işlem hattı oluşturun.
  • El ile ve CI ile tetiklenen dağıtımları gerçekleştirir.

Önkoşullar

Örnek uygulamayı alma

Dağıtmak için bir Git deposunda depolanan bir uygulamaya ihtiyacınız vardır. Bu öğretici için GitHub'dan edinilebilen bu örnek uygulamayı kullanmanızı öneririz. Bu kılavuz, 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 fork'unu oluşturun ve bu öğreticinin sonraki adımlarında kullanılacak web adresini (URL) not alın. Daha fazla bilgi için bkz. Depo çatalı oluşturma.

Uyarı

Uygulama Yeoman aracılığıyla oluşturulmuştu. Express, Bower ve Grunt kullanır. Bazı npm paketlerini bağımlılık olarak içerir. Örnek ayrıca Nginx'i ayarlayan ve uygulamayı dağıtan bir betik içerir. Sanal makinelerde yürütülür. Özellikle komut dosyası:

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

Jenkins eklentilerini yapılandırma

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

  1. Jenkins hesabınızı açın ve Jenkins'i yönet'i seçin.
  2. Jenkins'i Yönet sayfasında Eklentileri Yönet'i seçin.
  3. NodeJS eklentisini bulmak için listeyi filtreleyin ve Yeniden başlatmadan yükle seçeneğini belirleyin. NodeJS eklentisini Jenkins'e ekleme
  4. VS Team Services Sürekli Dağıtım eklentisini bulmak için listeyi filtreleyin ve Yeniden başlatmadan yükle seçeneğini belirleyin.
  5. Jenkins panosuna dönün ve Jenkins'i yönet'i seçin.
  6. Genel Araç Yapılandırması'nı seçin. NodeJS'yi bulun ve NodeJS yüklemeleri'ne tıklayın.
  7. Otomatik olarak yükle seçeneğini belirleyin ve bir Ad değeri girin.
  8. Kaydetseçeneğini seçin.

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

  1. Yeni Öğe'yi seçin. Bir öğe adı girin.
  2. Serbest stil proje'yi seçin. Tamam'ı seçin.
  3. Kaynak Kodu Yönetimi sekmesinde Git'i seçin ve deponun ayrıntılarını ve uygulama kodunuzu içeren dalı girin.
    Yapınıza bir depo ekleyin
  4. Yapı Tetikleyicileri sekmesinde SCM'yi Yokla seçeneğini seçin ve Git deposunu değişiklikler için her üç dakikada bir denetlemek amacıyla zamanlamayı H/03 * * * * girin.
  5. Derleme Ortamı sekmesinde Node.js ve npm bin/ klasör yolu'nu seçin ve NodeJS Kurulumu değerini seçin. npmrc dosyasınısistem varsayılanı kullanacak şekilde bırakın.
  6. Oluştur sekmesinde Kabuğu yürüt'e tıklayın ve tüm bağımlılıkların güncelleştirildiğinden emin olmak için komutunu npm install girin.

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

Uyarı

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

  1. Henüz yoksa Azure DevOps Services kuruluşunuzda bir Kişisel Erişim Belirteci (PAT) oluşturun. Jenkins, Azure DevOps Services kuruluşunuza erişmek için bu bilgilere ihtiyaç duyar. Bu bölümdeki yaklaşan adımlar için belirteç bilgilerini depolamayı unutmayın.

    Azure DevOps Services için kişisel bir erişim belirteci oluşturmayı öğrenmek için Nasıl kişisel erişim belirteci oluştururum? konusunu okuyun.

  2. Derleme Sonrası Eylemler sekmesinde Derlemesonrası eylem ekle'yi seçin. Yapıtları arşivle'yi seçin.

  3. Arşive eklenecek dosyalar için, tüm dosyaları içerecek şekilde girin**/*.

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

  5. TFS/Team Services'de "Trigger release" seçeneğini tıklayın. Https:// {your-organization-name}.visualstudio.com gibi Azure DevOps Services kuruluşunuzun URI'sini girin.

  6. Proje adını girin.

  7. Yayın işlem hattı için bir ad seçin. (Bu yayın işlem hattını daha sonra Azure DevOps Services'te oluşturursunuz.)

  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ı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.
      Jenkins derleme sonrası eylemlerini yapılandırma
  9. Jenkins projesini kaydedin.

Jenkins hizmet uç noktası oluşturma

Hizmet uç noktası, Azure DevOps Services'in Jenkins'e bağlanmasına olanak tanır.

  1. Azure DevOps Services'de Hizmetler sayfasını açın, Yeni Hizmet Uç Noktası listesini açın ve Jenkins'i seçin. Jenkins uç noktası ekleme
  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 URL http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Jenkins hesabınızın kullanıcı adını ve parolasını 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 için bir dağıtım grubuna ihtiyacınız vardır. Dağıtım grupları, dağıtım için hedef makinelerden oluşan mantıksal grupları tanımlamayı ve her makineye gerekli aracıyı yüklemeyi kolaylaştırır.

Uyarı

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

  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. Ardından Oluştur'u seçin.
  3. Dağıtım hedefi sanal makineniz için işletim sistemini seçin. Örneğin Ubuntu 16.04+ öğesini seçin.
  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ı yükleyin.
  6. Betiği panoya kopyala seçeneğini seçerek betiği kopyalayın.
  7. Dağıtım hedef 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 dağıtım grubu etiketleri istenir. Varsayılan değerleri kabul edin.
  9. Azure DevOps Services'da, Dağıtım Grupları'nın altındaki Hedefler'de yeni kaydedilen sanal makinenizi denetleyin.

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

Yayın işlem hattı, Azure Pipelines'ın uygulamayı dağıtmak için kullandığı işlemi belirtir. Bu örnekte bir shell script 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çmek için Boş işlem ile başlamayı seçin.
  3. Yapıtlar bölümünde + Yapıt Ekle'yi seçin 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'yi seçin.
  4. Ortam 1'in yanındaki elipsi seçin. Dağıtım grubu aşaması ekle'yi seçin.
  5. Dağıtım grubunuzu seçin.
  6. + görev eklemek için seçin.
  7. Kabuk Betiği görevini seçin ve Ekle'yi seçin. Shell Script görevi, Node.js yüklemek ve uygulamayı başlatmak için her sunucuda çalıştırılacak bir betiğin yapılandırmasını sağlar.
  8. Betik Yolu için $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh girin.
  9. Gelişmiş'i seçin ve Çalışma Dizini Belirt'i etkinleştirin.
  10. Çalışma Dizini için $(System.DefaultWorkingDirectory)/Fabrikam-Node girin.
  11. Yayın işlem hattının adını Jenkins'teki derlemenin Derleme Sonrası Eylemler sekmesinde belirttiğiniz adla düzenleyin. Jenkins, kaynak yapıtlar güncelleştirildiğinde yeni bir sürümü tetikleyebilmek için bu adı gerektirir.
  12. Kaydet'i ve ardından Tamam'ı seçerek yayın işlem hattını kaydedin.

El ile ve CI ile tetiklenen dağıtımları gerçekleştirin.

  1. + Release'i seçin ve Yayın Oluştur'u seçin.
  2. Vurgulanmış açılır listeden tamamladığınız derlemeyi seçin ve Queue'yu seçin.
  3. Açılır iletide yayın bağlantısını seçin. Örneğin: "Sürüm Release-1 oluşturuldu."
  4. Yayın konsolu çıkışını izlemek için Günlükler sekmesini açın.
  5. Tarayıcınızda, dağıtım grubunuz için 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çeriğini değiştirilmiş metinlerle değiştirin.
  7. Değişikliğinizi kaydedin.
  8. Birkaç dakika sonra Azure DevOps'un Yayınlar sayfasında yeni bir sürümün oluşturulduğunu göreceksiniz. Dağıtımın gerçekleştirildiğini görmek için sürümü 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'i kullanarak bir uygulamanın Azure'a dağıtımını otomatik hale geldiniz. Nasıl yapılacağını öğrendinsiniz:

  • Uygulamanızı Jenkins'te oluşturun.
  • Azure DevOps Services tümleştirmesi için Jenkins'i yapılandırın.
  • Azure sanal makineleri için bir dağıtım grubu oluşturun.
  • 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.