Azure Web uygulaması dağıtma

.NET projesi oluşturma

üzerinde çalışmak için bir .net projeniz yoksa yeni bir tane oluşturun ve kodunuzu GitHub deponuza veya Azure Repos karşıya yükleyin. En son .net 6,0 SDK 'yı yükleyerek başlayın.

Yeni bir .NET 6 WebApp oluşturun.

dotnet new webapp -f net6.0

Aynı Terminal oturumundan, uygulamayı dotnet run proje dizininizdeki komutunu kullanarak yerel olarak çalıştırın.

dotnet run

kodunuzu Upload

kodunuzu yeni webapp GitHub veya Azure Repos Upload:

İşlem hattınızı oluşturma

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. Pipelinesgidin ve yeni işlem hattı' nı seçin.

  3. ilk olarak GitHub kaynak kodunuzun konumu olarak seçerek sihirbazın adımlarını gözden geçir.

  4. oturum açmak için GitHub yönlendiriliyorsunuz. bu durumda GitHub kimlik bilgilerinizi girin.

  5. Depo listesi göründüğünde, deponuzu seçin.

  6. Azure Pipelines uygulamasını yüklemek için GitHub yönlendiriliyorsunuz. Öyleyse, yüklemeyi Onayla' yı seçin.

  7. Yapılandır sekmesi göründüğünde ASP.NET Core' yi seçin.

  8. Yeni ardışık düzen belirdiğinde, ne yaptığını görmek için YAML 'ye göz atın. Hazırsanız Kaydet ve Çalıştır' ı seçin.

Azure Web uygulaması görevini ekleme

  1. Azure Web uygulaması görevini eklemek için görev yardımcısını kullanın.

    Azure Web uygulaması görevi.

  2. Bağlantı türü için Azure Resource Manager seçin ve Azure aboneliğiniziseçin. Bağlantınızı yetkilendirdiğinizden emin olun.

  3. Linux üzerinde Web uygulaması ' nı seçin ve , appName ve bilgilerinizi girin package . Tüm YAML 'niz şöyle görünmelidir.

    variables:
      buildConfiguration: 'Release'
    
    steps:
    - script: dotnet build --configuration $(buildConfiguration)
      displayName: 'dotnet build $(buildConfiguration)'
    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: true
    - task: AzureWebApp@1
      inputs:
        azureSubscription: '<Azure service connection>'
        appType: 'webAppLinux'
        appName: '<Name of web app>'
        package: '$(System.DefaultWorkingDirectory)/**/*.zip'
    
    • Azuyeniden gönderme: Azure aboneliğiniz.
    • appname: mevcut App Service 'in adı.
    • paket: paketin dosya yolu veya App Service içeriklerinizi içeren bir klasör. Joker karakterler desteklenir.

yeni kullanıcıları henüz Azure DevOps Server 2019 ' dan dağıtmak üzere yaml işlem hatlarını kullanmaya danışmanız. Deneyimli bir işlem hattı kullanıcısı ve .NET Core uygulamanızı derlemek için zaten bir YAML işlem hattı varsa, aşağıdaki örnekleri yararlı bulabilirsiniz.

YAML işlem hatları TFS 'de kullanılamaz.

Artık, kullanıcıların bir Azure Web uygulaması dağıtımını özelleştirmek için yaptığı daha yaygın değişikliklerden bazılarını öğrenmek için bu konunun geri kalanını okumak üzere hazır olursunuz.

Azure Web uygulaması görevini kullanma

Azure Web uygulamasına dağıtmanın en kolay yolu Azure Web App ( ) görevini kullanmaktır.

Web Dağıtımı paketi dağıtma (ASP.NET)

bir .zip Web Dağıtımı paketini (örneğin, ASP.NET bir webuygulamasından) bir Azure Web uygulamasına dağıtmak için, azure-pipelines. yml dosyanıza aşağıdaki kod parçacığını ekleyin:

