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:
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Akun GitHub. Jika Anda belum memilikinya, daftar gratis.
- Repositori GitHub untuk menyimpan templat Resource Manager dan file alur kerja Anda. Untuk membuatnya, lihat Membuat repositori baru.
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.
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 merupakanclient-id
Anda.id
adalahAPPLICATION-OBJECT-ID
dan akan digunakan untuk membuat kredensial federasi dengan panggilan Graph API. Simpan nilai untuk digunakan sebagaiAZURE_CLIENT_ID
GitHub rahasia di kemudian hari.Membuat perwakilan layanan. Ganti
$appID
dengan appId dari output JSON Anda.Perintah ini menghasilkan output JSON dengan perwakilan
id
layanan . Perwakilan layananid
digunakan sebagai nilai--assignee-object-id
argumen dalamaz role assignment create
perintah di langkah berikutnya.appOwnerOrganizationId
Salin dari output JSON untuk digunakan sebagai rahasia GitHub untukAZURE_TENANT_ID
nanti.az ad sp create --id $appId
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
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
ataurepo:n-username/ node_express:ref:refs/tags/my-tag
. - Untuk alur kerja yang dipicu oleh peristiwa permintaan tarik:
repo:< Organization/Repository >:pull_request
.
- Pekerjaan dalam lingkungan GitHub Actions Anda:
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" ] }
- Ganti
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.
Di GitHub, buka repositori Anda.
Buka Pengaturan di menu navigasi.
Pilih Tindakan Rahasia keamanan > dan variabel>.
Pilih Rahasia repositori baru.
Membuat rahasia untuk
AZURE_CLIENT_ID
,AZURE_TENANT_ID
, danAZURE_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 Simpan setiap rahasia dengan memilih Tambahkan rahasia.
Menambahkan rahasia GitHub untuk build Anda
Buat dua rahasia baru di repositori GitHub Anda untuk
SQLADMIN_PASS
danSQLADMIN_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.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 kolomSubscriptionId
.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:
- Memeriksa kode sumber dengan tindakan Selesai.
- Masuk ke Azure dengan tindakan Masuk Azure dan mengumpulkan informasi sumber daya Azure dan lingkungan.
- Sebarkan sumber daya dengan tindakan Sebarkan Azure Resource Manager.
Untuk menjalankan alur kerja buat sumber daya Azure:
Buka file
infraworkflow.yml
di.github/workflows
dalam repositori Anda.Perbarui nilai
AZURE_RESOURCE_GROUP
ke nama grup sumber daya Anda.Atur input untuk
region
dalam tindakan Penyebaran ARM ke wilayah Anda.- Buka
templates/azuredeploy.resourcegroup.parameters.json
dan perbarui propertirgLocation
ke wilayah Anda.
- Buka
Buka Tindakan lalu pilih Jalankan alur kerja.
Pastikan bahwa tindakan Anda berjalan dengan sukses dengan memeriksa tanda centang hijau di halaman Tindakan.
Setelah Anda membuat sumber daya, buka Tindakan, pilih Buat Sumber Daya Azure, nonaktifkan alur kerja.
Membuat rahasia profil penerbitan
Di portal Microsoft Azure, buka App Service penahapan (Slot) baru Anda yang dibuat dengan alur kerja
Create Azure Resources
.Pilih Dapatkan Profil Penerbitan.
Buka file profil penerbitan di editor teks dan salin isinya.
Buat rahasia GitHub baru untuk
AZURE_WEBAPP_PUBLISH_PROFILE
.
Membangun dan menyebarkan aplikasi
Untuk menjalankan alur kerja pembangunan dan penyebaran:
Buka file
workflow.yaml
Anda di.github/workflows
dalam repositori Anda.Pastikan bahwa variabel lingkungan untuk
AZURE_RESOURCE_GROUP
,AZURE_WEBAPP_NAME
,SQLSERVER_NAME
, danDATABASE_NAME
cocok dengan variabel diinfraworkflow.yml
.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.