Aracılığıyla paylaş


Hızlı Başlangıç: GitHub Actions kullanarak Bicep dosyalarını dağıtma

GitHub Actions , yazılım geliştirme iş akışlarınızı otomatikleştirmek için GitHub'daki bir özellik paketidir. Bu hızlı başlangıçta, Bir Bicep dosyasını Azure'a dağıtma işlemini otomatikleştirmek için Azure Resource Manager için GitHub Actions dağıtımını kullanacaksınız.

GitHub eylemlerine ve Bicep dosyalarına kısa bir giriş sağlar. GitHub eylemlerini ve projesini ayarlama konusunda daha ayrıntılı adımlar istiyorsanız bkz . Bicep ve GitHub Actions kullanarak Azure kaynaklarını dağıtma.

Önkoşullar

Kaynak grubu oluştur

Kaynak grubu oluşturun. Bu hızlı başlangıcın ilerleyen bölümlerinde Bicep dosyanızı bu kaynak grubuna dağıtacaksınız.

az group create -n exampleRG -l westus

Dağıtım kimlik bilgileri oluşturma

GitHub Actions'ınız bir kimlik altında çalışır. Kimlik için bir hizmet sorumlusu oluşturmak için az ad sp create-for-rbac komutunu kullanın. Kimlikli GitHub eyleminin bu kaynak grubunda kaynak oluşturabilmesi için hizmet sorumlusuna önceki oturumda oluşturulan kaynak grubu için katkıda bulunan rolü verin. Gerekli en düşük erişimi vermenizi öneririz.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Yer tutucusunu {app-name} uygulamanızın adıyla değiştirin. değerini abonelik kimliğiniz ile değiştirin {subscription-id} .

Çıktı, App Service uygulamanıza erişim sağlayan rol ataması kimlik bilgilerine sahip bir JSON nesnesidir ve aşağıdaki çıkışa benzer.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    ...
  }

Bu JSON nesnesini daha sonra için kopyalayın. Yalnızca , , clientSecretsubscriptionIdve tenantId değerlerini içeren clientIdbölümlere ihtiyacınız vardır. Örneğin, önceki örnekteki satır gibi son satırın tenantId sonunda fazladan virgül olmadığından emin olun, aksi halde geçersiz bir JSON dosyasıyla sonuçlayın. Dağıtım sırasında "Oturum açma hatasıyla başarısız oldu: İçerik geçerli bir JSON nesnesi değil. 'auth-type' öğesinin doğru olup olmadığını bir kez daha denetleyin."

GitHub gizli dizilerini yapılandırma

Azure kimlik bilgileriniz, kaynak grubunuz ve abonelikleriniz için gizli diziler oluşturun. Bu gizli dizileri İş akışı oluştur bölümünde kullanırsınız.

  1. GitHub'da deponuza gidin.

  2. Ayarlar Gizli Dizileri > ve değişkenler Eylemler > Yeni depo gizli dizisi'ni seçin.>

  3. Azure CLI komutundaki JSON çıkışının tamamını gizli dizinin değer alanına yapıştırın. Gizli diziyi AZURE_CREDENTIALSolarak adlandırın.

  4. adlı AZURE_RGbaşka bir gizli dizi oluşturun. Kaynak grubunuzun adını gizli dizinin değer alanına (exampleRG ) ekleyin.

  5. adlı AZURE_SUBSCRIPTIONbaşka bir gizli dizi oluşturun. Abonelik kimliğinizi gizli dizinin değer alanına ekleyin (örnek: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e).

Bicep dosyası ekleme

GitHub deponuza bir Bicep dosyası ekleyin. Aşağıdaki Bicep dosyası bir depolama hesabı oluşturur:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Bicep dosyası 3 ile 11 karakter arasında storagePrefix adlı bir parametre gerektirir.

Dosyayı deponun herhangi bir yerine yerleştirebilirsiniz. Sonraki bölümdeki iş akışı örneği, Bicep dosyasının main.bicep olarak adlandırılıp deponuzun kökünde depolandığını varsayar.

İş akışı oluşturma

İş akışı, tetiklendiğinde yürütülecek adımları tanımlar. Bu, deponuzun .github/workflows/ yolundaki bir YAML (.yml) dosyasıdır. İş akışı dosya uzantısı .yml veya .yaml olabilir.

İş akışı oluşturmak için aşağıdaki adımları izleyin:

  1. GitHub deponuzdan üstteki menüden Eylemler'i seçin.

  2. Yeni iş akışı'ı seçin.

  3. İş akışını kendiniz ayarlayın'ı seçin.

  4. main.yml dışında farklı bir ad tercih ediyorsanız iş akışı dosyasını yeniden adlandırın. Örneğin: deployBicepFile.yml.

  5. yml dosyasının içeriğini aşağıdaki kodla değiştirin:

    name: Deploy Bicep file
    on: [push]
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
        - name: Checkout code
          uses: actions/checkout@main
    
        - name: Log into Azure
          uses: azure/login@v1
          with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
        - name: Deploy Bicep file
          uses: azure/arm-deploy@v1
          with:
            subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
            resourceGroupName: ${{ secrets.AZURE_RG }}
            template: ./main.bicep
            parameters: 'storagePrefix=mystore storageSKU=Standard_LRS'
            failOnStdErr: false
    

    değerini kendi depolama hesabı adı ön ekinizle değiştirin mystore .

    Not

    ARM Dağıtımı eyleminde (örnek: .azuredeploy.parameters.json) bunun yerine bir JSON biçimi parametre dosyası belirtebilirsiniz.

    İş akışı dosyasının ilk bölümü şunları içerir:

    • name: İş akışının adı.
    • tarihinde: İş akışını tetikleyen GitHub olaylarının adı. Ana dalda bir gönderme olayı olduğunda iş akışı tetikleniyor.
  6. Değişiklikleri işle'yi seçin.

  7. Doğrudan ana dala işle'yi seçin.

  8. Yeni dosya işle'yi (veya Değişiklikleri işle)'yi seçin.

İş akışı dosyasının veya Bicep dosyasının güncelleştirilmesi iş akışını tetikler. İş akışı, değişiklikleri işledikten hemen sonra başlar.

İş akışı durumunu denetleme

  1. Eylemler sekmesini seçin. DeployBicepFile.yml oluştur iş akışının listelendiğini görürsünüz. İş akışının çalıştırılması 1-2 dakika sürer.
  2. İş akışını seçerek açın ve öğesinin Status olduğunu Successdoğrulayın.

Kaynakları temizleme

Kaynak grubunuz ve deponuz artık gerekli olmadığında, kaynak grubunu ve GitHub deponuzu silerek dağıttığınız kaynakları temizleyin.

az group delete --name exampleRG

Sonraki adımlar