Aracılığıyla paylaş


Azure Uygulama Hizmeti için sürekli dağıtımı yapılandırın

Bu makalede GitHub, Bitbucket, Azure Depoları veya diğer depolardan güncelleştirmeleri çekerek Azure App Service'e sürekli dağıtımı (CD) nasıl yapılandırabileceğiniz açıklanır.

Önkoşullar

Azure App Service uygulamasındaki izinleri kaynak denetimi deposunda yazma.

Depolarınızı hazırlayın

Otomatik derlemeleri App Service derleme sunucusundan almak için, proje dosyalarınızın depo kökünde doğru dosyaların bulunduğundan emin olun.

Çalışma Zamanı Kök dizin dosyaları
ASP.NET (yalnızca Windows) *.sln, *.csprojveya default.aspx.
ASP.NET Çekirdeği *.sln veya *.csproj.
PHP index.php.
Ruby (yalnızca Linux) Gemfile.
Node.js server.js, app.js, veya package.json başlatma betiği ile.
Piton *.py, requirements.txtveya runtime.txt.
HTML default.htm, default.html, default.asp, index.htm, index.htmlveya iisstart.htm.
Web İşleri <job_name>/run.<extension>, sürekli WebJobs için App_Data/jobs/continuous altında veya tetiklenen WebJobs için App_Data/jobs/triggered. Daha fazla bilgi için Kudu WebJobs belgelerine bakın.
Fonksiyonlar Azure İşlevleri için Sürekli Dağıtımı gör.

Dağıtımınızı özelleştirmek için, depo kök dizinine bir .deployment dosyası ekleyin. Daha fazla bilgi için Dağıtımları Özelleştir ve Özel Dağıtım Betiği bölümüne bakın.

Tavsiye

Visual Studio sizin için bir depo oluşturabilir. Bu yöntemle, projeniz Git aracılığıyla dağıtım için hemen hazır.

Sürekli dağıtımı etkinleştirme

  1. Azure portalında App Service uygulamanızın sayfasına gidin ve sol gezinti menüsünden Dağıtım Merkezi'ni seçin.

  2. Ayarlar sekmesinde, Kaynak'ın altında kaynak denetim deponuzun türünü seçin.

    Dağıtım kaynağını seçmenin nasıl yapıldığını gösteren ekran görüntüsü.

  3. Dağıtımı yapılandırmak için kaynak türünüzün yönergelerini izleyin.

    Dağıtım kaynağının nasıl yapılandırıldığını gösteren ekran görüntüsü.

Listelenen tüm kaynaklar App Service Derleme Hizmeti ile derlenebilir. Bazı kaynaklar, GitHub Actions veya Azure Pipelines ile de oluşturulabilir. Daha fazla bilgi için bkz. Derleme sağlayıcıları.

GitHub Actions , varsayılan GitHub derleme sağlayıcısıdır. Sağlayıcıyı değiştirmek için Sağlayıcıyı değiştir'i, App Service Derleme Hizmeti'ni veya Azure Pipelines'ı ve ardından Tamam'ı seçin.

Gerekirse Yetkile'yi seçin ve GitHub için yetkilendirme istemlerini izleyin. Başka bir kullanıcının deposundan dağıtım yapmak için Hesap Değiştir'i seçin.

  1. Uygun GitHub Kuruluşunu, Deposunu ve Dalını seçin.

    Bir kuruluş veya depo bulamıyorsanız, GitHub'da daha fazla izni etkinleştirmeniz gerekebilir. Daha fazla bilgi için Kuruluşunuzun depolarına erişimi yönetme konusuna bakın.

  2. Kimlik doğrulama türü altında, daha iyi bir güvenlik için Kullanıcı atamasına dayalı kimlik seçin.

    Azure hesabınız gerekli izinlere sahipse App Service sizin için kullanıcı tarafından atanan bir yönetilen kimlik oluşturur veya mevcut yönetilen kimliği seçebilirsiniz. Gerekli izinlere sahip değilseniz, Azure yöneticinizle birlikte uygulamanızda gerekli role sahip bir kimlik oluşturmak için çalışın ve ardından açılır listeden seçin.

  3. App Service, uygulamanızın dil yığını ayarına göre bir iş akışı şablonu seçer ve seçilen GitHub deposunda bunu aktarır. değişikliklerinizi kaydetmeden önce iş akışı dosyasını görmek için isteğe bağlı olarak Önizleme dosyası'nı seçebilirsiniz.

  4. Kaydetseçeneğini seçin.

Seçilen depo ve daldaki yeni commit'ler artık sürekli olarak App Service uygulamanıza dağıtılıyor. İşlem ve dağıtımları Günlükler sekmesinden takip edebilirsiniz.

Sürekli dağıtımı devre dışı bırak

