Öğ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:
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Bir GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun.
- Resource Manager şablonlarınızı ve iş akışı dosyalarınızı depolamak için bir GitHub deposu. Bir depo oluşturmak için bkz . Yeni depo oluşturma.
Ö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.
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-id
olan birappId
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 olarakAZURE_CLIENT_ID
kullanılacak değeri daha sonra kaydedin.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. YeniobjectId
, şeklindedirassignee-object-id
.Bu komut farklı
objectId
bir JSON çıkışı oluşturur ve sonraki adımda kullanılacaktır. YeniobjectId
, şeklindedirassignee-object-id
.appOwnerTenantId
daha sonra kullanmak üzere öğesini GitHub gizli dizisiAZURE_TENANT_ID
olarak kopyalayın.az ad sp create --id $appId
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şturulanassignee-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
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ştirin
APPLICATION-OBJECT-ID
. - Daha sonra başvurmak için için
CREDENTIAL-NAME
bir değer ayarlayın. - öğesini
subject
ayarlayı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
veyarepo: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
.
- GitHub Actions ortamınızdaki işler:
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" ] }
- değerini Microsoft Entra uygulamanız için objectId (uygulama oluşturulurken oluşturulur) ile değiştirin
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.
Gezinti menüsünde Ayarlar gidin.
Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.
Yeni depo gizli dizisi'ni seçin.
,
AZURE_TENANT_ID
veAZURE_SUBSCRIPTION_ID
içinAZURE_CLIENT_ID
gizli 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 Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.
Derlemeniz için GitHub gizli dizileri ekleme
ve
SQLADMIN_LOGIN
içinSQLADMIN_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.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ütundakiSubscriptionId
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:
infraworkflow.yml
Dosyayı.github/workflows
deponuzda açın.değerini
AZURE_RESOURCE_GROUP
kaynak grubu adınızla güncelleştirin.ARM Dağıtımı eylemlerinizin girişini
region
bölgenize ayarlayın.- özelliğini açın
templates/azuredeploy.resourcegroup.parameters.json
ve bölgenize güncelleştirinrgLocation
.
- özelliğini açın
Eylemler'e gidin ve İş akışını çalıştır'ı seçin.
Eylemler sayfasında yeşil onay işaretini denetleyerek eyleminizin başarıyla çalıştığını doğrulayın.
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.
Yayımlama profili gizli dizisi oluşturma
Azure portalında, iş akışıyla
Create Azure Resources
oluşturulan yeni hazırlama App Service'inizi (Yuva) açın.Yayımlama Profili Al'ı seçin.
Yayımlama profili dosyasını bir metin düzenleyicisinde açın ve içeriğini kopyalayın.
için
AZURE_WEBAPP_PUBLISH_PROFILE
yeni 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:
Dosyanızı
workflow.yaml
.github/workflows
deponuzda açın., ,
SQLSERVER_NAME
AZURE_WEBAPP_NAME
veDATABASE_NAME
ortam değişkenlerininAZURE_RESOURCE_GROUP
içindekilerleinfraworkflow.yml
eşleşip eşleşmediğini doğrulayın.Ü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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin