Bir GitHub hesabı. GitHub hesabınız yoksa ücretsiz olarak kaydolun.
Örnek verileri (data.sql) içeren bir GitHub deposu.
Önemli
Bu hızlı başlangıçta, gerekirse ilişkili IP adresini bir güvenlik duvarı kuralına ekleyebilmek için bilgisayarınıza bir GitHub deposu kopyaladığınız varsayılır.
GitHub Actions iş akışı, deponuzdaki yoldaki /.github/workflows/ bir YAML (.yml) dosyası tarafından tanımlanır. Bu tanım, iş akışını oluşturan çeşitli adımları ve parametreleri içerir.
Azure CLI'da az ad sp create-for-rbac komutuyla bir hizmet sorumlusu oluşturun. Azure portalında veya Deneyin düğmesini seçerek bu komutu Azure Cloud Shell ile çalıştırın.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
parametresi --json-auth Azure CLI sürümlerinde >= 2.51.0 kullanılabilir. Bu --sdk-auth kullanımdan önceki sürümler kullanımdan kaldırma uyarısıyla kullanılır.
Yukarıdaki örnekte yer tutucuları abonelik kimliğiniz, kaynak grubu adınız ve uygulama adınızla değiştirin. Çıktı, Aşağıdakine benzer şekilde App Service uygulamanıza erişim sağlayan rol ataması kimlik bilgilerine sahip bir JSON nesnesidir. Bu JSON nesnesini daha sonra için kopyalayın.
OpenID Connect, kısa süreli belirteçler kullanan bir kimlik doğrulama yöntemidir. GitHub Actions ile OpenID Connect'i 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-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.
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
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
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"
]
}
MySQL bağlantı dizesi kopyalama
Azure portalında, MySQL için Azure Veritabanı esnek sunucu örneğinize gidin ve Ayarlar>Bağlantı dizeleri'ni açın.ADO.NET bağlantı dizesini kopyalayın. ve your_passwordiçin your_database yer tutucu değerlerini değiştirin.
Önemli
Tek MySQL için Azure Veritabanı sunucu için Uid=adminusername@servername kullanın. @servername gerekli olduğuna dikkat edin.
esnek MySQL için Azure Veritabanı sunucu için, olmadan @servernameUid=adminusername kullanın.
bağlantı dizesi GitHub gizli dizisi olarak kullanacaksınız.
Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.
Yeni depo gizli dizisi'ni seçin.
Azure CLI komutundaki JSON çıkışının tamamını gizli dizinin değer alanına yapıştırın. Gizli diziye adını AZURE_CREDENTIALSverin.
Add secret (Gizli dizi ekle) öğesini seçin.
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.
GitHub'da deponuza gidin.
Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.
Yeni depo gizli dizisi'ni seçin.
, 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
Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.
İş akışınızı ekleme
GitHub deponuz için Eylemler'e gidin.
İş akışınızı kendiniz ayarlayın'ı seçin.
İş akışı dosyanızın bölümünden on: sonra her şeyi silin. Örneğin, kalan iş akışınız şöyle görünebilir.
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
İş akışınızı MySQL for GitHub Actions yeniden adlandırın ve kullanıma alma ve oturum açma eylemlerini ekleyin. Bu eylemler site kodunuzu kullanıma alır ve daha önce oluşturduğunuz GitHub gizli dizisini AZURE_CREDENTIALS kullanarak Azure'da kimlik doğrulaması yapar.
name: MySQL for GitHub Actions
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
name: MySQL for GitHub Actions
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
MySQL örneğine bağlanmak için Azure MySQL Dağıtımı eylemini kullanın. değerini sunucunuzun adıyla değiştirin MYSQL_SERVER_NAME . Deponuzun kök düzeyinde adlı data.sql bir MySQL veri dosyanız olmalıdır.
Azure oturumunu kapatmak için bir eylem ekleyerek iş akışınızı tamamlayın. Tamamlanmış iş akışı aşağıdadır. Dosya, deponuzun klasöründe görünür .github/workflows .
İş akışınızın çalıştırmasının ayrıntılı günlüklerini görmek için ilk sonucu açın.
Kaynakları temizleme
MySQL için Azure Veritabanı esnek sunucu veritabanınız ve deponuz artık gerekli olmadığında, kaynak grubunu ve GitHub deponuzu silerek dağıttığınız kaynakları temizleyin.