Aracılığıyla paylaş


Öğretici: App Service'e dağıtmak ve veritabanına bağlanmak için GitHub Actions'ı kullanma

Azure SQL Veritabanı arka ucu olan bir ASP.NET Core uygulaması dağıtmak için GitHub Actions iş akışını ayarlamayı öğrenin. İşiniz bittiğinde Azure'da çalışan ve SQL Veritabanı bağlı bir ASP.NET uygulamanız vardır. Kaynak oluşturmak için önce bir ARM şablonu kullanacaksınız.

Bu öğretici kapsayıcıları kullanmaz. Kapsayıcılı ASP.NET Core uygulamasına dağıtmak istiyorsanız bkz . Kapsayıcılar için App Service'e dağıtmak ve veritabanına bağlanmak için GitHub Actions'ı kullanma.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Azure Resource Manager şablonu (ARM şablonu) ile Azure'a kaynak eklemek için GitHub Actions iş akışı kullanma
  • ASP.NET Core uygulaması oluşturmak için GitHub Actions iş akışı kullanma

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Önkoşullar

Bu öğreticiyi tamamlamak için şunları yapmanız gerekir:

Örneği indirme

Azure Örnekleri deposunda örnek projenin çatalını oluşturma.

https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions

Bir kaynak grubu oluştur