Bağlı bir kaynak için sürekli dağıtımı devre dışı bırakmak için:

  1. Azure portalında App Service uygulamanızın sayfasına gidin ve sol gezinti menüsünden Dağıtım Merkezi'ni seçin.

  2. Ayarlar sekmesinde Bağlantıyı Kes'i seçin.

    Azure portalında, Bulut Klasör Senkronizasyonunu App Service uygulamanızdan nasıl kesebileceğinizi gösteren ekran görüntüsü.

  3. Tamam'ı seçin.

GitHub için iş akışı dosyası varsayılan olarak depoda kalır, ancak artık Dağıtım Merkezi'ninGünlükler sekmesinde tümleşik ilerleme durumunu görmezsiniz.

Yapı sağlayıcıları nelerdir?

Yapı sağlayıcıları, yapı, test ve dağıtımı otomatikleştirerek Azure App Service ile sürekli entegrasyon ve sürekli teslimat (CI/CD) çözümü oluşturmanıza yardımcı olur. Bazı dağıtım kaynakları çeşitli derleme sağlayıcısı seçenekleri sunar. Listelenen tüm kaynaklar App Service Derleme Hizmeti ile derlenebilir.

Listelenen derleme sağlayıcısı seçenekleriyle sınırlı değilsiniz, ancak App Service listelenen seçenekleri hızla ayarlamanıza ve tümleşik dağıtım günlüğünü almaya başlamanıza yardımcı olur.

GitHub İşlemleri

GitHub Actions derleme sağlayıcısı yalnızca GitHub kaynağı için kullanılabilir ve GitHub dağıtımları için varsayılan değerdir. Derleme sağlayıcısı, GitHub Actions iş akışı dosyasını App Service derleme ve dağıtım görevlerini işleyen GitHub deponuza yükleyerek CI/CD'yi ayarlar.

Temel kimlik doğrulaması için GitHub Actions derleme sağlayıcısı, uygulamanızın yayımlama profilini bir GitHub sırrı olarak ekler. İş akışı dosyası, App Service ile kimlik doğrulaması yapmak için bu gizliliği kullanır.

Kullanıcı tarafından atanan kimlik için App Service, önerilen Microsoft OpenID Connect kimlik doğrulamasını etkinleştirir ve Azure ve GitHub'da gerekli kaynakları yapılandırabilir. Daha fazla bilgi için bkz. Kullanıcı tarafından atanan kimlik seçeneği GitHub Actions için ne yapar?

GitHub Actions derleme sağlayıcısı, iş akışı çalıştırma günlüklerindeki bilgileri yakalar ve uygulamanın Dağıtım Merkezi'ndekiGünlükler sekmesinde görüntüler.

GitHub Actions derleme sağlayıcısını çeşitli yollarla özelleştirebilirsiniz:

  • GitHub deponuzda oluşturduktan sonra iş akışı dosyasını özelleştirin. Daha fazla bilgi için GitHub Actions için İş Akışı Sözdizimi bölümüne bakın. Özelleştirilmiş iş akışını eylem azure/webapps-deploy ile App Service'e dağıtın.
  • Seçili dal korunuyorsa, yapılandırmayı kaydetmeden iş akışı dosyasının önizlemesini görüntüleyin. Dosyayı özelleştirin ve el ile deponuza ekleyin. Bu yöntem, size Azure portalı ile günlük entegrasyonu sağlamaz.
  • Temel kimlik doğrulaması veya kullanıcı tarafından atanan bir kimlik kullanmak yerine bir Microsoft Entra ID hizmet sorumlusu kullanarak dağıtın. Portalda bu yöntemi yapılandıramazsınız.

App Service inşa hizmeti

App Service derleme hizmeti, yerel App Service dağıtım ve derleme altyapısıdır. Bu seçeneği belirlediğinizde App Service, yetkilendirdiğiniz depoya bir web kancası ekler. Depoya herhangi bir kod gönderme işlemi web kancasını tetikler ve App Service değişiklikleri çeker ve dağıtım görevlerini gerçekleştirir. Daha fazla bilgi için bkz. GitHub'dan dağıtma (Kudu).

App Service yapı hizmeti, web kancasının çalışması için Kaynak Denetim Yöneticisi (SCM) temel kimlik doğrulaması gerektirir. Temel kimlik doğrulaması, diğer kimlik doğrulama yöntemlerine göre daha az güvenlidir. Daha fazla bilgi için bakınız:

Azure Boru Hatları

Azure Pipelines, Azure DevOps'un derleme bileşenidir. Uygulamanızı App Service'e yapılandırmak, test etmek ve dağıtmak için bir hattı, desteklenen herhangi bir kaynak deposundan yapılandırabilirsiniz.

Derleme sağlayıcısı olarak Azure Pipelines'ı kullanmak için App Service Dağıtım Merkezi'ndeAzure Pipelines seçeneğini belirleyin, ardından işlem hattını yapılandırmak için doğrudan Azure DevOps'a gidin. Daha fazla bilgi için bkz. Azure Pipelines kullanarak App Service'e dağıtma.

Sıkça Sorulan Sorular

