Aracılığıyla paylaş


Öğretici: GitHub Actions kullanarak ASP.NET Core uygulamasını ve Veritabanını Azure Container Apps'e dağıtma

Bu öğreticide Visual Studio ve GitHub Actions kullanarak bir ASP.NET Core uygulaması dağıtmayı ve Azure Container Apps'e SQL Veritabanı öğreneceksiniz. Ayrıca GitHub Actions'da Entity Framework geçişlerini ve veritabanı güncelleştirmelerini yönetmeyi öğreneceksiniz ancak kavramlar diğer CI/CD araçlarına ve ortamlarına da uygulanabilir.

Önkoşullar

Visual Studio 2022'nin ASP.NET, web geliştirme ve Azure geliştirme iş yüküyle yüklü olması gerekir.

Visual Studio'yu zaten yüklediyseniz:

  • Güncelleştirmeler için Yardım>Denetimi'ni seçerek Visual Studio'daki en son güncelleştirmeleri yükleyin.
  • Araçlar Araçları>ve Özellikleri Al'ı seçerek ASP.NET, web geliştirme ve Azure geliştirme iş yüklerinin yüklendiğini doğrulayın.

Örnek uygulamayı yerel olarak ayarlama

Bu öğreticiyi takip etmek için ToDo örnek uygulamasını kullanın. Aşağıdaki komutu kullanarak GitHub'dan uygulamayı kopyalayın:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

Proje klasörüne gidin ve çözümü Visual Studio'da açın DotNetCoreSqlDb.sln .

ToDo uygulaması kullanıma hazır, ancak Visual Studio'da bulunan SQL sunucusuna localdb bağlantı kurmanız gerekir. Bağlan, localdb uygulamayı çalıştırmanıza ve yerel olarak çalışırken yapılacakları kalıcı hale getirmek için size olanak sağlar.

  1. Visual Studio çözüm gezgininde Bağlan Hizmetler düğümüne sağ tıklayın ve SQL Server Veritabanı Ekle'yi > seçin.
  2. Bağımlılık Bağlan iletişim kutusunda SQL Server Express LocalDB (Yerel) öğesini ve ardından İleri'yi seçin.
  3. SQL Server Express LocalDB (Yerel) Bağlan iletişim kutusunda aşağıdaki değerleri ayarlayın:
    • Bağlan dize adı: Varsayılan değeri bırakın.
    • Bağlan ion dizesi değeri: Varsayılan değeri bırakın.
    • bağlantı dizesi değerini şu şekilde kaydedin: Yok'a tıklayın.
    • İleri'yi seçin
  4. Değişikliklerin özeti ekranında, ayarları varsayılan değerlerinde bırakın ve iş akışını tamamlamak için Son'u seçin.

Visual Studio, bağlantısı dahil olmak üzere hizmet bağımlılıklarının özetini LocalDBgörüntüler.

A screenshot showing how to add a migration using Visual Studio.

Ardından bir ilk geçiş oluşturmanız ve bunu kullanarak yerel veritabanını yapılacaklar uygulaması için doğru şemayla güncelleştirmeniz gerekir.

  1. Bağlantının yanındaki hizmet bağımlılıkları listesinin sağ tarafındaki ... simgesini seçin ve Geçiş ekle'yi LocalDB seçin.
  2. Entity Framework Geçişleri iletişim kutusunda Visual Studio'nın projeye dahil edilen sınıfı bulması DbContext için bir dakika bekleyin. Değerler yüklendikten sonra Son'u seçin.
  3. Visual Studio, projede bir Migrations klasör oluşturur ve ilk geçiş sınıfını oluşturur. Bu sınıf, veritabanını doğru şemayla güncelleştirmek için kullanılabilir.
  4. Hizmetin yanındaki LocalDB ... simgesini yeniden seçin ve Veritabanını güncelleştir'i seçin.
  5. Entity Framework Geçişleri iletişim kutusunda Visual Studio'nın sınıfı yeniden bulması DbContext için bir dakika bekleyin ve ardından Son'u seçin. Visual Studio geçişi çalıştırın ve sunucudaki veritabanı LocalDB için şemayı oluşturun.

Visual Studio'nun üst kısmındaki DotNetCoreSqlDb çalıştır düğmesini seçerek projeyi başlatın.

Uygulama yüklendiğinde, yeni bir yapılacaklar listesi girerek veritabanının düzgün çalıştığını doğrulayın. Yapılacaklar, uygulama giriş sayfasındaki ana liste görünümünde görünür.

Uygulama başlatma yapılandırmasını keşfetme