Adresinde Azure Cloud Shell'i https://shell.azure.comaçın. Azure CLI'yi yerel olarak yüklediyseniz alternatif olarak kullanabilirsiniz. (Cloud Shell hakkında daha fazla bilgi için bkz. Cloud Shell'e Genel Bakış.)

az group create --name {resource-group-name} --location {resource-group-location}

Dağıtım kimlik bilgileri oluşturma

OpenID Bağlan, kısa süreli belirteçler kullanan bir kimlik doğrulama yöntemidir. GitHub Actions ile OpenID Bağlan ayarlamak, sağlamlaştırılmış güvenlik sunan daha karmaşık bir işlemdir.

  1. Mevcut bir uygulamanız yoksa kaynaklara erişebilen yeni bir Microsoft Entra uygulaması ve hizmet sorumlusu kaydedin.

    az ad app create --display-name myApp
    

    Bu komut, JSON çıkışını sizin client-idolan bir appId ile oluşturur. objectId veAPPLICATION-OBJECT-ID, Graph API çağrılarıyla federasyon kimlik bilgileri oluşturmak için kullanılır. GitHub gizli dizisi olarak AZURE_CLIENT_ID kullanılacak değeri daha sonra kaydedin.

  2. Hizmet sorumlusu oluşturma. değerini $appID JSON çıkışınızdaki appId değeriyle değiştirin. Bu komut, sonraki adımda farklı objectId bir JSON çıkışı oluşturur. Yeni objectId , şeklindedir assignee-object-id.

    Bu komut farklı objectId bir JSON çıkışı oluşturur ve sonraki adımda kullanılacaktır. Yeni objectId , şeklindedir assignee-object-id.

    appOwnerTenantId daha sonra kullanmak üzere öğesini GitHub gizli dizisi AZURE_TENANT_ID olarak kopyalayın.

     az ad sp create --id $appId
    
  3. Aboneliğe ve nesneye göre yeni bir rol ataması oluşturun. Varsayılan olarak, rol ataması varsayılan aboneliğinize bağlanır. değerini abonelik kimliğiniz, $resourceGroupName kaynak grubu adınız ve $assigneeObjectId oluşturulan assignee-object-id (yeni oluşturulan hizmet sorumlusu nesne kimliği) ile değiştirin$subscriptionId.

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $assigneeObjectId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Microsoft Entra uygulamanız için yeni bir federasyon kimliği kimlik bilgisi oluşturmak için aşağıdaki komutu çalıştırın.

    • değerini Microsoft Entra uygulamanız için objectId (uygulama oluşturulurken oluşturulur) ile değiştirinAPPLICATION-OBJECT-ID.
    • Daha sonra başvurmak için için CREDENTIAL-NAME bir değer ayarlayın.
    • öğesini subjectayarlayın. Bunun değeri, iş akışınıza bağlı olarak GitHub tarafından tanımlanır:
      • GitHub Actions ortamınızdaki işler: repo:< Organization/Repository >:environment:< Name >
      • Bir ortama bağlı olmayan işler için, iş akışını tetiklerken kullanılan başvuru yolunu temel alan dal/etiket için başvuru yolunu ekleyin: repo:< Organization/Repository >:ref:< ref path>. Örneğin, repo:n-username/ node_express:ref:refs/heads/my-branch veya repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Çekme isteği olayı tarafından tetiklenen iş akışları için: repo:< Organization/Repository >:pull_request.
    az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
    ("credential.json" contains the following content)
    {
        "name": "<CREDENTIAL-NAME>",
        "issuer": "https://token.actions.githubusercontent.com",
        "subject": "repo:octo-org/octo-repo:environment:Production",
        "description": "Testing",
        "audiences": [
            "api://AzureADTokenExchange"
        ]
    }
    

Azure portalında active directory uygulaması, hizmet sorumlusu ve federasyon kimlik bilgileri oluşturmayı öğrenmek için bkz. GitHub ve Azure Bağlan.

GitHub gizli dizisini kimlik doğrulaması için yapılandırma

Oturum açma eylemine uygulamanızın İstemci Kimliğini, Kiracı Kimliğini ve Abonelik Kimliğini sağlamanız gerekir. Bu değerler doğrudan iş akışında sağlanabilir veya GitHub gizli dizilerinde depolanabilir ve iş akışınızda başvurulabilir. Değerleri GitHub gizli dizileri olarak kaydetmek daha güvenli bir seçenektir.

  1. GitHub'da deponuza gidin.

  2. Gezinti menüsünde Ayarlar gidin.

  3. Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.

    Gizli dizi ekleme ekran görüntüsü

  4. Yeni depo gizli dizisi'ni seçin.

  5. , AZURE_TENANT_IDve AZURE_SUBSCRIPTION_IDiçin AZURE_CLIENT_IDgizli diziler oluşturun. GitHub gizli dizileriniz için Microsoft Entra uygulamanızdaki şu değerleri kullanın:

    GitHub gizli dizisi Microsoft Entra uygulaması
    AZURE_CLIENT_ID Uygulama (istemci) kimliği
    AZURE_TENANT_ID Dizin (kiracı) kimliği
    AZURE_SUBSCRIPTION_ID Subscription ID
  6. Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.

Derlemeniz için GitHub gizli dizileri ekleme

  1. ve SQLADMIN_LOGINiçin SQLADMIN_PASS GitHub deponuzda iki yeni gizli dizi oluşturun. Karmaşık bir parola seçtiğinizden emin olun, aksi takdirde SQL veritabanı sunucusu için oluşturma adımı başarısız olur. Bu parolaya yeniden erişemeyeceksiniz, bu nedenle parolayı ayrı olarak kaydedin.

  2. Azure abonelik kimliğiniz için bir AZURE_SUBSCRIPTION_ID gizli dizi oluşturun. Abonelik kimliğinizi bilmiyorsanız, bulmak için Azure Shell'de bu komutu kullanın. Sütundaki SubscriptionId değeri kopyalayın.

    az account list -o table
    

Azure kaynakları oluşturma

Azure kaynakları oluşturma iş akışı, kaynakları Azure'a dağıtmak için bir ARM şablonu çalıştırır. İş akışı:

  • Kullanıma Alma eylemiyle kaynak kodu kullanıma alır.
  • Azure Oturum Açma eylemiyle Azure'da oturum açar ve ortam ile Azure kaynak bilgilerini toplar.
  • Azure Resource Manager Dağıtma eylemiyle kaynakları dağıtır.

Azure kaynakları oluşturma iş akışını çalıştırmak için:

  1. infraworkflow.yml Dosyayı .github/workflows deponuzda açın.

  2. değerini AZURE_RESOURCE_GROUP kaynak grubu adınızla güncelleştirin.

  3. ARM Dağıtımı eylemlerinizin girişini region bölgenize ayarlayın.

    1. özelliğini açın templates/azuredeploy.resourcegroup.parameters.json ve bölgenize güncelleştirin rgLocation .
  4. Eylemler'e gidin ve İş akışını çalıştır'ı seçin.

    Kaynak eklemek için GitHub Actions iş akışını çalıştırın.

  5. Eylemler sayfasında yeşil onay işaretini denetleyerek eyleminizin başarıyla çalıştığını doğrulayın.

    Kaynak oluşturma işleminin başarılı bir şekilde çalıştırılması.

  6. Kaynaklarınızı oluşturduktan sonra Eylemler'e gidin, Azure Kaynakları Oluştur'u seçin ve iş akışını devre dışı bırakın.

    Azure Kaynakları Oluştur iş akışını devre dışı bırakın.

Yayımlama profili gizli dizisi oluşturma

  1. Azure portalında, iş akışıyla Create Azure Resources oluşturulan yeni hazırlama App Service'inizi (Yuva) açın.

  2. Yayımlama Profili Al'ı seçin.

  3. Yayımlama profili dosyasını bir metin düzenleyicisinde açın ve içeriğini kopyalayın.

  4. için AZURE_WEBAPP_PUBLISH_PROFILEyeni bir GitHub gizli dizisi oluşturun.

Uygulamanızı derleme ve dağıtma

Derleme ve dağıtım iş akışını çalıştırmak için:

  1. Dosyanızı workflow.yaml .github/workflows deponuzda açın.

  2. , , SQLSERVER_NAMEAZURE_WEBAPP_NAMEve DATABASE_NAME ortam değişkenlerinin AZURE_RESOURCE_GROUPiçindekilerle infraworkflow.ymleşleşip eşleşmediğini doğrulayın.

  3. Üretim yuvasına değiştirme çıkışındaki URL'yi ziyaret ederek uygulamanızın dağıtıldığını doğrulayın. TodoList Uygulamam adlı örnek bir uygulama görmeniz gerekir.

Kaynakları temizleme

Örnek projenize artık ihtiyacınız yoksa Azure portalında kaynak grubunuzu silin ve GitHub'daki deponuzu silin.

Sonraki adımlar