- task: AzureWebApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<Name of web app>'
    package: $(System.DefaultWorkingDirectory)/**/*.zip    
  • Azuyeniden gönderme: Azure aboneliğiniz.
  • appname: mevcut App Service 'in adı.
  • paket: paketin dosya yolu veya App Service içeriklerinizi içeren bir klasör. Joker karakterler desteklenir.

Kod parçacığı, YAML dosyanızdaki derleme adımlarının, aracıdaki klasörde ZIP arşivini üretdüğünü varsayar $(System.DefaultWorkingDirectory) .

Azure hizmet bağlantıları hakkında daha fazla bilgi için aşağıdaki bölümebakın.

.NET uygulaması dağıtma

.NET Core uygulamasıoluşturuyorsanız, derlemeyi bir uygulamaya dağıtmak için aşağıdaki kırpılmış kullanın.

variables:
  buildConfiguration: 'Release'

steps:
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    publishWebProjects: true
- task: AzureWebApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: 'webAppLinux'
    appName: '<Name of web app>'
    package: '$(System.DefaultWorkingDirectory)/**/*.zip'
  • Azuyeniden gönderme: Azure aboneliğiniz.
  • apptype: Web uygulaması türü.
  • appname: mevcut App Service 'in adı.
  • paket: paketin dosya yolu veya App Service içeriklerinizi içeren bir klasör. Joker karakterler desteklenir.

JavaScript Node.js uygulaması dağıtma

Bir JavaScript Node.js uygulamasıoluşturuyorsanız, çalışma dizininizin tüm içeriğini Web uygulamasına yayımlarsınız. Bu kod parçacığı, uygulama bir tane içermiyorsa ve Azure Web uygulamasında ıısnode işleyicisini başlattığında dağıtım sırasında da bir Web.config dosyası üretir:

- task: AzureWebApp@1
  inputs:
    azureSubscription: '<Azure service connections>'
    appName: '<Name of web app>'
    package: '$(System.DefaultWorkingDirectory)'
    customWebConfig: '-Handler iisnode -NodeStartFile server.js -appType node'
  • Azuyeniden gönderme: Azure aboneliğiniz.
  • appname: mevcut App Service 'in adı.
  • paket: paketin dosya yolu veya App Service içeriklerinizi içeren bir klasör. Joker karakterler desteklenir.
  • Customwebconfig: Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluşturun. Uygulamanın bir tane yoksa, standart bir web.config dosya oluşturulup Azure App Service dağıtılır.

Azure hizmet bağlantıları hakkında daha fazla bilgi için aşağıdaki bölümebakın.

YAML işlem hatları TFS 'de kullanılamaz.

Hizmet bağlantısı kullanma

Azure App Service dağıtmak için bir Azure Resource Manager hizmet bağlantısıkullanmanız gerekir. azure hizmet bağlantısı, Azure Pipelines veya Azure DevOps Server azure 'a bağlanmak için kimlik bilgilerini depolar.

Azure Resource Manager hizmeti bağlantılarıhakkında daha fazla bilgi edinin. Hizmet bağlantınız beklendiği gibi çalışmıyorsa bkz. hizmet bağlantılarında sorun giderme.

Görev için bir Azure hizmet bağlantınızın olması gerekir AzureWebApp . azure hizmet bağlantısı, Azure Pipelines 'ten azure 'a bağlanmak için kimlik bilgilerini depolar. Bkz. Azure hizmet bağlantısı oluşturma.

YAML işlem hatları TFS 'de kullanılamaz.

Sanal bir uygulamaya dağıtma

Varsayılan olarak, dağıtımınız Azure Web uygulamasındaki kök uygulama ile yapılır. Görevin özelliğini kullanarak belirli bir sanal uygulamaya dağıtım yapabilirsiniz VirtualApplicationAzureRmWebAppDeployment :

- task: AzureRmWebAppDeployment@4
  inputs:
    VirtualApplication: '<name of virtual application>'

YAML işlem hatları TFS 'de kullanılamaz.

Bir yuvaya dağıtma

