AzureWebApp@1 - Azure Web App v1 görevi

Bu görev Linux veya Windows için Bir Azure Web Uygulaması dağıtır.

Syntax

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Girişler

azureSubscription - Azure aboneliği
string. Gereklidir.

Dağıtım için Azure Resource Manager abonelik bağlantısını belirtir.


appType - Uygulama türü
string. Gereklidir. İzin verilen değerler: webApp (Windows'da Web Uygulaması), webAppLinux (Linux'ta Web Uygulaması).

Azure Web App türünü belirtir.


appName - Uygulama adı
string. Gereklidir.

Var olan bir Azure App Service adını belirtir. Yalnızca seçili uygulama türünü temel alan uygulama hizmetleri listelenir.


deployToSlotOrASE - Yuvaya veya App Service Ortamı dağıtma
boolean. İsteğe bağlı. olduğunda appType != ""kullanın. Varsayılan değer: false.

Mevcut bir dağıtım yuvasına veya Azure App Service Ortamına dağıtma seçeneğini seçer.
Her iki hedef için de görevin bir kaynak grubu adı gerekir.
Dağıtım hedefi bir yuvaysa, varsayılan değer üretim yuvasıdır. Diğer tüm mevcut yuva adları da sağlanabilir.
Dağıtım hedefi bir Azure App Service Ortamı ise, yuva adını 'production' olarak bırakın ve kaynak grubu adını belirtin.


resourceGroupName - Kaynak grubu
string. olduğunda deployToSlotOrASE = truegereklidir.

Dağıtım hedefi bir dağıtım yuvası veya Azure App Service Ortamı olduğunda kaynak grubu adı gereklidir.
Yukarıda belirtilen Azure App Service içeren Azure kaynak grubunu belirtir.


slotName - Yuvası
string. olduğunda deployToSlotOrASE = truegereklidir. Varsayılan değer: production.

Üretim yuvası hariç mevcut bir yuvayı belirtir.


package - Paket veya klasör
string. Gereklidir. Varsayılan değer: $(System.DefaultWorkingDirectory)/**/*.zip.

MSBuild tarafından oluşturulan App Service içeriği, sıkıştırılmış zip dosyasını veya savaş dosyasını içeren paket veya klasörün dosya yolu. Değişkenler ( Derleme | Sürümü) ve joker karakterler desteklenir. Örneğin $(System.DefaultWorkingDirectory)/**/*.zip veya $(System.DefaultWorkingDirectory)/**/*.war olabilir.


customDeployFolder - Özel Dağıtım Klasörü
string. İsteğe bağlı. olduğunda package EndsWith .warkullanın.

Dağıtmak istediğiniz özel klasör adını belirtir.
Alan boşsa, paket öğesine <appname>.azurewebsites.net/<warpackagename>dağıtılır.
ROOT girilirse, paket öğesine <appname>.azurewebsited.netdağıtılır.
Diğer tüm örneklerde öğesine dağıtılır <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Çalışma zamanı yığını
string. İsteğe bağlı. olduğunda appType = webAppLinuxkullanın.

Linux üzerinde Web App, uygulamanızı yayımlamak için iki farklı seçenek sunar: özel görüntü dağıtımı (Kapsayıcılar için Web App) ve yerleşik bir platform görüntüsüyle uygulama dağıtımı (Linux üzerinde Web Uygulaması). Bu parametre yalnızca görevdeki bir uygulama türü olarak Linux Web App seçildiğinde kullanılabilir.


startUpCommand - Başlangıç komutu
string. İsteğe bağlı. olduğunda appType = webAppLinuxkullanın.

Başlatma komutunu belirtir.
Örnek:
dotnet run
dotnet filename.dll.


customWebConfig - Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluşturma
string. İsteğe bağlı. olduğunda appType != webAppLinux && package NotEndsWith .warkullanın.

Uygulamada yoksa standart bir web.config oluşturulur ve Azure App Service dağıtılır. web.config değerleri uygulama çerçevesine göre değişir ve düzenlenebilir. Örneğin, node.js uygulaması için web.config bir başlangıç dosyası ve iis_node modül değerleri olacaktır. Bu düzenleme özelliği yalnızca oluşturulan web.configiçindir.


appSettings - Uygulama ayarları
string.

