AzureWebApp@1 - Azure Web App v1 görevi

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

Sözdizimi

# 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ş

Azure aboneliği
string. Gerekli.

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


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

Azure Web App türünü belirtir.


uygulama adı
string. Gerekli.

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


deployToSlotOrASE - Yuvaya veya App Service Ortamına Dağıtma
boolean. Opsiyonel. appType != ""olduğunda 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.


kaynak grubu
string. deployToSlotOrASE = truegerekir.

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 içeren Azure kaynak grubunu belirtir.


slotName - Yuvası
string. deployToSlotOrASE = truegerekir. Varsayılan değer: production.

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


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

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


Özel Dağıtım Klasörü
string. Opsiyonel. package EndsWith .warolduğunda kullanın.

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


çalışma zamanı yığını
string. Opsiyonel. appType = webAppLinuxolduğunda kullanı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 Uygulaması) ve yerleşik 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.


başlangıç komutu
string. Opsiyonel. appType = webAppLinuxolduğunda kullanın.

Başlat komutunu belirtir.
Mesela:
dotnet run
dotnet filename.dll.


customWebConfig - Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluşturma
string. Opsiyonel. appType != webAppLinux && package NotEndsWith .warolduğunda kullanın.

Uygulamada yoksa standart bir web.config oluşturulur ve Azure App Service'e 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ğerlerine sahip olur. Bu düzenleme özelliği yalnızca oluşturulan web.configiçindir.


uygulama ayarlarını
string.

-key value söz dizimini 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 dizimi -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. appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jargerekir. İ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 otomatik, zipDeployve runFromPackage.


Görev denetimi seçenekleri

Tüm görevlerin, 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örevaşağıdaki çıkış değişkenlerini tanımlar. Bu değişkenleri aşağı akış adımlarında, işlerde ve aşamalarda kullanabilirsiniz.

AppServiceApplicationUrl
seçili Azure App Service'in uygulama URL'sini .

Açıklamalar

Web uygulamalarını Azure App Service'e 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 genişletin ve Dağıtım Yöntemi Seç'ietkinleş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 Dağıtımı
  • 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 dağıtımı 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 Dağıtımı 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'lerine dayanır.

Kudu REST API'leri

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

Zip Dağıtımı

Seçilen paket veya klasörün .zip dağıtım paketini oluşturur. Dosya içeriği daha sonra Azure App Service'teki işlev uygulamasının wwwroot klasörüne dağıtılır. Bu seçenek wwwroot klasöründeki tüm mevcut içeriğin üzerine yazar. Daha fazla bilgi için bkz. Azure İşlevleriiç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 bir 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 hizmet sorumlusu kimlik doğrulaması kullanma hakkında daha fazla bilgi içerir.

SSL hatası

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

Bir sürüm uzun süre askıda kalıyor 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

Son dağıtımdan bu yana bir yıldan fazla zaman geçtiyse Azure İşlevleri 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ütmesi için paket dosyasına başvurmak üzere bu SAS'yi kullanır, dolayısıyla 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 desene sahip paket bulunamadı

Görevde bahsedilen paketin derlemede veya önceki bir aşamada yapıt olarak yayımlanıp yayımlanmadığı 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örevi aracılığıyla 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 bir 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ı izleyin:

  1. Çözüm oluşturma görevinde, MSBuild Bağımsız Değişkenleri'ni olarak 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. arşivleye Kök klasör veya dosyayı olarak değiştirin.

    2. Yolları arşivle için ön ekli kök klasör adını onay kutusunu temizleyin:

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

SSS

AzureWebApp ile AzureRmWebAppDeployment görevleri arasındaki 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 () aşağıdakiler gibi daha fazla özel senaryoyu işleyebilir:

  • Web paketleri ve XML parametre dosyalarının içinde yapılandırma ayarlarını değiştirin.
  • IIS dağıtım işlemine alışkınsanız web dağıtımıile dağıtma .
  • sanal uygulamalara dağıtma.
  • Kapsayıcı uygulamaları, İşlev uygulamaları, Web İşleri veya API ve Mobil uygulamalar gibi diğer uygulama türlerine dağıtın.

Not

Dosya dönüşümleri 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'ta web uygulaması dağıtımı başarılı ancak uygulama çalışmıyor

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

  • Göreve tıklayın ve python, Node.js, Go ve Java uygulamalarıiçin web.config parametreleri oluştur 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.configoluş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 İç Yük Dengeleyicisi (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.
  • Sanal Ağda 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ğdaki ö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, MSDeploy için dağıtım görevinde -allowUntrusted seçeneğinin ayarlanması gerekir. ayrıca VSTS_ARM_REST_IGNORE_SSL_ERRORS değişkenini trueolarak ayarlamanız ö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,bir Azure Resource Manager hizmet bağlantısı gerektirir.

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

App Service'e dağıtım yaparken, Application Insights yapılandırdıysanız ve Remove additional files at destinationetkinleştirdiyseniz Exclude files from the App_Data folder'yi de etkinleştirmeniz gerekir. 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'e 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 ara sunucu aracılığıyla Azure Pipelines'a veya Azure DevOps Server'a bağlanmasına olanak tanır. Web proxyarkası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'e 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 appType parametresini ekleyin ve appType: webAppLinuxolarak ayarlayın.

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

Belirtilmezse, auto varsayılan değerdir.

Gereksinim -leri

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