Azure Web uygulamasını birden çok yuvaya sahip olacak şekilde yapılandırabilirsiniz. Yuvalar, uygulamanızı güvenli bir şekilde dağıtmanıza ve müşterileriniz için kullanılabilir hale getirmeden önce test yapmanıza olanak sağlar.

Aşağıdaki örnek, bir hazırlama yuvasına nasıl dağıtılacağını gösterir ve ardından bir üretim yuvasına takas edin:

- task: AzureWebApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: webAppLinux
    appName: '<name of web app>'
    deployToSlotOrASE: true
    resourceGroupName: '<name of resource group>'
    slotName: staging

- task: AzureAppServiceManage@0
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: webAppLinux
    WebAppName: '<name of web app>'
    ResourceGroupName: '<name of resource group>'
    SourceSlot: staging
    SwapWithProduction: true
  • Azuyeniden gönderme: Azure aboneliğiniz.
  • Apptype: (isteğe bağlı) Linux üzerinde bir Web uygulamasına dağıtmak için kullanın.
  • appname: mevcut App Service 'in adı.
  • Deploytoslotorampa:Boolean. Mevcut bir dağıtım yuvasına veya Azure App Service Ortamı dağıtın.
  • Resourcegroupname: kaynak grubunun adı. True ise gereklidir deployToSlotOrASE .
  • slotname: yuvanın adı, varsayılan olarak . True ise gereklidir deployToSlotOrASE .
  • Sourceslot: true olduğunda, üretime gönderilen yuva .
  • Swapwithproduction: Boolean. Kaynak yuvasının akışını üretim ile değiştirin.

YAML işlem hatları TFS 'de kullanılamaz.

Birden çok Web uygulamasına dağıtma

YAML dosyanızdaki işleri , bir dağıtım işlem hattı ayarlamak için kullanabilirsiniz. İşleri kullanarak birden çok Web uygulamasına dağıtım sırasını denetleyebilirsiniz.

jobs:
- job: buildandtest
  pool:
    vmImage: ubuntu-latest

  steps:
  # publish an artifact called drop
  - task: PublishPipelineArtifact@1
    inputs:
      targetPath: '$(Build.ArtifactStagingDirectory)' 
      artifactName: drop

  # deploy to Azure Web App staging
  - task: AzureWebApp@1
    inputs:
      azureSubscription: '<Azure service connection>'
      appType: <app type>
      appName: '<name of test stage web app>'
      deployToSlotOrASE: true
      resourceGroupName: <resource group name>
      slotName: 'staging'
      package: '$(Build.ArtifactStagingDirectory)/**/*.zip'

- job: deploy
  dependsOn: buildandtest
  condition: succeeded()

  pool: 
    vmImage: ubuntu-latest  

  steps:
    # download the artifact drop from the previous job
  - task: DownloadPipelineArtifact@2
    inputs:
      buildType: 'current'
      artifactName: 'drop'
      targetPath: '$(Pipeline.Workspace)'

  - task: AzureWebApp@1
    inputs:
      azureSubscription: '<Azure service connection>'
      appType: <app type>
      appName: '<name of test stage web app>'
      resourceGroupName: <resource group name>
      package: '$(Pipeline.Workspace)/**/*.zip'

YAML işlem hatları TFS 'de kullanılamaz.

Yapılandırma değişiklikleri

Çoğu dil yığını için, uygulama ayarları ve bağlantı dizeleri çalışma zamanında ortam değişkenleri olarak ayarlanabilir. Uygulama ayarları, Key Vault başvurularıkullanılarak Key Vault de çözülebilir.

