Azure Depolama statik web sitenizi dağıtmak için GitHub Actions iş akışını kullanma
Makale
Azure depolama hesabına statik site dağıtmak için bir iş akışı kullanarak GitHub Actions'ı kullanmaya başlayın. GitHub Actions iş akışını ayarladıktan sonra, sitenizin kodunda değişiklik yaptığınızda sitenizi GitHub'dan Azure'a otomatik olarak dağıtabilirsiniz.
Not
Azure Static Web Apps kullanıyorsanız GitHub Actions iş akışını el ile ayarlamanız gerekmez.
Azure Static Web Apps sizin için otomatik olarak bir GitHub Actions iş akışı oluşturur.
Statik web sitesi kodunuzu içeren bir GitHub deposu. GitHub hesabınız yoksa ücretsiz kaydolun.
Azure Depolama'de barındırılan çalışan bir statik web sitesi. Azure Depolama'da statik web sitesi barındırmayı öğrenin. Bu örneği takip etmek için Azure CDN'yi de dağıtmanız gerekir.
Not
Dünyanın dört bir yanındaki kullanıcılarınızın gecikme süresini azaltmak ve depolama hesabınıza yönelik işlem sayısını azaltmak için bir içerik teslim ağı (CDN) kullanmak yaygın bir işlemdir. Statik içeriğin bulut tabanlı bir depolama hizmetine dağıtılması, potansiyel olarak pahalı işlem örneğine olan ihtiyacı azaltabilir. Daha fazla bilgi için bkz . Statik İçerik Barındırma düzeni.
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 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-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"
]
}
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ışı 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 ]
İş akışınızı Blob storage website CI 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: Blob storage website CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Kodunuzu blob depolamaya yüklemek ve CDN uç noktanızı temizlemek için Azure CLI eylemini kullanın. için az storage blob upload-batchyer tutucuyu depolama hesabı adınızla değiştirin. Betik kapsayıcıya $web yüklenir. için az cdn endpoint purgeyer tutucuları CDN profil adınız, CDN uç nokta adı ve kaynak grubunuzla değiştirin. CDN temizleme işleminizi hızlandırmak için seçeneğine --no-waitaz cdn endpoint purgeekleyebilirsiniz. Güvenliği artırmak için, depolama hesabı anahtarınızla seçeneği de ekleyebilirsiniz--account-key.
İş 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 with OpenID Connect
on:
push:
branches: [ main ]
İzinler bölümü ekleyin.
name: CI with OpenID Connect
on:
push:
branches: [ main ]
permissions:
id-token: write
contents: read
Kullanıma alma ve oturum açma eylemleri ekleyin. Bu eylemler site kodunuzu kullanıma alır ve daha önce oluşturduğunuz GitHub gizli dizilerini kullanarak Azure'da kimlik doğrulaması yapar.
name: CI with OpenID Connect
on:
push:
branches: [ main ]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Kodunuzu blob depolamaya yüklemek ve CDN uç noktanızı temizlemek için Azure CLI eylemini kullanın. için az storage blob upload-batchyer tutucuyu depolama hesabı adınızla değiştirin. Betik kapsayıcıya $web yüklenir. için az cdn endpoint purgeyer tutucuları CDN profil adınız, CDN uç nokta adı ve kaynak grubunuzla değiştirin. CDN temizleme işleminizi hızlandırmak için seçeneğine --no-waitaz cdn endpoint purgeekleyebilirsiniz. Güvenliği artırmak için, depolama hesabı anahtarınızla seçeneği de ekleyebilirsiniz--account-key.