Öğretici: Jenkins ve Azure CLI ile Azure Uygulaması Hizmetine dağıtma

Önemli

Birçok Azure hizmeti Jenkins eklentilerine sahiptir. Bu eklentilerden bazıları 29 Şubat 2024 itibarıyla destekten çıkarılacaktır. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirmenin şu anda önerilen yoludur. Daha fazla bilgi için Azure için Jenkins eklentileri makalesine bakın.

Azure'a java web uygulaması dağıtmak için Jenkins İşlem Hattı'nda Azure CLI kullanabilirsiniz. Bu öğreticide aşağıdaki görevleri yerine getirin:

  • Jenkins sanal makinesi oluşturma
  • Jenkins’i yapılandırma
  • Azure'da web uygulaması oluşturma
  • GitHub deposu hazırlama
  • Jenkins işlem hattı oluşturma
  • İşlem hattını çalıştırma ve web uygulamasını doğrulama

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Jenkins’i yapılandırma

Aşağıdaki adımlarda, Jenkins denetleyicisine gerekli Java JDK ve Maven'ın nasıl yükleneceği gösterilmektedir:

  1. SSH kullanarak Jenkins denetleyicisinde oturum açın.

  2. Azure için OpenJDK'nin Azul Zulu derlemesini bir apt-get deposundan indirin ve yükleyin:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
    sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
    sudo apt-get -q update
    sudo apt-get -y install zulu-8-azure-jdk
    
  3. Maven'ı yüklemek için aşağıdaki komutu çalıştırın:

    sudo apt-get install -y maven
    

Jenkins kimlik bilgilerine Azure hizmet sorumlusu ekleme

Aşağıdaki adımlarda Azure kimlik bilgilerinizin nasıl belirtileceğini gösterilmektedir:

  1. Kimlik Bilgileri eklentisinin yüklü olduğundan emin olun.

  2. Jenkins panosunda Kimlik Bilgileri - Sistem ->> öğesini seçin.

  3. Genel kimlik bilgileri(kısıtlamasız) seçeneğini belirleyin.

  4. Microsoft Azure hizmet sorumlusu eklemek için Kimlik Bilgileri Ekle'yi seçin. Kimlik bilgisi türünün Parolalı Kullanıcı adı olduğundan emin olun ve aşağıdaki öğeleri girin:

    • Kullanıcı adı: Hizmet sorumlusu appId
    • Parola: Hizmet sorumlusu password
    • Kimlik: Kimlik bilgisi tanımlayıcısı (örneğin AzureServicePrincipal)

Java web uygulamasını dağıtmak için Azure App Service oluşturma

ÜCRETSİz fiyatlandırma katmanıyla bir Azure Uygulaması Hizmet planı oluşturmak için az appservice plan create komutunu kullanın:

az appservice plan create \
    --name <app_service_plan> \ 
    --resource-group <resource_group> \
    --sku FREE

Önemli noktalar:

  • Uygulama hizmeti planı, uygulamalarınızı barındırmak için kullanılan fiziksel kaynakları tanımlar.
  • Bir appservice planına atanan tüm uygulamalar bu kaynakları paylaşır.
  • Appservice planları, birden çok uygulama barındırırken maliyet tasarrufu yapmanızı sağlar.

Azure web uygulaması oluşturma

App Service planında myAppServicePlan bir web uygulaması tanımı oluşturmak için az webapp create komutunu kullanın.

az webapp create \
    --name <app_name> \ 
    --resource-group <resource_group> \
    --plan <app_service_plan>

Önemli noktalar:

  • Web uygulaması tanımı, uygulamanıza erişebilmek için bir URL sağlar ve çeşitli seçenekleri yapılandırarak kodunuzu Azure'a dağıtır.
  • Yer tutucuyu <app_name> benzersiz bir uygulama adıyla değiştirin.
  • Uygulama adı, web uygulamasının varsayılan etki alanı adının bir parçasıdır. Bu nedenle adın Azure'daki tüm uygulamalarda benzersiz olması gerekir.
  • Uygulamanızı kullanıcılarınızın kullanımına sunmadan önce web uygulamasına bir özel etki alanı adı girdisi eşleyebilirsiniz.

Java'yı yapılandırma

Uygulama için Java çalışma zamanı yapılandırmasını ayarlamak için az appservice web config update komutunu kullanın:

az webapp config set \ 
    --name <app_name> \
    --resource-group <resource_group> \ 
    --java-version 1.8 \ 
    --java-container Tomcat \
    --java-container-version 8.0

GitHub deposu hazırlama

  1. Azure için Basit Java Web Uygulaması deposunu açın.

  2. Depoyu kendi GitHub hesabınıza çatal yapmak için Çatal düğmesini seçin.

  3. Dosya adına tıklayarak Jenkinsfile dosyasını açın.

  4. Dosyayı düzenlemek için kalem simgesini seçin.

  5. Abonelik kimliğini ve kiracı kimliğini güncelleştirin.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Sırasıyla 22. ve 23. satırdaki web uygulamanızın kaynak grubunu ve adını güncelleştirin.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Jenkins örneğinizdeki kimlik bilgisi kimliğini güncelleştirme

    withCredentials([usernamePassword(credentialsId: '<service_princial>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Jenkins işlem hattı oluşturma

Jenkins işlem hattı oluşturmak için aşağıdakileri yapın:

  1. Jenkins'i bir web tarayıcısında açın.

  2. Yeni Öğe’yi seçin.

  3. İş için bir ad girin.

  4. İşlem Hattı'nı seçin.

  5. Tamam seçeneğini işaretleyin.

  6. İşlem Hattı'nı seçin.

  7. Definition (Tanım) için Pipeline script from SCM'yi (SCM'den işlem hattı betiği) seçin.

  8. SCM için Git'i seçin.

  9. Çatallanmış deponuzun GitHub URL'sini girin: https:\<forked_repo\>.git

  10. Kaydet'i seçin.

İşlem hattınızı test etme

  1. Oluşturduğunuz işlem hattına gidin

  2. Şimdi Derle'yi seçin

  3. Derleme tamamlandıktan sonra, derleme ayrıntılarını görmek için Konsol Çıkışı'nı seçin.

Web uygulamanızı doğrulama

WAR dosyasının web uygulamanıza başarıyla dağıtıldığından emin olmak için aşağıdakileri yapın:

  1. Aşağıdaki URL'ye göz atın: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Aşağıdakine benzer bir metin görmeniz gerekir:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Şu URL'ye göz atın (x ve <y değerlerini toplanacak iki değerle değiştir><): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>>.

    Example of running the demo add

Linux'ta Azure Uygulaması Hizmeti'ne dağıtma

App Service, desteklenen uygulama yığınları için web uygulamalarını Linux'ta yerel olarak da barındırabilir. Ayrıca özel Linux kapsayıcıları da çalıştırabilir (Kapsayıcılar için Web App olarak da bilinir.)

Linux'ta bir Azure Uygulaması Hizmetine dağıtmak için betiği değiştirebilirsiniz. Linux üzerinde App Service Docker'i destekler. Bu nedenle, web uygulamanızı hizmet çalışma zamanıyla docker görüntüsüne paketleyen bir Dockerfile sağlarsınız. Eklenti görüntüyü oluşturur, docker kayıt defterine gönderir ve görüntüyü web uygulamanıza dağıtır.

  1. Linux ve Azure Container Registry üzerinde Azure Uygulaması Hizmeti oluşturmak için özel bir kapsayıcı kullanarak özel yazılımı Azure Uygulaması Hizmetine geçirme bölümüne bakın.

        az group create --name myResourceGroup2 --location westus2
        az acr create --name myACRName --resource-group myResourceGroup2 --sku Basic --admin-enabled true
        az appservice plan create --name myAppServicePlan --resource-group  myResourceGroup2 --is-linux
        az webapp create --resource-group myResourceGroup2 --plan myAppServicePlan --name myApp --deployment-container-image-name myACRName.azurecr.io/calculator:latest
    
  2. Jenkins'inize Docker yükleyin.

  3. Docker pipeline eklentisinin yüklü olduğundan emin olun.

  4. Çatalını oluşturduğunuz Azure için Basit Java Web App deposunda Jenkinsfile2 dosyasını aşağıdaki gibi düzenleyin:

    1. Abonelik kimliğini ve kiracı kimliğini güncelleştirin.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Kaynak grubunuzun, web uygulamanızın ve ACR'nizin adlarına güncelleştirin (yer tutucuları değerlerinizle değiştirin).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Kimlik bilgilerinize güncelleştirin <azsrvprincipal\>

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. kullanarak Jenkinsfile2Windows'ta Azure web uygulamasına dağıtırken yaptığınız gibi yeni bir Jenkins işlem hattı oluşturun.

  6. Yeni işinizi çalıştırın.

  7. Doğrulamak için Azure CLI'da aşağıdaki komutu çalıştırın:

    az acr repository list -n <myRegistry> -o json
    

    Aşağıdakine benzer sonuçlar görmeniz gerekir:

    [
    "calculator"
    ]
    
  8. konumuna http://<app_name>.azurewebsites.net/api/calculator/ping gidin (yer tutucuyu değiştirin). Aşağıdakine benzer sonuçlar görmeniz gerekir:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. konumuna http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> gidin (yer tutucuları değiştirin). ve için xy belirttiğiniz değerler toplanıp görüntülenir.

Sonraki adımlar