ASP.NET ve ASP.NET Core geliştiricileri için App Service uygulama ayarlarının ayarlanması, Web.config 'de ' de ayarlama gibidir <appSettings> . Uygulamasına dağıtılmadan önce Web uygulaması hedefi için belirli bir yapılandırma uygulamak isteyebilirsiniz. Bu, aynı derlemeyi bir işlem hattında birden çok Web uygulamasına dağıttığınızda yararlıdır. Örneğin, Web.config dosyanız adlı bir bağlantı dizesi içeriyorsa connectionString , her bir Web uygulamasına dağıtılmadan önce değerini değiştirebilirsiniz. Bunu, Web.config dönüşümünü uygulayarak veya Web.config dosyanızdaki değişkenleri değiştirerek yapabilirsiniz.

Azure App Service Dağıtım görevi , kullanıcıların, belirtilen aşama adına göre Web PAKETLERI ve XML parametreleri dosyaları (parameters.xml) içindeki yapılandırma dosyalarında (* .config dosyaları) yapılandırma ayarlarını değiştirmesine olanak tanır.

Not

Dosya dönüştürmeleri ve değişken değiştirme Ayrıca, Azure Pipelines kullanımı için ayrı dosya dönüştürme görevi tarafından da desteklenir. Dosya dönüştürme görevini, herhangi bir yapılandırma ve parametre dosyasına dosya dönüştürmeleri ve değişken değişimler uygulamak için kullanabilirsiniz.

Aşağıdaki kod parçacığında değişken değiştirme örneği gösterilmektedir:

jobs:
- job: test
  variables:
    connectionString: <test-stage connection string>
  steps:
  - task: AzureRmWebAppDeployment@4
    inputs:
      azureSubscription: '<Test stage Azure service connection>'
      WebAppName: '<name of test stage web app>'
      enableXmlVariableSubstitution: true

- job: prod
  dependsOn: test
  variables:
    connectionString: <prod-stage connection string>
  steps:
  - task: AzureRmWebAppDeployment@4
    inputs:
      azureSubscription: '<Prod stage Azure service connection>'
      WebAppName: '<name of prod stage web app>'
      enableXmlVariableSubstitution: true

YAML işlem hatları TFS 'de kullanılamaz.

Koşullu dağıtım

Yalnızca belirli derlemeleri Azure Web uygulamanıza dağıtmayı seçebilirsiniz.

Bunu YAML 'de yapmak için şu tekniklerden birini kullanabilirsiniz:

  • Dağıtım adımlarını ayrı bir iş olarak yalıtın ve bu işe bir koşul ekleyin.
  • Adıma bir koşul ekleyin.

Aşağıdaki örnek, yalnızca ana daldan kaynaklanan derlemeleri dağıtmak için adım koşullarını nasıl kullanacağınızı gösterir:

- task: AzureWebApp@1
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
  inputs:
    azureSubscription: '<Azure service connection>'
    appName: '<name of web app>'

Koşullar hakkında daha fazla bilgi edinmek için bkz. Koşulları belirtme.

YAML işlem hatları TFS 'de kullanılamaz.

Azure Kamu bulutuna veya Azure Stack dağıtım

Uygun bir hizmet bağlantısı oluşturun:

Dağıtım mekanizmaları

Yukarıdaki örnekler, Azure ile basitleştirilmiş tümleştirme sağlayan yerleşik Azure Web uygulaması görevinebağımlıdır.

Windows aracısı kullanıyorsanız, bu görev Azure Web uygulaması ile etkileşim kurmak için Web Dağıtımı teknolojisini kullanır. Web Dağıtımı, dağıtım sırasında kilitli dosyaları yeniden adlandırma ve App_Data dosyaları dışarıda bırakma gibi birkaç kullanışlı dağıtım seçeneği sunar.

Linux Aracısı kullanıyorsanız, görev kudu REST API 'lerinikullanır.

Dağıtım öncesi bir şey, Azure App Service erişim kısıtlamaları listesidir. Bu liste, IP adreslerini veya Azure sanal ağ alt ağlarını içerebilir. Bir veya daha fazla giriş olduğunda, listenin sonunda bulunan örtülü bir "Tümünü Reddet" vardır. Erişim kısıtlama kurallarını uygulamanıza değiştirmek için, bkz. Azure Portal erişim kısıtlama kuralları ekleme vedeğiştirme. Ayrıca, kaynak denetimi yönetimi (SCM) sitenize erişimi değiştirebilir/kısıtlayabilirsiniz.

