Bagikan melalui


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

Tutorial ini memandu Anda menyiapkan alur kerja GitHub Actions untuk menyebarkan aplikasi Inti ASP.NET kontainer dengan ujung belakang Azure SQL Database. Setelah selesai, Anda memiliki aplikasi ASP.NET yang berjalan di Azure dan tersambung ke SQL Database. Pertama-tama, Anda harus membuat sumber daya Azure dengan alur kerja templat ARM GitHub Actions.

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 kontainer dengan perubahan aplikasi web terbaru

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-containerized-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 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. objectId 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 objectId yang berbeda dan akan digunakan dalam langkah berikutnya. objectId yang baru adalah assignee-object-id.

    Perintah ini menghasilkan output JSON dengan objectId yang berbeda dan akan digunakan dalam langkah berikutnya. objectId yang baru adalah assignee-object-id.

    Salin appOwnerTenantId untuk digunakan sebagai GitHub rahasia untuk AZURE_TENANT_ID nanti.

     az ad sp create --id $appId
    
  3. Membuat penetapan peran baru berdasarkan langganan dan objek. Secara default, penetapan peran akan terikat dengan langganan default Anda. Ganti $subscriptionId dengan ID langganan Anda, $resourceGroupName dengan nama grup sumber daya Anda, dan $assigneeObjectId dengan yang dihasilkan assignee-object-id (id objek perwakilan layanan yang baru dibuat).

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

    • Ganti APPLICATION-OBJECT-ID dengan objectId (dihasilkan saat membuat aplikasi) untuk aplikasi 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 Koneksi 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 SQL Server

Buat rahasia baru di repositori Anda untuk SQL_SERVER_ADMIN_PASSWORD. Rahasia ini bisa berupa kata sandi apa pun yang memenuhi standar Azure untuk keamanan kata sandi. Anda tidak akan bisa mengakses kata sandi ini lagi, jadi simpan secara terpisah.

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 azuredeploy.yaml di .github/workflows dalam repositori Anda.

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

  3. Perbarui nilai WEB_APP_NAME dan SQL_SERVER_NAME ke nama aplikasi web dan nama server sql 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.

Menambahkan registri kontainer dan rahasia SQL

  1. Di portal Microsoft Azure, buka Azure Container Registry yang baru dibuat di grup sumber daya Anda.

  2. Buka Kunci akses lalu salin nilai nama pengguna dan kata sandi.

  3. Buat rahasia GitHub baru untuk kata sandi ACR_USERNAME dan ACR_PASSWORD di repositori Anda.

  4. Di portal Microsoft Azure, buka database Azure SQL Anda. Buka string Koneksi lalu salin nilainya.

  5. Buat rahasia baru untuk SQL_CONNECTION_STRING. Ganti {your_password} dengan SQL_SERVER_ADMIN_PASSWORD Anda.

Bangun, dorong, dan sebarkan gambar Anda

Alur kerja bangun, dorong, dan sebarkan membuat kontainer dengan perubahan aplikasi terbaru, mendorong kontainer ke Azure Container Registry, dan memperbarui slot penahapan aplikasi web untuk mengarahkan ke kontainer terbaru yang didorong. Alur kerja menampung pekerjaan pembangunan dan penyebaran:

  • Pekerjaan pembangunan memeriksa kode sumber dengan tindakan Selesai. Pekerjaan kemudian menggunakan tindakan masuk Docker dan skrip kustom untuk mengautentikasi dengan Azure Container Registry, membangun gambar kontainer, dan menyebarkannya ke Azure Container Registry.
  • Pekerjaan penyebaran masuk ke Azure dengan tindakan Masuk Azure dan mengumpulkan informasi sumber daya Azure dan lingkungan. Pekerjaan kemudian memperbarui Pengaturan Aplikasi Web dengan tindakan Pengaturan Azure App Service dan menyebarkan ke slot penahapan App Service dengan tindakan Azure Web Deploy. Terakhir, pekerjaan menjalankan skrip kustom untuk memperbarui database SQL dan menukar slot penahapan ke produksi.

Untuk menjalankan alur kerja pembangunan, dorongan, dan penyebaran:

  1. Buka file build-deploy.yaml Anda di .github/workflows dalam repositori Anda.

  2. Pastikan bahwa variabel lingkungan untuk AZURE_RESOURCE_GROUP dan WEB_APP_NAME cocok dengan variabel di azuredeploy.yaml.

  3. Perbarui nilai ACR_LOGIN_SERVER untuk server masuk Azure Container Registry Anda.

Langkah berikutnya