GitHub Actions pada Azure
Tiru aliran kerja CI/CD menggunakan GitHub Actions dengan tindakan azure/webapps-deploy, dan fahami masa yang sesuai untuk memilih GitHub Actions berbanding Azure Pipelines.
GitHub Actions pada Azure ialah pelajaran Azure Fundamentals percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Azure Fundamentals, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Azure Fundamentals merangkumi sejumlah 4 pelajaran.
Apakah GitHub Actions?
GitHub Actions ialah platform CI/CD dan automasi terbina dalam GitHub. Aliran kerja ditakrifkan dalam fail YAML yang disimpan dalam direktori .github/workflows/ repositori anda dan dicetuskan oleh peristiwa GitHub — tolakan, permintaan tarik, keluaran dan banyak lagi. GitHub Actions disepadukan rapat dengan ekosistem GitHub (isu, PR, pakej dan pengimbasan keselamatan) serta menyediakan pasaran yang luas dengan tindakan komuniti untuk tugas seperti membina, menguji dan menyebarkan ke Azure.
Struktur Aliran Kerja GitHub Actions
Fail aliran kerja GitHub Actions mempunyai tiga bahagian peringkat teratas. on mentakrifkan peristiwa pencetus. env menetapkan pemboleh ubah persekitaran global. jobs mentakrifkan satu atau lebih tugas, setiap satunya dijalankan pada runner (dihoskan oleh GitHub atau dihoskan sendiri). Setiap tugas mempunyai steps — sama ada run (skrip shell) atau uses (tindakan yang telah dibina). Tugas dijalankan secara selari secara lalai; gunakan needs untuk mewujudkan kebergantungan berjujukan.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_VERSION: '18.x'
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm ci
- run: npm testMengesahkan Identiti ke Azure daripada GitHub Actions
Cara yang disyorkan untuk mengesahkan GitHub Actions ke Azure ialah OpenID Connect (OIDC) — ia mengeluarkan token berjangka pendek tanpa menyimpan rahsia berjangka panjang dalam GitHub. Konfigurasikan kelayakan identiti bersekutu pada Azure App Registration atau Managed Identity, dan berikan kepercayaan kepadanya untuk repositori serta cawangan GitHub anda. Gunakan tindakan azure/login@v2 untuk menukar token OIDC GitHub kepada token akses Azure — tiada rahsia klien diperlukan dalam GitHub Secrets.
# Configure OIDC federated credential in Azure
az ad app federated-credential create \
--id <AppRegistrationObjectId> \
--parameters '{
"name": "github-oidc",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:myorg/myrepo:ref:refs/heads/main",
"audiences": ["api://AzureADTokenExchange"]
}'
# In the workflow: login via OIDC
# permissions:
# id-token: write
# contents: read
# - uses: azure/login@v2
# with:
# client-id: ${{ vars.AZURE_CLIENT_ID }}
# tenant-id: ${{ vars.AZURE_TENANT_ID }}
# subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}Menyebarkan ke Azure App Service
Tindakan azure/webapps-deploy@v3 menyebarkan kod atau imej bekas ke Azure App Service. Tindakan ini mengendalikan penyebaran slot, penyebaran berasaskan pakej dan penyebaran imej Docker. Padankannya dengan azure/login@v2 untuk pengesahan. Anda boleh menyasarkan slot pementasan, menjalankan ujian asap, kemudian menukarnya dengan tindakan azure/CLI@v2 yang menjalankan perintah pertukaran slot — meniru sepenuhnya corak penyebaran biru-hijau Azure Pipelines dalam GitHub Actions.
# .github/workflows/deploy.yml
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Build and zip app
run: npm ci && npm run build && zip -r app.zip dist/
- uses: azure/webapps-deploy@v3
with:
app-name: myUniqueWebApp
slot-name: staging
package: app.zipMenyebarkan ke Azure Kubernetes Service
Sebarkan ke AKS daripada GitHub Actions menggunakan tindakan azure/k8s-deploy@v5. Tindakan ini menggunakan kubectl apply untuk menyebarkan manifes, melakukan penggantian imej (menggantikan tag imej dengan tag binaan semasa), dan memantau kesihatan pelancaran. Tindakan azure/aks-set-context@v4 mengkonfigurasikan kelayakan kubectl dengan mengambil kubeconfig kluster menggunakan sesi Azure yang telah disahkan.
jobs:
deploy-aks:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- uses: azure/aks-set-context@v4
with:
resource-group: MyRG
cluster-name: myAKSCluster
- uses: azure/k8s-deploy@v5
with:
namespace: production
manifests: k8s/
images: 'mycontainerregistry.azurecr.io/myapp:${{ github.sha }}'Rahsia dan Pemboleh Ubah GitHub
Simpan nilai sensitif dalam GitHub Secrets — nilai yang disulitkan dan boleh dicapai sebagai ${{ secrets.SECRET_NAME }} dalam aliran kerja. Konfigurasi yang tidak sensitif hendaklah diletakkan dalam GitHub Variables — boleh dicapai sebagai ${{ vars.VARIABLE_NAME }}. Kedua-duanya boleh dihadkan kepada repositori, persekitaran atau organisasi. Gunakan environments dalam GitHub Actions untuk menambah peraturan perlindungan (penyemak yang diperlukan dan cawangan penyebaran) yang serupa dengan Azure DevOps Environments.
# Reference secrets and variables in a workflow
steps:
- name: Configure app settings
uses: azure/CLI@v2
with:
inlineScript: |
az webapp config appsettings set \
--name myUniqueWebApp \
--resource-group MyRG \
--settings \
DATABASE_URL='${{ secrets.DATABASE_URL }}' \
API_VERSION='${{ vars.API_VERSION }}'Peraturan Perlindungan Persekitaran
Environments GitHub Actions (dikonfigurasikan dalam Settings → Environments repositori) menambah pintu penyebaran yang serupa dengan persekitaran Azure DevOps. Anda boleh mewajibkan penyemak yang diperlukan untuk memberikan kelulusan sebelum tugas yang menyasarkan persekitaran dijalankan, mengehadkan penyebaran kepada cawangan tertentu (hanya main boleh disebarkan ke Production), dan menambah pemasa menunggu untuk melengahkan penyebaran. Tugas yang menyasarkan persekitaran terlindung akan dijeda sehingga semua peraturan perlindungan dipenuhi.
# Workflow job targeting a protected GitHub environment
jobs:
deploy-production:
runs-on: ubuntu-latest
environment:
name: Production # Must have 2 approvers in GitHub settings
url: https://myapp.contoso.com
needs: deploy-staging
steps:
- uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- uses: azure/webapps-deploy@v3
with:
app-name: myUniqueWebApp
package: app.zipAliran Kerja Boleh Digunakan Semula dan Tindakan Komposit
Elakkan penduaan logik CI/CD merentas repositori menggunakan dua ciri GitHub Actions. Aliran kerja boleh digunakan semula membolehkan anda mentakrifkan aliran kerja dalam satu repositori dan memanggilnya daripada aliran kerja dalam repositori lain menggunakan uses: myorg/shared-workflows/.github/workflows/deploy.yml@main. Tindakan komposit menggabungkan beberapa langkah menjadi satu tindakan yang disimpan dalam repositori dan boleh digunakan semula dengan uses: myorg/my-actions/deploy@v1. Kedua-duanya menggalakkan prinsip DRY merentas saluran CI/CD organisasi anda.
# Call a reusable workflow from another workflow
jobs:
deploy:
uses: myorg/shared-workflows/.github/workflows/deploy-appservice.yml@main
with:
app-name: myUniqueWebApp
slot-name: staging
package-path: dist/
secrets:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}GitHub Actions berbanding Azure Pipelines: Bila Hendak Memilihnya
Pilih GitHub Actions apabila: kod anda dihoskan pada GitHub, pasukan anda lebih gemar antara muka GitHub, anda mahukan penyepaduan rapat dengan pemeriksaan PR dan pengimbasan kod GitHub, atau anda sedang membina projek sumber terbuka (minit percuma yang banyak). Pilih Azure Pipelines apabila: anda memerlukan penyepaduan dengan Azure Boards, pengujian lanjutan menggunakan Azure Test Plans, pengurusan suapan Azure Artifacts, kod berada dalam Azure Repos, atau anda memerlukan pengurusan keluaran berbilang peringkat yang kompleks dengan pintu merentas banyak persekitaran. Kedua-duanya menyokong penyebaran ke Azure dengan sama baik.
Pasaran GitHub Actions
Pasaran GitHub Actions menempatkan ribuan tindakan komuniti dan rasmi untuk tugas biasa. Microsoft menerbitkan tindakan Azure rasmi: azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy dan banyak lagi. Sentiasa pin tindakan kepada tag versi tertentu (contohnya, @v3) atau SHA komit untuk menghalang serangan rantaian bekalan akibat tindakan yang terjejas dikemas kini dengan kod berniat jahat.
# Pin actions to specific version (recommended)
- uses: actions/checkout@v4 # Pinned to v4 tag
- uses: azure/login@v2 # Pinned to v2
- uses: azure/webapps-deploy@v3 # Pinned to v3
# Extra security: pin to commit SHA
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
# Avoid unpinned 'latest' or branch references
# - uses: some-action@main # UNSAFE - could change at any timeRunner Dihoskan Sendiri untuk Rangkaian Persendirian
Runner yang dihoskan GitHub hanya mempunyai akses internet awam — runner tersebut tidak dapat mencapai sumber Azure persendirian (pangkalan data SQL dan API dalaman) tanpa mendedahkan sumber itu kepada umum. Gunakan runner yang dihoskan sendiri pada VM Azure di dalam VNet anda untuk penyebaran kepada sumber persendirian. Daftarkan runner dengan memuat turun ejen runner GitHub Actions, mengkonfigurasikannya dengan URL repositori dan token pendaftaran anda, kemudian menjalankannya sebagai perkhidmatan. Skalakan runner yang dihoskan sendiri dengan Azure Container Apps untuk kumpulan runner yang anjal.
# Register a self-hosted runner on an Azure VM
# 1. Download runner (run on the VM)
curl -O -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
mkdir actions-runner && tar xzf ./actions-runner-linux-x64-2.317.0.tar.gz -C actions-runner
cd actions-runner
# 2. Configure (use token from GitHub Settings > Actions > Runners)
./config.sh --url https://github.com/myorg/myrepo --token <REGISTRATION_TOKEN>
# 3. Run as a service
sudo ./svc.sh install && sudo ./svc.sh start
# Use in workflow
# runs-on: self-hostedSemakan Pantas
Uji pemahaman anda tentang konsep Microsoft Azure Fundamentals (AZ-900) daripada pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini anda telah mempelajari bahawa aliran kerja GitHub Actions ialah fail YAML dalam .github/workflows/ yang dicetuskan oleh peristiwa GitHub dan dilaksanakan pada runner, kelayakan bersekutu OIDC membolehkan pengesahan Azure tanpa rahsia daripada GitHub Actions, manakala GitHub Environments dengan peraturan perlindungan menambah pintu kelulusan kepada penyebaran pengeluaran. Kursus Azure DevOps ini selesai — seterusnya ialah Azure Monitor dan Log Analytics.
Pelajari Azure Fundamentals dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “GitHub Actions pada Azure” percuma?
Ya — teks penuh “GitHub Actions pada Azure” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Azure Fundamentals, tingkat taraf kepada CoddyKit PRO. Kursus Azure Fundamentals merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “GitHub Actions pada Azure”?
Tiru aliran kerja CI/CD menggunakan GitHub Actions dengan tindakan azure/webapps-deploy, dan fahami masa yang sesuai untuk memilih GitHub Actions berbanding Azure Pipelines. Anda berlatih Azure Fundamentals menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Azure Fundamentals?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Azure Fundamentals di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “GitHub Actions pada Azure” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Azure Fundamentals ini?
Ya. Setiap pelajaran Azure Fundamentals menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Gambaran Keseluruhan Azure DevOps Services
- Membina Saluran Paip CI dengan Azure Pipelines
- Penggunaan Berterusan ke Azure
- GitHub Actions pada Azure