Azure App Service Yönet görevi , dağıtım için yararlı olan başka bir görevdir. Bu görevi, dağıtımdan önce veya sonra Web uygulamasını başlatmak, durdurmak veya yeniden başlatmak için kullanabilirsiniz. Bu görevi Ayrıca yuvaları değiştirmek, site uzantıları yüklemek veya Web uygulamasını izlemeyi etkinleştirmek için de kullanabilirsiniz.

Dosya dönüştürme görevini , herhangi bir yapılandırma ve parametre dosyasına dosya dönüştürmeleri ve değişken değişimler uygulamak için kullanabilirsiniz.

Yerleşik görevler ihtiyaçlarınızı karşılamıyorsa, dağıtımınızı komut dosyasına almak için diğer yöntemleri kullanabilirsiniz. Bazı örnekler için aşağıdaki görevlerden her birinde YAML kod parçacıklarını görüntüleyin:

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.

her başarılı derlemede Azure App Service için web uygulamanızı sürekli olarak dağıtmak üzere Azure Pipelines kullanabilirsiniz.

Azure App Service, Web uygulamalarını, REST API 'Leri ve mobil arka uçları barındırmak için yönetilen bir ortamdır. .NET, Python ve JavaScript gibi en sevdiğiniz dillerde geliştirme yapabilirsiniz.

Azure Web uygulaması görevini , işlem hattınızda Azure App Service dağıtım için kullanacaksınız. Dağıtım sırasında XML parametrelerini kullanma gereksinimi gibi daha karmaşık senaryolar için Azure App Service dağıtma görevinikullanabilirsiniz.

Linux kapsayıcıları için bir Azure Web uygulamasına dağıtma hakkında bilgi edinmek için bkz. Azure Web uygulaması kapsayıcısı dağıtma.

Not

bu kılavuz Team Foundation Server (TFS) sürüm 2017,3 ve üzeri için geçerlidir.

Önkoşullar

  • bir depo oluşturabileceğiniz GitHub hesabı. Microsoft hesabınız yoksa ücretsiz olarak oluşturabilirsiniz.

  • Azure DevOps bir kuruluş. Microsoft hesabınız yoksa ücretsiz olarak oluşturabilirsiniz. (Azure DevOps bir kuruluş GitHub kuruluşunuzdan farklıdır. aralarında hizalama yapmak istiyorsanız, DevOps kuruluşunuza ve GitHub kuruluşunuza aynı adı verebilirsiniz.)

    takımınız zaten varsa, kullanmak istediğiniz Azure DevOps projesinin yöneticisi olduğunuzdan emin olun.

  • Microsoft tarafından barındırılan aracılarda işlem hatlarını çalıştırma özelliği. Paralel bir iş satın alabilir veya ücretsiz bir katman isteyebilirsiniz. Ücretsiz katman istemek için Bu makaledekiyönergeleri izleyin. Lütfen ücretsiz katmana izin vermek için 2-3 iş günü sürebileceğini unutmayın.

Azure portal Azure App Service oluşturma

Linux veya Azure Cloud Shell ile Windows Azure App Service oluşturun. Başlamak için:

  1. Azure Portal oturum açın.
  2. Portalın üst gezinti bölmesinden Cloud Shell başlatın. Cloud Shell açın.

Daha fazla bilgi için bkz. Azure Cloud Shell Genel Bakış.

Linux üzerinde Azure App Service oluşturun.

# Create a resource group
az group create --location eastus2 --name myapp-rg

# Create an app service plan of type Linux
az appservice plan create -g myapp-rg -n myapp-service-plan --is-linux

# Create an App Service from the plan 
az webapp create -g myapppipeline-rg -p myapp-service-plan -n my-app-dotnet --runtime "DOTNETCORE|3.1" 

Uygulamanızı Azure Pipelines oluşturun