Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tindakan GitHub adalah serangkaian fitur di GitHub untuk mengotomatiskan alur kerja pengembangan perangkat lunak Anda di tempat yang sama Anda menyimpan kode dan berkolaborasi terhadap permintaan pull dan masalah.
Gunakan Sebarkan ke Azure Container Instances dalam GitHub Actions untuk mengotomatiskan pengembangan satu kontainer ke Azure Container Instances. Tindakan ini memungkinkan Anda mengatur properti untuk instans kontainer yang mirip dengan yang ada di perintahaz container create.
Artikel ini memperlihatkan cara menyiapkan alur kerja dalam repositori GitHub yang melakukan tindakan berikut:
- Menyusun gambar dari Dockerfile
- Menerapkan gambar ke registri kontainer Azure
- Menyebarkan gambar kontainer ke instans kontainer Azure
Artikel ini memperlihatkan dua cara untuk menyiapkan alur kerja:
- Konfigurasikan alur kerja GitHub - Membuat alur kerja dalam repositori GitHub menggunakan tindakan Sebarkan ke Azure Container Instances dan tindakan lainnya.
-
Gunakan ekstensi CLI - Menggunakan perintah
az container app updalam ekstensi Sebarkan ke Azure dalam Azure CLI. Perintah ini mempersingkat pembuatan alur kerja GitHub dan langkah-langkah penyebaran.
Penting
GitHub Actions untuk Azure Container Instances sedang dalam tahap pratinjau. Pratinjau disediakan untuk Anda dengan syarat Anda menyetujui ketentuan penggunaan tambahan. Beberapa aspek dari fitur ini dapat berubah sebelum tersedia secara umum (GA).
Prasyarat
- Akun GitHub - Membuat akun di https://github.com jika Anda belum memilikinya.
- Azure CLI - Anda dapat menggunakan Azure Cloud Shell atau penginstalan lokal Azure CLI untuk menyelesaikan langkah-langkah Azure CLI. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
- Registri kontainer Azure - Jika Anda belum memilikinya, buat registri kontainer Azure di tingkat Dasar menggunakan Azure CLI, portal Microsoft Azure, atau metode lainnya. Perhatikan grup sumber daya yang digunakan untuk penyebaran, yang digunakan untuk alur kerja GitHub.
Menyiapkan repositori
Untuk contoh dalam artikel ini, gunakan GitHub untuk mencabangkan repositori berikut: https://github.com/Azure-Samples/acr-build-helloworld-node
Repositori ini berisi file Dockerfile dan file sumber untuk membuat gambar kontainer aplikasi web kecil.
Pastikan Tindakan diaktifkan untuk repositori Anda. Buka repositori fork Anda dan pilih Pengaturan>Aksi. Dalam izin Tindakan, pastikan bahwa Izinkan semua tindakan dipilih.
Mengonfigurasi alur kerja GitHub
Membuat kredensial untuk autentikasi Azure
Dalam alur kerja GitHub, Anda perlu memberikan info masuk Azure untuk melakukan autentikasi ke Azure CLI. Contoh berikut membuat perwakilan layanan dengan peran Kontributor yang dibatasi pada grup sumber daya untuk registri kontainer Anda.
Pertama, dapatkan ID grup sumber daya Anda. Ganti nama grup Anda dalam perintah az group show berikut:
groupId=$(az group show \
--name <resource-group-name> \
--query id --output tsv)
Gunakan az ad sp create-for-rbac untuk membuat principal layanan:
az ad sp create-for-rbac \
--scope $groupId \
--role Contributor \
--sdk-auth
Output kurang lebih seperti:
{
"clientId": "xxxx6ddc-xxxx-xxxx-xxx-ef78a99dxxxx",
"clientSecret": "xxxx79dc-xxxx-xxxx-xxxx-aaaaaec5xxxx",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Simpan output JSON karena digunakan di langkah selanjutnya. Selain itu, perhatikan clientId, yang perlu Anda perbarui prinsipal layanan di bagian berikutnya.
Pembaruan untuk autentikasi registri
Perbarui kredensial prinsipal layanan Azure untuk mengizinkan akses push dan pull ke registri kontainer Anda. Langkah ini memungkinkan alur kerja GitHub menggunakan perwakilan layanan untuk melakukan autentikasi dengan registri kontainer Anda dan untuk mendorong dan menarik gambar Docker.
Dapatkan ID sumber daya registri kontainer. Ganti nama registri Anda dalam perintah az acr show berikut:
registryId=$(az acr show \
--name <registry-name> \
--resource-group <resource-group-name> \
--query id --output tsv)
Gunakan az role assignment create untuk menetapkan peran AcrPush, yang memberi akses push dan pull ke registri. Ganti ID klien perwakilan layanan Anda:
az role assignment create \
--assignee <ClientId> \
--scope $registryId \
--role AcrPush
Menyimpan info masuk ke repositori GitHub
Di UI GitHub, navigasikan ke repositori fork Anda dan pilih > Rahasia dan variabel Keamanan.>
Pilih Rahasia repositori baru untuk menambahkan rahasia berikut:
| Rahasia | Nilai |
|---|---|
AZURE_CREDENTIALS |
Seluruh output JSON dari langkah pembuatan prinsipal layanan |
REGISTRY_LOGIN_SERVER |
Nama server masuk registri Anda (semua huruf kecil). Contoh: myregistry.azurecr.io |
REGISTRY_USERNAME |
clientId dari output JSON dari pembuatan prinsipal layanan |
REGISTRY_PASSWORD |
clientSecret dari output JSON dari pembuatan prinsip layanan |
RESOURCE_GROUP |
Nama grup sumber daya yang Anda gunakan untuk mengatur ruang lingkup perwakilan layanan |
Membuat file alur kerja
- Di antarmuka pengguna GitHub, pilih Tindakan.
- Pilih Siapkan alur kerja Anda sendiri.
- Di Edit file baru, tempelkan konten YAML berikut untuk menimpa kode sampel. Setujui nama file default
main.yml, atau masukkan nama file yang Anda pilih. - Pilih Mulai penerapan, (opsional) berikan deskripsi singkat dan luas tentang penerapan Anda, lalu pilih Terapkan file baru.
on: [push]
name: Linux_Container_Workflow
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- name: 'Login via Azure CLI'
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: 'Build and push image'
uses: azure/docker-login@v1
with:
login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
docker push ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
- name: 'Deploy to Azure Container Instances'
uses: 'azure/aci-deploy@v1'
with:
resource-group: ${{ secrets.RESOURCE_GROUP }}
dns-name-label: ${{ secrets.RESOURCE_GROUP }}${{ github.run_number }}
image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/sampleapp:${{ github.sha }}
registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
registry-username: ${{ secrets.REGISTRY_USERNAME }}
registry-password: ${{ secrets.REGISTRY_PASSWORD }}
name: aci-sampleapp
location: 'west us'
Memvalidasi alur kerja
Setelah Anda mengkomit file alur kerja, alur kerja dipicu. Untuk meninjau kemajuan alur kerja, buka Tindakan>Alur kerja.
Lihat Menampilkan riwayat eksekusi alur kerja untuk informasi tentang menampilkan status dan hasil setiap langkah dalam alur kerja Anda. Jika alur kerja tidak selesai, lihat Menampilkan log untuk mendiagnosis kegagalan.
Jika alur kerja berhasil diselesaikan, dapatkan informasi tentang instans kontainer bernama aci-sampleapp dengan menjalankan perintah az container show. Ganti nama grup sumber daya Anda:
az container show \
--resource-group <resource-group-name> \
--name aci-sampleapp \
--query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
--output table
Keluaran kurang lebih seperti:
FQDN ProvisioningState
--------------------------------- -------------------
aci-action01.westus.azurecontainer.io Succeeded
Setelah instans diprovisikan, buka FQDN kontainer di browser Anda untuk melihat aplikasi web yang berjalan.
Menggunakan ekstensi Sebarkan ke Azure
Sebagai alternatif, gunakan ekstensi Terapkan ke Azure di Azure CLI untuk mengonfigurasi alur kerja. Perintah az container app up dalam ekstensi mengambil parameter input dari Anda untuk menyiapkan alur kerja untuk disebarkan ke Azure Container Instances.
Alur kerja yang dibuat oleh Azure CLI mirip dengan alur kerja yang dapat Anda buat secara manual menggunakan GitHub.
Prasyarat tambahan
Selain prasyarat dan penyiapan repositori untuk skenario ini, Anda perlu menginstal ekstensi Sebarkan ke Azure untuk Azure CLI.
Jalankan perintah az extension add untuk menginstal ekstensi:
az extension add \
--name deploy-to-azure
Untuk informasi tentang menemukan, menginstal, dan mengelola ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan az container app up
Untuk menjalankan perintah az container app up, masukkan minimal:
- Nama registri kontainer Azure, misalnya, myregistry
- URL ke repositori GitHub, misalnya,
https://github.com/<your-GitHub-Id>/acr-build-helloworld-node
Contoh perintah:
az container app up \
--acr myregistry \
--repository https://github.com/myID/acr-build-helloworld-node
Perkembangan perintah
Jika diminta, masukkan info masuk GitHub Anda atau masukkan token akses pribadi GitHub (PAT) yang memiliki cakupan repositori dan pengguna untuk melakukan autentikasi dengan akun GitHub Anda. Jika Anda memberikan kredensial GitHub, perintah akan membuat PAT untuk Anda. Ikuti perintah tambahan untuk mengonfigurasi alur kerja.
Perintah membuat rahasia repositori untuk alur kerja:
- Kredensial akun pengguna layanan untuk Azure CLI
- Kredensial untuk mengakses registri kontainer Azure
Setelah perintah menerapkan file alur kerja ke repositori Anda, alur kerja dipicu.
Output kurang lebih seperti:
[...]
Checking in file github/workflows/main.yml in the GitHub repository myid/acr-build-helloworld-node
Creating workflow...
GitHub Action Workflow has been created - https://github.com/myid/acr-build-helloworld-node/runs/515192398
GitHub workflow completed.
Workflow succeeded
Your app is deployed at: http://acr-build-helloworld-node.eastus.azurecontainer.io:8080/
Untuk menampilkan status alur kerja dan hasil setiap langkah di UI GitHub, lihat Menampilkan riwayat eksekusi alur kerja.
Memvalidasi alur kerja
Alur kerja menyebarkan instans kontainer Azure dengan nama dasar repositori GitHub Anda, dalam hal ini, acr-build-helloworld-node. Jika alur kerja berhasil diselesaikan, dapatkan informasi tentang instans kontainer bernama acr-build-helloworld-node dengan menjalankan perintah az container show. Ganti nama grup sumber daya Anda:
az container show \
--resource-group <resource-group-name> \
--name acr-build-helloworld-node \
--query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" \
--output table
Hasil mirip dengan:
FQDN ProvisioningState
--------------------------------- -------------------
acr-build-helloworld-node.westus.azurecontainer.io Succeeded
Setelah instans diprovisikan, buka FQDN kontainer di browser Anda untuk melihat aplikasi web yang berjalan.
Membersihkan sumber daya
Hentikan instans kontainer dengan perintah az container delete:
az container delete \
--name <instance-name>
--resource-group <resource-group-name>
Untuk menghapus grup sumber daya dan semua sumber daya di dalamnya, jalankan perintah az group delete:
az group delete \
--name <resource-group-name>
Langkah berikutnya
Jelajahi GitHub Marketplace untuk tindakan lainnya untuk mengotomatiskan alur kerja pengembangan Anda