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:
- 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-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.
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 merupakanclient-id
Anda.objectId
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 denganobjectId
yang berbeda dan akan digunakan dalam langkah berikutnya.objectId
yang baru adalahassignee-object-id
.Perintah ini menghasilkan output JSON dengan
objectId
yang berbeda dan akan digunakan dalam langkah berikutnya.objectId
yang baru adalahassignee-object-id
.Salin
appOwnerTenantId
untuk digunakan sebagai GitHub rahasia untukAZURE_TENANT_ID
nanti.az ad sp create --id $appId
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 dihasilkanassignee-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
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
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 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.
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 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:
- 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
azuredeploy.yaml
di.github/workflows
dalam repositori Anda.Perbarui nilai
AZURE_RESOURCE_GROUP
ke nama grup sumber daya Anda.Perbarui nilai
WEB_APP_NAME
danSQL_SERVER_NAME
ke nama aplikasi web dan nama server sql Anda.Buka Tindakan lalu pilih Jalankan alur kerja.
Pastikan bahwa tindakan Anda berjalan dengan sukses dengan memeriksa tanda centang hijau di halaman Tindakan.
Menambahkan registri kontainer dan rahasia SQL
Di portal Microsoft Azure, buka Azure Container Registry yang baru dibuat di grup sumber daya Anda.
Buka Kunci akses lalu salin nilai nama pengguna dan kata sandi.
Buat rahasia GitHub baru untuk kata sandi
ACR_USERNAME
danACR_PASSWORD
di repositori Anda.Di portal Microsoft Azure, buka database Azure SQL Anda. Buka string Koneksi lalu salin nilainya.
Buat rahasia baru untuk
SQL_CONNECTION_STRING
. Ganti{your_password}
denganSQL_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:
Buka file
build-deploy.yaml
Anda di.github/workflows
dalam repositori Anda.Pastikan bahwa variabel lingkungan untuk
AZURE_RESOURCE_GROUP
danWEB_APP_NAME
cocok dengan variabel diazuredeploy.yaml
.Perbarui nilai
ACR_LOGIN_SERVER
untuk server masuk Azure Container Registry Anda.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk