Öğretici: Jenkins ve Azure CLı ile Azure App Service dağıtım

Önemli

Birçok Azure hizmetine Jenkins eklentileri vardır. Bu eklentilerin bazıları 29 Şubat 2024 itibariyle destek dışı olacaktır. Azure CLı, Jenkins 'i Azure hizmetleriyle tümleştirmeye yönelik Şu anda önerilen yoldur. Daha fazla bilgi için Azure Için Jenkins eklentilerimakalesine bakın.

Bir Java Web uygulamasını Azure 'a dağıtmak için Azure CLı 'yi bir Jenkins ardışık düzenindekullanabilirsiniz. Bu öğreticide, aşağıdaki görevleri gerçekleştirebilirsiniz:

  • 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 'nin nasıl yükleneceği gösterilmektedir:

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

  2. Bir apt-get deposundan Azure için OpenJDK 'nin Azul Zulu derlemesini indirip 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 'yi yüklemek için aşağıdaki komutu çalıştırın:

    sudo apt-get install -y maven
    

Azure hizmet sorumlusunu bir Jenkins kimlik bilgisine ekleyin

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

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

  2. Jenkins panosu içinde kimlik bilgileri- sistem- >' i seçin.

  3. Küresel kimlik bilgilerini seçin (Kısıtlanmamış).

  4. Microsoft Azure hizmet sorumlusueklemek için kimlik bilgileri ekle ' yi seçin. Kimlik bilgisi türünün parola Ile Kullanıcı adı olduğundan emin olun ve aşağıdaki öğeleri girin:

    • Kullanıcı adı: hizmet sorumlusu
    • Parola: hizmet sorumlusu
    • Kimlik: kimlik bilgisi tanımlayıcısı (gibi )

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

Ücretsiz fiyatlandırma katmanıyla Azure App Service bir 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

Anahtar 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 uygulamayı barındırırken maliyet tasarrufu yapmanıza olanak tanır.

Azure web uygulaması oluşturma

App Service planında bir Web uygulaması tanımı oluşturmak için az WebApp Create kullanın .

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

Anahtar 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.
  • <app_name>Yer tutucusunu benzersiz bir uygulama adıyla değiştirin.
  • Uygulama adı, Web uygulaması için 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ızla çatala eklemek 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. Web uygulamanızın kaynak grubunu ve adını sırasıyla 22 ve 23 tarihinde güncelleştirin.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Jenkins örneğiniz için kimlik bilgisi KIMLIĞINI güncelleştirin

    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çin.

  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. adreslenmiş deponuz için 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 Oluştur ' u 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ığını doğrulamak için aşağıdakileri yapın:

  1. Aşağıdaki URL 'ye gidin: 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. Aşağıdaki URL 'ye gidin ( <> toplanacak iki değerle x ve y 'yi yerine koyun <> ): http:// < app_name > . azurewebsites.net/api/Calculator/Add?x = < x >& y = < y > .

    Demo Add çalıştırma örneği

Linux üzerinde Azure App Service dağıtma

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

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

  1. Linux ve Azure Container Registry Azure App Service oluşturmak için özel bir kapsayıcı kullanarak Azure App Service özel yazılım 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 'e Docker 'Yi yüklemeyin.

  3. Docker ardışık düzen eklentisinin yüklü olduğundan emin olun.

  4. Azure deposu için aynı basit Java Web uygulamasında, 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. <azsrvprincipal\>Kimlik BILGISI kimliğinize güncelleştirme

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. kullanarak Windows Azure web app 'e dağıtım yaparken yaptığınız gibi yeni bir jenkins işlem hattı oluşturun Jenkinsfile2 .

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

  7. Azure CLı 'de doğrulamak için şu komutu çalıştırın:

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

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

    [
    "calculator"
    ]
    
  8. http://<app_name>.azurewebsites.net/api/calculator/ping(Yer tutucuyu değiştirme) öğesine gidin. Aşağıdakine benzer sonuçlar görüyor gerekir:

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

Sonraki adımlar