Bagikan melalui


Tutorial: Menggunakan GitHub Actions untuk menyebarkan ke App Service dan menyambungkan ke database

Pelajari cara menyiapkan alur kerja GitHub Actions untuk menyebarkan aplikasi ASP.NET Core dengan backend Azure SQL Database. Setelah selesai, Anda memiliki aplikasi ASP.NET yang berjalan di Azure dan tersambung ke SQL Database. Pertama, Anda akan menggunakan templat ARM untuk membuat sumber daya.

Tutorial ini tidak menggunakan kontainer. Jika Anda ingin menerapkan ke aplikasi ASP.NET Core dalam kontainer, lihat Menggunakan GitHub Actions untuk menyebarkan ke App Service untuk Kontainer dan terhubung ke database.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menggunakan alur kerja GitHub Actions untuk menambahkan sumber daya ke Azure dengan templat Azure Resource Manager (templat ARM)
  • Menggunakan alur kerja GitHub Actions untuk membangun aplikasi ASP.NET Core

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan:

Unduh sampel

Ambil proyek sampel di repositori Sampel Azure.

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

Membuat grup sumber daya

Buka Azure Cloud Shell di https://shell.azure.com. Anda dapat secara bergantian menggunakan Azure CLI jika telah diinstal secara lokal. (Untuk informasi selengkapnya tentang Cloud Shell, lihat Gambaran Umum Cloud Shell.)

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

Membuat info masuk penyebaran

OpenID Connect adalah metode autentikasi yang menggunakan token yang berumur pendek. Menyiapkan OpenID Connect dengan GitHub Actions merupakan proses lebih kompleks yang menawarkan keamanan yang sulit.

  1. Jika Anda tidak memiliki aplikasi yang sudah ada, daftarkan aplikasi ID Microsoft Entra baru dan perwakilan layanan yang dapat mengakses sumber daya.

    az ad app create --display-name myApp
    

    Perintah ini akan menghasilkan JSON dengan appId JSON yang merupakan client-id Anda. id adalah APPLICATION-OBJECT-ID dan akan digunakan untuk membuat kredensial federasi dengan panggilan Graph API. Simpan nilai untuk digunakan sebagai AZURE_CLIENT_ID GitHub rahasia di kemudian hari.

  2. Membuat perwakilan layanan. Ganti $appID dengan appId dari output JSON Anda.

    Perintah ini menghasilkan output JSON dengan perwakilan idlayanan . Perwakilan layanan id digunakan sebagai nilai --assignee-object-id argumen dalam az role assignment create perintah di langkah berikutnya.

    appOwnerOrganizationId Salin dari output JSON untuk digunakan sebagai rahasia GitHub untuk AZURE_TENANT_ID nanti.

     az ad sp create --id $appId
    
  3. Buat penetapan peran baru untuk perwakilan layanan Anda. Secara default, penetapan peran akan terikat dengan langganan default Anda. Ganti $subscriptionId dengan ID langganan Anda, $resourceGroupName dengan nama grup sumber daya Anda, dan $servicePrincipalId dengan id perwakilan layanan yang baru dibuat.

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $servicePrincipalId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Jalankan perintah berikut untuk membuat kredensial identitas federasi baru untuk aplikasi ID Microsoft Entra Anda.

    • Ganti APPLICATION-OBJECT-ID dengan objectId (dihasilkan saat membuat aplikasi) untuk aplikasi ID Microsoft Entra Anda.
    • Tetapkan nilai untuk CREDENTIAL-NAME untuk referensi nanti.
    • Set subject. Nilai ini ditentukan oleh GitHub tergantung pada alur kerja Anda:
      • Pekerjaan dalam lingkungan GitHub Actions Anda: repo:< Organization/Repository >:environment:< Name >
      • Untuk Pekerjaan yang tidak terikat dengan lingkungan, sertakan jalur referensi untuk cabang/tag berdasarkan jalur referensi yang digunakan untuk memicu alur kerja: repo:< Organization/Repository >:ref:< ref path>. Misalnya, repo:n-username/ node_express:ref:refs/heads/my-branch atau repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Untuk alur kerja yang dipicu oleh peristiwa permintaan tarik: 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"
        ]
    }
    

Untuk mempelajari cara membuat aplikasi direktori aktif, perwakilan layanan, dan kredensial federasi di portal Azure, lihat Menyambungkan GitHub dan Azure.

Mengonfigurasi rahasia GitHub untuk autentikasi