Örnek uygulama dosyasında aşağıdaki kodu Program.cs içerir:

if(builder.Environment.IsDevelopment())
{
    builder.Services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
}
else
{
    builder.Services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlServer(Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")));
}

Bu kod aşağıdaki yapılandırmaları uygular:

  • Uygulama yerel olarak çalıştığında, localdb bağlantı dizesi dosyasından appsettings.json çekilir ve Entity Framework'e sağlanır. Bu yapılandırma, diğer geliştiricilerin localdb geliştirme sırasında yerel veritabanına kolayca bağlanabilmesi için bağlantı dizesi kaynak denetimine iade edilmesini sağlar. Ayrıca Entity Framework geçişlerinin yerel olarak çalıştırılmasına da olanak tanır. Varsayılan olarak, Entity Framework geçişleri çalıştırırken ortam değişkeninde depolanan bağlantı dizesi bulmaz.
  • Uygulama GitHub Actions iş akışlarında veya Üretim'de çalıştırıldığında, bağlantı dizesi ortam değişkenlerinden çekilir. Ortam değişkenleri, üretim güvenli bağlantı dizesi kaynak denetimine iade edilmesini veya yapılandırma dosyalarına eklenmesini engelleyebilir.

Azure hizmetlerini oluşturma

Uygulama, başarılı bir dağıtım için aşağıdaki Azure hizmetlerinin oluşturulmasını gerektirir:

  • Kapsayıcı Uygulaması: Dağıtılan uygulamayı barındırmak ve çalıştırmak için gereklidir.
  • Container Registry: Kapsayıcılı uygulamanın yerleşik görüntü yapıtını depolar.
  • SQL Veritabanı: Uygulamanın verilerini depolamak için bir Azure SQL veritabanı.

Visual Studio'nun yayımlama özellikleri bu kaynakları sizin için oluşturmayı işleyebilir.

Azure Container App ve Azure Container Registry oluşturma

  1. Visual Studio çözüm gezgininde en üst düzey proje düğümüne sağ tıklayın ve Yayımla'yı seçin.

  2. Yayımlama iletişim kutusunda dağıtım hedefi olarak Azure'ı ve ardından İleri'yi seçin.

  3. Belirli bir hedef için Azure Container Apps (Linux) öğesini ve ardından İleri'yi seçin.

  4. Dağıtılacak yeni bir kapsayıcı uygulaması oluşturun. + Yeni oluştur düğmesini seçerek yeni bir iletişim kutusu açın ve aşağıdaki değerleri girin:

    A screenshot showing how to create a container app.

    • Kapsayıcı uygulama adı: Varsayılan değeri bırakın veya bir ad girin.
    • Abonelik adı: Dağıtılacak aboneliği seçin.
    • Kaynak grubu: Yeni'yi seçin ve msdocs-app-db-ef adlı yeni bir kaynak grubu oluşturun.
    • Kapsayıcı uygulamaları ortamı: Kapsayıcı uygulamaları ortamı iletişim kutusunu açmak için Yeni'yi seçin ve aşağıdaki değerleri girin:
      • Ortam adı: Varsayılan değeri koruyun.
      • Konum: Size yakın bir konum seçin.
      • Azure Log Analytics Çalışma Alanı: Log Analytics çalışma alanı iletişim kutusunu açmak için Yeni'yi seçin.
        • Ad: Varsayılan değeri bırakın.
        • Konum: Size yakın bir konum seçin ve ardından tamam'ı seçerek iletişim kutusunu kapatın.
      • Kapsayıcı uygulamaları ortamı iletişim kutusunu kapatmak için Tamam'ı seçin.
    • Özgün kapsayıcı uygulamaları iletişim kutusunu kapatmak için Oluştur'u seçin. Visual Studio, Azure'da kapsayıcı uygulama kaynağını oluşturur.
  5. Kaynak oluşturulduktan sonra kapsayıcı uygulamaları listesinden seçildiğinden emin olun ve İleri'yi seçin.

  6. Uygulamanızın yayımlanmış görüntü yapıtını depolamak için bir Azure Container Registry oluşturmanız gerekir. Kapsayıcı kayıt defteri ekranında yeşil + simgeyi seçin.

    A screenshot showing how to create a new container registry.

  7. Varsayılan değerleri bırakın ve oluştur'u seçin.

  8. Kapsayıcı kayıt defteri oluşturulduktan sonra, seçili olduğundan emin olun ve ardından İleri'yi seçin.

  9. Dağıtım türü ekranında GitHub Actions iş akışlarını kullanarak CI/CD'yi seçin (yml dosyası oluşturur) ve ardından Son'u seçin. Visual Studio Yönetici kullanıcısının yayımlanan docker kapsayıcısına erişmesini isteyip istemediğinizi sorarsa Evet'i seçin.

Visual Studio yayımlama profilini oluşturur ve görüntüler. Yayımlama adımlarının ve ayrıntılarının çoğu GitHub Actions .yml dosyasında açıklanmıştır. Bu dosya, yayımlama profili özet görünümündeki İş akışını düzenle düğmesine tıklanarak görüntülenebilir. Bu dosya makalenin devamında daha ayrıntılı bir şekilde ele alınmıştır.

Azure SQL veritabanını oluşturma

  1. Çözüm gezgininde, Bağlan Hizmetler düğümüne sağ tıklayın ve SQL Server Veritabanı Ekle'yi > seçin.
  2. Bağımlılık Bağlan iletişim kutusunda Azure SQL Veritabanı'ı ve ardından İleri'yi seçin.
  3. Yeni veritabanı eklemek için + Yeni Oluştur'u seçin.
  4. Azure SQL Veritabanı iletişim kutusuna aşağıdaki değerleri girin:
    • Veritabanı Adı: Varsayılan değeri bırakın.
    • Abonelik Adı: Daha önce kullandığınız aboneliği seçin.
    • Kaynak Grubu: Daha önce oluşturulan grubu seçin msdocs-app-db-ef .
    • Veritabanı Sunucusu: Yeni... öğesini seçin ve yeni açılır pencereye aşağıdaki değerleri girin:
      • Veritabanı Sunucusu Adı: Benzersiz bir sunucu adı girin veya otomatik oluşturulan adın sonuna rastgele sayılar ekleyin.
      • Konum: Size yakın bir konum seçin.
      • Yönetici istrator kullanıcı adı: Seçtiğiniz değeri girin.
      • Yönetici istrator parolası: Seçtiğiniz değeri girin.
      • Yönetici istrator parolası (onayla): Onaylamak için aynı parolayı girin. SQL Server iletişim kutusunu kapatmak için Tamam'ıseçin
    • SQL sunucusunu ve veritabanını oluşturmak için Oluştur'u seçin.
    • İşlem tamamlandığında, listeden sunucuyu seçin ve İleri'yi seçin
  5. Azure SQL Veritabanı Bağlan iletişim kutusunda varsayılan değerleri bırakın, ancak bağlantı dizesi değerini kaydet seçeneği için altta Hiçbiri'nin seçili olduğundan emin olun.
  6. Son'u seçtiğinizde Visual Studio SQL kaynaklarını oluşturur.

Kapsayıcı Uygulamasını Azure SQL'e Bağlan

  1. Oluşturduğunuz Kapsayıcı Uygulamasının genel bakış sayfasında, sol gezinti bölmesinde Hizmet Bağlan veya (önizleme) öğesini seçin.

  2. Yeni bir bağlantı oluşturmak için + Oluştur'u seçin.

  3. Bağlantı oluştur açılır öğesinde aşağıdaki değerleri girin:

    • Kapsayıcı: Oluşturduğunuz dotnetcoresqldb kapsayıcısını seçin.

    • Hizmet Türü: SQL Veritabanı seçin.

    • Abonelik: Kapsayıcı uygulamasını oluşturmak için kullandığınız aboneliği seçin.

    • Bağlan ion adı: Varsayılan değeri bırakın.

    • SQL Server: Daha önce oluşturduğunuz veritabanı sunucusunu seçin.

    • SQL veritabanı: Daha önce oluşturduğunuz veritabanını seçin.

    • İstemci türü: .NET'i seçin.

      A screenshot showing how to use service connector.

  4. İleri: Kimlik doğrulaması'nı seçin ve aşağıdaki değerleri girin:

    • Kimlik doğrulama türü için Bağlan ion dizesini seçin.
    • Kullanıcı adı: Veritabanı sunucusunu oluştururken kullandığınız kullanıcı adını girin.
    • Parola: Veritabanı sunucusunu oluştururken kullandığınız parolayı girin.
  5. Ayarların geri kalanını varsayılan ayarlarda bırakın ve İleri: Ağ'ı seçin.

  6. Varsayılan değeri seçili bırakın ve İleri: Gözden Geçir + Oluştur'u seçin.

  7. Azure doğruladıktan sonra ayarlar oluştur'u seçin.

Bir dakika sonra SQL veritabanı bağlantısı görünmelidir. Bağlantıyı genişletmek için oku seçin ve AZURE_SQL_CONNECTIONSTRING değerini görün. Bu bağlantı adı, örnek uygulamada tanımlanan bağlantı dizesi ortam değişkeninin adıyla eşleşir.

GitHub Actions iş akışını yapılandırma

Visual Studio tarafından oluşturulan GitHub Actions iş akışı dosyası, değişiklikler gönderildiğinde uygulamayı derlemek ve Azure'a dağıtmak için GitHub tarafından kullanılabilir. Şu anda bu işlem işe yarayacaktı, ancak dağıtılan uygulama bir özel durum oluşturacaktı. Azure SQL veritabanı oluşturulmuş olsa da, şemayı oluşturmak için GitHub Actions iş akışına bir adım eklenmelidir. Azure SQL veritabanının bağlantı dizesi GitHub'da güvenli bir şekilde gizli dizi olarak depolanabilir ve çalıştırıldığında iş akışı tarafından alınabilir.

bağlantı dizesi alın ve GitHub gizli dizilerine ekleyin

  1. Azure portalında, ana arama çubuğunda oluşturduğunuz veritabanını arayın ve sonuçlardan seçin.

  2. Veritabanına genel bakış sayfasında sol gezinti bölmesinden Bağlan dizelerini seçin.

  3. ADO.NET sekmesinde, bağlantı dizesi form alanının dışına kopyalayın.

    A screenshot showing how to retrieve the connection string.

  4. Uygulamanın çatallanmış GitHub deposuna gidin.

  5. Ayarlar sekmesinde sol gezinti bölmesinde Gizli Dizi > Eylemleri'ni ve ardından Yeni depo gizli dizisi'ni seçin.

  6. Yeni gizli dizi sayfasında aşağıdaki değerleri girin:

    • Ad: adını DbConnectiongirin.

    • Gizli dizi: Azure'dan kopyalanan bağlantı dizesi yapıştırın. bağlantı dizesi parola yer tutucusunun yerine veritabanını oluştururken seçtiğiniz parolayı eklediğinizden emin olun.

    • Add secret (Gizli dizi ekle) öğesini seçin.

      A screenshot showing how to create a GitHub secret.

bağlantı dizesi artık GitHub deposu gizli dizilerinde güvenli bir şekilde depolanır ve GitHub iş akışı kullanılarak alınabilir.

Geçişleri etkinleştirmek için GitHub Actions iş akışını değiştirme

  1. Yayımlama özeti sayfasındaki İş Akışını Düzenle düğmesini seçerek Visual Studio tarafından oluşturulan GitHub Actions iş akışı .yml dosyasını açın.

    A screenshot showing how to edit the workflow.

  2. İş akışı dosyasının sonuna aşağıdaki yaml'yi ekleyin:

    - name: Run EF 
      run: | 
        dotnet tool install --global dotnet-ef
        dotnet tool restore
        dotnet ef database update -p DotNetCoreSqlDb --connection '${{ secrets.DBConnection }}'
    

    Bu kod entity framework komut satırı araçlarını yükler ve uygulama geçişlerini çalıştırır. İş akışı çalıştırıldığında kod, gitHub gizli dizilerine eklenen değerle dosyada appsettings.json depolanan bağlantı dizesi geçersiz kılmak localdb için komutunun parametresini database update de kullanırconnection.

GitHub Actions iş akışını çalıştırın ve dağıtımı test edin

  1. Aşağıdaki komutu kullanarak değişiklikleri uygulamaya işleyin ve çatallanmış depoya gönderin:

    git add --all
    git commit -m "Added GitHub Actions workflow"
    git push
    
  2. GitHub deposuna gidin ve Eylemler sekmesini seçin. Gönderme başarılı olursa bir iş akışı çalıştırması otomatik olarak tetiklenmiş olmalıdır.

  3. Tamamlandıklarında her adımın günlük ayrıntılarını görüntülemek için etkin iş akışını seçin. Geçiş, Azure'daki veritabanını güncelleştirmek için en son çalışır.

    A screenshot showing the GitHub action workflow.

İş akışı tamamlandıktan sonra uygulama Azure Container Apps'e dağıtılır ve güncelleştirilmiş bir şemayla veritabanına bağlanır.

Yerel ortamda yaptığınız gibi kapsayıcı uygulamasının giriş sayfasına gidip bir yapılacaklar öğesi oluşturarak dağıtımı test edebilirsiniz. Kapsayıcı uygulamanızın URL'sini her zaman Azure portalındaki uygulamanın genel bakış sayfasında bulabilirsiniz.