Temel kimlik doğrulaması devre dışı bırakılırsa GitHub Actions derleme sağlayıcısı nasıl çalışır?

Temel kimlik doğrulaması devre dışı bırakılırsa GitHub Actions derleme sağlayıcısı temel kimlik doğrulamasıyla çalışmaz. Bunun yerine GitHub Actions'ı kullanıcı tarafından atanan kimlik seçeneğiyle kullanmayı deneyin. Daha fazla bilgi için bkz. Temel kimlik doğrulama olmadan dağıtma.

Dağıtım sırasında uygulamamda hataya veya öngörülemeyen davranışa neden olabilecek ne tür sorunlar ortaya çıkabilir?

Resmi olarak desteklenen dağıtım yöntemleri, uygulamanızı çalıştırmak için kullanılan /home/site/wwwroot klasöründeki dosyalarda değişiklik yapar. Kilitlemiş dosyalar nedeniyle dağıtım başarısız olabilir. Dosyaların tümü aynı anda güncelleştirilmezse, uygulama dağıtım sırasında öngörülemez şekilde davranabilir ve bu da müşteriye yönelik bir uygulama için istenmeyen bir durumdur.

Bu sorunlardan kaçınmanın birkaç yolu vardır.

GitHub Actions için kullanıcı tarafından atanan kimlik seçeneği ne yapar?

GitHub kaynağı için Kullanıcı tarafından atanan kimlik'i seçtiğinizde App Service, Azure ve GitHub'daki tüm gerekli kaynakları yapılandırıyor. App Service, GitHub Actions ile önerilen Microsoft OpenID Connect kimlik doğrulamasını etkinleştirir.

Özellikle, Uygulama Servisi aşağıdaki işlemleri gerçekleştirir:

  • Birleştirilmiş bir kimlik bilgisi oluşturur Azure'daki kullanıcı tarafından atanmış yönetilen bir kimlik ile GitHub'daki seçtiğiniz depo ve dal arasında.
  • Seçtiğiniz GitHub depozundaki birleştirilmiş kimlik bilgilerinden AZURE_CLIENT_ID, AZURE_TENANT_ID ve AZURE_SUBSCRIPTION_ID gizli bilgilerini oluşturur.
  • Uygulamanıza bir kimlik atar.

Ardından Eylemi GitHub deponuzdaki GitHub Actions iş akışında kullanarak Azure/login OpenID Connect kullanarak uygulamanızla kimlik doğrulaması yapabilirsiniz. Örnekler için bkz. Çalışma akışı dosyasını GitHub deposuna ekleyin.

Azure hesabınızda gerekli izinler varsa, App Service sizin için bir kullanıcı atanmış yönetilen kimlik oluşturur ve yapılandırır. Bu kimlik, uygulamanızın Kimlik sayfasında gösterilmez. Eğer Azure hesabınız gerekli izinlere sahip değilse, gerekli role sahip olan mevcut bir kimliği seçmelisiniz.

Neden "Yönetilen bir kimliğe rol tabanlı erişim atamak ve federasyon kimlik bilgilerini yapılandırmak için bu uygulamada yeterli izniniz yok" hatasını görüyorum?

İleti, Azure hesabınızın GitHub Actions için kullanıcı tarafından atanan yönetilen kimlik oluşturmak için gerekli izinlere sahip olmadığını gösterir. Uygulamanız kapsamında aşağıdaki izinlere ihtiyacınız vardır:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.ManagedIdentity/userAssignedIdentities/write

Varsayılan olarak, Azure Kullanıcı Erişimi Yöneticisi ve Sahip rolleri bu izinlere sahiptir, ancak Katkıda Bulunan rolü yoktur. Gerekli izinlere sahip değilseniz, Web Siteleri Katkıda Bulunanı rolüne sahip kullanıcı tarafından atanan yönetilen bir kimlik oluşturmak için Azure yöneticinizle birlikte çalışın. Ardından bu kimliği App Service Dağıtım Merkezi'ndeki GitHub kaynağının Kimlik açılan listesinden seçebilirsiniz.

Alternatif adımların kullanımına dair daha fazla bilgi için GitHub Actions kullanarak App Service’e Dağıtımı bölümüne bakın.

"Bu kimliğin bu uygulamada yazma izinleri yok" hatasını neden görüyorum? Lütfen farklı bir kimlik seçin veya bu uygulamada kimliğinize Website Katılımcısı rolünü vermek için yöneticinizle çalışın.

İleti, seçilen kullanıcı tarafından atanan yönetilen kimliğin GitHub deposu ile App Service uygulaması arasında [OpenID Connect'i etkinleştirme]((#what-does-the-user-assigned-identity-option-do-for-github-actions) için gerekli role sahip olmadığını gösterir. Kimliğin uygulamada Sahip, Katkıda Bulunan veya Web Siteleri Katkıda Bulunanı rolü olmalıdır. Kimliğin ihtiyaç duyduğu en az ayrıcalıklı rol Websites Contributor'dır.