Anda perlu menyediakan ID Klien, ID Penyewa, dan ID Langganan aplikasi Anda untuk tindakan masuk. Nilai ini bisa disediakan secara langsung di alur kerja atau bisa disimpan di rahasia GitHub dan direferensikan dalam alur kerja Anda. Menyimpan nilai sebagai GitHub rahasia adalah opsi yang lebih aman.

  1. Di GitHub, buka repositori Anda.

  2. Buka Pengaturan di menu navigasi.

  3. Pilih Tindakan Rahasia keamanan > dan variabel>.

    Cuplikan layar menambahkan rahasia

  4. Pilih Rahasia repositori baru.

  5. Membuat rahasia untuk AZURE_CLIENT_ID, AZURE_TENANT_ID, dan AZURE_SUBSCRIPTION_ID. Gunakan nilai-nilai ini dari aplikasi Microsoft Entra Anda untuk rahasia GitHub Anda:

    Rahasia GitHub Aplikasi Microsoft Entra
    AZURE_CLIENT_ID Aplikasi (ID klien)
    AZURE_TENANT_ID ID (tenant) direktori
    AZURE_SUBSCRIPTION_ID ID Langganan
  6. Simpan setiap rahasia dengan memilih Tambahkan rahasia.

Menambahkan rahasia GitHub untuk build Anda

  1. Buat dua rahasia baru di repositori GitHub Anda untuk SQLADMIN_PASS dan SQLADMIN_LOGIN. Pastikan Anda memilih kata sandi yang kompleks, jika tidak, langkah buat untuk server database SQL akan gagal. Anda tidak akan bisa mengakses kata sandi ini lagi, jadi simpan secara terpisah.

  2. Buat rahasia AZURE_SUBSCRIPTION_ID untuk ID langganan Azure Anda. Jika Anda tidak mengetahui ID langganan Anda, gunakan perintah ini di Azure Shell untuk menemukannya. Salin nilai dalam kolom SubscriptionId.

    az account list -o table
    

Membuat sumber daya Azure

Alur kerja buat sumber daya Azure menjalankan templat ARM untuk menyebarkan sumber daya ke Azure. Alur kerjanya adalah:

Untuk menjalankan alur kerja buat sumber daya Azure:

  1. Buka file infraworkflow.yml di .github/workflows dalam repositori Anda.

  2. Perbarui nilai AZURE_RESOURCE_GROUP ke nama grup sumber daya Anda.

  3. Atur input untuk region dalam tindakan Penyebaran ARM ke wilayah Anda.

    1. Buka templates/azuredeploy.resourcegroup.parameters.json dan perbarui properti rgLocation ke wilayah Anda.
  4. Buka Tindakan lalu pilih Jalankan alur kerja.

    Menjalankan alur kerja Tindakan GitHub untuk menambahkan sumber daya.

  5. Pastikan bahwa tindakan Anda berjalan dengan sukses dengan memeriksa tanda centang hijau di halaman Tindakan.

    Berhasil menjalankan buat sumber daya.

  6. Setelah Anda membuat sumber daya, buka Tindakan, pilih Buat Sumber Daya Azure, nonaktifkan alur kerja.

    Nonaktifkan alur kerja Buat Sumber Daya Azure.

Membuat rahasia profil penerbitan

  1. Di portal Microsoft Azure, buka App Service penahapan (Slot) baru Anda yang dibuat dengan alur kerja Create Azure Resources.

  2. Pilih Dapatkan Profil Penerbitan.

  3. Buka file profil penerbitan di editor teks dan salin isinya.

  4. Buat rahasia GitHub baru untuk AZURE_WEBAPP_PUBLISH_PROFILE.

Membangun dan menyebarkan aplikasi

Untuk menjalankan alur kerja pembangunan dan penyebaran:

  1. Buka file workflow.yaml Anda di .github/workflows dalam repositori Anda.

  2. Pastikan bahwa variabel lingkungan untuk AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAME, SQLSERVER_NAME, dan DATABASE_NAME cocok dengan variabel di infraworkflow.yml.

  3. Verifikasi bahwa aplikasi Anda disebarkan dengan mengunjungi URL dalam Swap untuk output slot produksi. Anda akan melihat aplikasi sampel, Aplikasi TodoList Saya.

Membersihkan sumber daya

Jika Anda tidak lagi memerlukan proyek sampel, hapus grup sumber daya Anda di portal Microsoft Azure dan hapus repositori Anda di GitHub.

Langkah berikutnya