Söz dizimini -key value kullanarak web uygulaması uygulama ayarlarını belirtin (örneğin: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Boşluk içeren değerleri çift tırnak içine alın (örneğin: "Eastern Standard Time").


configurationStrings - Yapılandırma ayarları
string.

Söz dizimini -key value kullanarak web uygulaması yapılandırma ayarlarını belirtin (örneğin: -phpVersion 5.6-linuxFxVersion: node|6.11). Boşluk içeren değerleri çift tırnak içine alın.


deploymentMethod - Dağıtım yöntemi
string. olduğunda appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jargereklidir. İzin verilen değerler: auto (Otomatik algılama), zipDeploy (Zip Dağıtımı), runFromPackage (Paketten Çalıştır). Varsayılan değer: auto.

Uygulama için dağıtım yöntemini seçin. Kabul edilebilir değerler auto, zipDeploy ve runFromPackage'dır.


Görev denetim seçenekleri

Tüm görevlerde görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Bu görev aşağı akış adımlarında, işlerde ve aşamalarda kullanabileceğiniz aşağıdaki çıkış değişkenlerini tanımlar.

AppServiceApplicationUrl
Seçili Azure App Service uygulama URL'si.

Açıklamalar

Web uygulamalarını Azure App Service dağıtmak için bu görevi kullanın.

Dağıtım yöntemleri

Bu görevde çeşitli dağıtım yöntemleri kullanılabilir. Auto varsayılan seçenektir.

Tasarımcı görevinde paket tabanlı dağıtım seçeneğini değiştirmek için Ek Dağıtım Seçenekleri'ni genişletin ve Dağıtım Yöntemini Seç'i etkinleştirin.

görev, Azure App Service ve Azure Pipelines aracısının türüne bağlı olarak uygun bir dağıtım teknolojisi seçer. Görev tarafından kullanılan farklı dağıtım teknolojileri şunlardır:

  • Kudu REST API'leri
  • Zip Deploy
  • RunFromPackage

Varsayılan olarak, görev giriş paketi, app service türü ve aracı işletim sistemi göz önüne alındığında uygun dağıtım teknolojisini seçmeye çalışır.

  • Uygulama hizmeti türü Linux Uygulamasında Web Uygulaması olduğunda Zip Deploy'ı kullanın
  • Bir War dosyası sağlanmışsa War Deploy kullanın
  • Jar dosyası sağlanmışsa Paketten Çalıştır'ı kullanın
  • Diğer tüm kullanıcılar için Zip'ten Çalıştır 'ı kullanın (Zip Deploy aracılığıyla)

Windows olmayan bir aracıda (herhangi bir uygulama hizmeti türü için), görev web uygulamasını dağıtmak için Kudu REST API'lerini kullanır.

Kudu REST API'leri

Kudu REST API'leri , hedef Windows'ta Web App, Linux üzerinde Web App (yerleşik kaynak) veya İşlev Uygulaması olduğunda Windows veya Linux otomasyon aracıları üzerinde çalışır. Görev, dosyaları Azure App Service kopyalamak için Kudu kullanır.

Zip Deploy

Seçilen paket veya klasörün .zip dağıtım paketini oluşturur. Dosya içeriği daha sonra Azure App Service'da işlev uygulamasının wwwroot klasörüne dağıtılır. Bu seçenek wwwroot klasöründeki tüm içeriğin üzerine yazar. Daha fazla bilgi için bkz. Azure İşlevleri için zip dağıtımı.

RunFromPackage

Zip Deploy ile aynı dağıtım paketini oluşturur. Ancak, wwwroot klasörüne dosya dağıtmak yerine paketin tamamı Azure İşlevleri çalışma zamanı tarafından bağlanır. Bu seçenekle, wwwroot klasöründeki dosyalar salt okunur hale gelir. Daha fazla bilgi için bkz. Azure İşlevlerinizi paket dosyasından çalıştırma.

Hata: Azure için erişim belirteci getirilemedi. Kullanılan Hizmet Sorumlusunun geçerli olduğunu ve süresinin dolmadığını doğrulayın.

Görev, Azure ile kimlik doğrulaması yapmak için hizmet bağlantısındaki hizmet sorumlusunu kullanır. Hizmet sorumlusunun süresi dolduysa veya App Service izinleri yoksa, görev bu hatayla başarısız olur. Kullanılan hizmet sorumlusunun geçerliliğini ve uygulama kaydında mevcut olduğunu doğrulayın. Daha fazla bilgi için bkz. Azure abonelik kaynaklarınıza erişimi yönetmek için rol tabanlı erişim denetimini kullanma. Bu blog gönderisi ayrıca hizmet sorumlusu kimlik doğrulaması kullanma hakkında daha fazla bilgi içerir.

SSL hatası

App Service bir sertifika kullanmak istiyorsanız, sertifikanın güvenilir bir sertifika yetkilisi tarafından imzalanması gerekir. Web uygulamanız sertifika doğrulama hataları veriyorsa, büyük olasılıkla otomatik olarak imzalanan bir sertifika kullanıyorsunuz. Hatayı çözmek için derleme veya yayın işlem hattındaki değere true adlı VSTS_ARM_REST_IGNORE_SSL_ERRORS bir değişken ayarlayın.

Sürüm uzun süre kilitleniyor ve sonra başarısız oluyor

Bu sorun, App Service planınızda yetersiz kapasitenin sonucu olabilir. Bu sorunu çözmek için kullanılabilir CPU, RAM ve disk alanını artırmak için App Service örneğinin ölçeğini artırabilir veya farklı bir App Service planıyla deneyebilirsiniz.

5xx hata kodları

5xx hatası görüyorsanız Azure hizmetinizin durumunu denetleyin.

Azure İşlevi aniden çalışmayı durdurdu

Azure İşlevleri, son dağıtımın üzerinden bir yıldan fazla geçtiyse aniden çalışmayı durdurabilir. "deploymentMethod" içinde "RunFromPackage" ile dağıtım yaparsanız, son kullanma tarihi 1 yıl olan bir SAS oluşturulur ve uygulama yapılandırmasında "WEBSITE_RUN_FROM_PACKAGE" değeri olarak ayarlanır. Azure İşlevleri işlev yürütme için paket dosyasına başvurmak üzere bu SAS'yi kullanır, bu nedenle SAS'nin süresi dolduysa işlev yürütülmeyecektir. Bu sorunu çözmek için yeniden dağıtarak son kullanma tarihi bir yıl olan bir SAS oluşturun.

Hata: Belirtilen düzene sahip bir paket bulunamadı

Görevde belirtilen paketin derlemede veya önceki bir aşamada yapıt olarak yayımlanıp yayımlanmadığını ve geçerli işe indirilip indirilmediğini denetleyin.

Hata: Zip dağıtımı kullanarak yayımlama seçeneği msBuild paket türü için desteklenmiyor

MSBuild göreviyle oluşturulan web paketleri (varsayılan bağımsız değişkenlerle), yalnızca Web Dağıtımı tarafından doğru dağıtılabilir iç içe klasör yapısına sahiptir. Bu paketleri dağıtmak için zip'e yayımla dağıtım seçeneği kullanılamaz. Paketleme yapısını dönüştürmek için şu adımları uygulayın:

  1. Çözüm oluşturma görevinde MSBuild Bağımsız Değişkenleri'ni olarak /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"değiştirin:

    Çözüm oluşturma değerlerini gösteren ekran görüntüsü.

  2. Arşiv görevi ekleyin ve değerleri aşağıdaki gibi değiştirin:

    1. Kök klasörü veya dosyayı arşiv olarak değiştirin$(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Yolları arşive önceden ekli kök klasör adı onay kutusunu temizleyin:

      Arşiv değerlerini gösteren ekran görüntüsü.

SSS

ve AzureRmWebAppDeployment görevleri arasındaki AzureWebApp fark nedir?

Azure Web App görevi (AzureWebApp), Azure Web App'e dağıtmanın en basit yoludur. Varsayılan olarak, dağıtımınız Azure Web App'teki kök uygulamaya gerçekleşir.

Azure App Service Dağıtma görevi (AzureRmWebAppDeployment) aşağıdakiler gibi daha fazla özel senaryoyu işleyebilir:

Not

Dosya dönüştürmeleri ve değişken değiştirme, Azure Pipelines'da kullanılmak üzere ayrı Dosya Dönüştürme görevi tarafından da desteklenir. Herhangi bir yapılandırma ve parametre dosyasına dosya dönüştürmeleri ve değişken değiştirmeleri uygulamak için Dosya Dönüştürme görevini kullanabilirsiniz.

Windows üzerinde web uygulaması dağıtımı başarılı oldu ama uygulama çalışmıyor

Bunun nedeni web.config uygulamanızda mevcut olmaması olabilir. Kaynağınıza bir web.config dosyası ekleyebilir veya Uygulama ve Yapılandırma Ayarları'nı kullanarak otomatik olarak oluşturabilirsiniz.

  • Göreve tıklayın ve Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluştur'a gidin.

    web.config parametreleri oluştur iletişim kutusunun ekran görüntüsü.

  • Parametreleri düzenlemek için diğer düğmesine ... tıklayın.

    Açılan iletişim kutusunun ekran görüntüsü.

  • Açılan listeden uygulama türünüzü seçin.

  • Tamam'a tıklayın. Bu, web.config oluşturmak için gereken web.config parametrelerini doldurur.

App Service Ortamı'nda (ASE) web uygulaması dağıtımı çalışmıyor

  • Azure DevOps derleme aracısının ASE'nin İç Load Balancer (ILB) ile aynı sanal ağda (alt ağ farklı olabilir) olduğundan emin olun. Bu, aracının Azure DevOps'tan kod çekmesini ve ASE'ye dağıtım yapmasını sağlar.
  • Azure DevOps kullanıyorsanız aracının İnternet'ten erişilebilir olması gerekmez, ancak Azure DevOps Hizmeti'ne bağlanmak için yalnızca giden erişime ihtiyacı vardır.
  • Bir Sanal Ağ dağıtılan TFS/Azure DevOps Server kullanıyorsanız aracı tamamen yalıtılabilir.
  • Derleme aracısı, dağıtılması gereken Web Uygulamasının DNS yapılandırmasıyla yapılandırılmalıdır. Sanal Ağ içindeki özel kaynakların Azure DNS'de girdileri yoktur, bu nedenle bunun aracı makinesindeki konağın dosyasına eklenmesi gerekir.
  • ASE yapılandırması için otomatik olarak imzalanan bir sertifika kullanılıyorsa, -allowUntrusted MSDeploy için dağıtma görevinde bu seçeneğin ayarlanması gerekir. değişkeninin VSTS_ARM_REST_IGNORE_SSL_ERRORStrueolarak ayarlanması da önerilir. ASE yapılandırması için sertifika yetkilisinden bir sertifika kullanılıyorsa, bu gerekli olmamalıdır.

Hizmet bağlantımı nasıl yapılandırmalıyım?

Bu görev için Azure Resource Manager hizmeti bağlantısı gerekir.

Application Insights ile web işi dağıtımlarını nasıl yapılandırmalıyım?

bir App Service dağıtırken, Application Insights'ı yapılandırdıysanız ve etkinleştirdiyseniz Remove additional files at destinationöğesini de etkinleştirmeniz Exclude files from the App_Data foldergerekir. Bu seçeneğin etkinleştirilmesi, Application Insights uzantısının güvenli durumda kalmasını sağlar. Application Insights sürekli Web İşi App_Data klasörüne yüklendiğinden bu adım gereklidir.

App Service'a dağıtım yaparken ara sunucu arkasındaysa aracımı nasıl yapılandırmalıyım?

Şirket içinde barındırılan aracınız bir web ara sunucusu gerektiriyorsa, aracıyı yapılandırma sırasında ara sunucu hakkında bilgilendirebilirsiniz. Bunun yapılması, aracınızın Azure Pipelines'a bağlanmasına veya ara sunucu üzerinden Azure DevOps Server olanak tanır. Web ara sunucusunun arkasında şirket içinde barındırılan aracı çalıştırma hakkında daha fazla bilgi edinin.

Örnekler

Aşağıda, Web uygulamasını Windows üzerinde çalışan Azure Web App Service dağıtmak için örnek bir YAML kod parçacığı verilmiştir.

variables:
  azureSubscription: Contoso
  # To ignore SSL error uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Linux'ta Web App dağıtmak için parametresini appType ekleyin ve olarak appType: webAppLinuxayarlayın.

Dağıtım yöntemini Zip Deploy olarak belirtmek için parametresini deploymentMethod: zipDeployekleyin. Bu parametre için desteklenen bir diğer değer de değeridir runFromPackage.

Belirtilmezse, auto varsayılan değerdir.

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.104.1 veya üzeri
Görev kategorisi Dağıtma