0Pricing
Cloud & IT Cert Prep · Pelajaran

GitHub Actions di Azure

Tiru alur kerja CI/CD menggunakan GitHub Actions dengan tindakan azure/webapps-deploy, lalu pahami kapan harus memilih GitHub Actions daripada Azure Pipelines.

GitHub Actions di Azure adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa Itu GitHub Actions?

GitHub Actions adalah platform CI/CD dan otomatisasi bawaan GitHub. Alur kerja ditentukan dalam file YAML yang disimpan di direktori .github/workflows/ dalam repositori Anda dan dipicu oleh peristiwa GitHub — push, pull request, rilis, dan lainnya. GitHub Actions terintegrasi erat dengan ekosistem GitHub (masalah, PR, paket, pemindaian keamanan) dan menyediakan marketplace yang kaya akan Actions komunitas untuk tugas seperti membangun, menguji, dan menerapkan ke Azure.

Struktur Alur Kerja GitHub Actions

File alur kerja GitHub Actions memiliki tiga bagian tingkat teratas. on menentukan peristiwa pemicu. env menetapkan variabel lingkungan global. jobs menentukan satu atau beberapa pekerjaan, yang masing-masing berjalan pada runner (yang dihosting GitHub atau dihosting sendiri). Setiap pekerjaan memiliki steps — berupa run (skrip shell) atau uses (Actions siap pakai). Secara default, pekerjaan berjalan secara paralel; gunakan needs untuk membuat dependensi berurutan.

# .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 test

Melakukan Autentikasi ke Azure dari GitHub Actions

Cara yang direkomendasikan untuk melakukan autentikasi GitHub Actions ke Azure adalah OpenID Connect (OIDC) — cara ini menerbitkan token berumur pendek tanpa menyimpan rahasia berumur panjang di GitHub. Konfigurasikan kredensial identitas federasi pada Azure App Registration atau Managed Identity, lalu berikan kepercayaan untuk repositori dan cabang GitHub Anda. Gunakan Actions azure/login@v2 untuk menukar token OIDC GitHub dengan token akses Azure — rahasia klien tidak perlu disimpan di 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 }}

Menerapkan ke Azure App Service

Actions azure/webapps-deploy@v3 menerapkan kode atau citra kontainer ke Azure App Service. Actions ini menangani penerapan slot, penerapan berbasis paket, dan penerapan citra Docker. Pasangkan dengan azure/login@v2 untuk autentikasi. Anda dapat menargetkan slot penahapan, menjalankan pengujian asap, lalu menukarnya dengan Actions azure/CLI@v2 yang menjalankan perintah pertukaran slot — sepenuhnya meniru pola penerapan blue-green Azure Pipelines di 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.zip

Menerapkan ke Azure Kubernetes Service

Lakukan penerapan ke AKS dari GitHub Actions menggunakan Actions azure/k8s-deploy@v5. Actions ini menggunakan kubectl apply untuk menerapkan manifes, melakukan penggantian citra (mengganti tag citra dengan tag Build saat ini), dan memantau kesehatan peluncuran. Actions azure/aks-set-context@v4 mengonfigurasi kredensial kubectl dengan mengambil kubeconfig klaster menggunakan sesi Azure yang telah diautentikasi.

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 }}'

Secrets dan Variabel GitHub

Simpan nilai sensitif di GitHub Secrets — nilai terenkripsi yang dapat diakses sebagai ${{ secrets.SECRET_NAME }} dalam alur kerja. Konfigurasi non-sensitif disimpan di GitHub Variables — dapat diakses sebagai ${{ vars.VARIABLE_NAME }}. Keduanya dapat dibatasi cakupannya ke repositori, lingkungan, atau organisasi. Gunakan environments di GitHub Actions untuk menambahkan aturan perlindungan (peninjau wajib, cabang penerapan) 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 }}'

Aturan Perlindungan Lingkungan

Environments GitHub Actions (dikonfigurasi di Settings → Environments repositori) menambahkan gerbang penerapan yang serupa dengan lingkungan Azure DevOps. Anda dapat mewajibkan peninjau wajib yang harus menyetujui sebelum pekerjaan yang menargetkan lingkungan tersebut berjalan, membatasi penerapan ke cabang tertentu (hanya main yang dapat menerapkan ke Production), dan menambahkan pengatur waktu tunggu untuk menunda penerapan. Pekerjaan yang menargetkan lingkungan terlindungi akan berhenti sementara hingga semua aturan perlindungan terpenuhi.

# 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.zip

Alur Kerja yang Dapat Digunakan Kembali dan Actions Komposit

Hindari menggandakan logika CI/CD di berbagai repositori dengan menggunakan dua fitur GitHub Actions. Alur kerja yang dapat digunakan kembali memungkinkan Anda menentukan alur kerja di satu repositori dan memanggilnya dari alur kerja di repositori lain menggunakan uses: myorg/shared-workflows/.github/workflows/deploy.yml@main. Actions komposit menggabungkan beberapa langkah menjadi satu Actions yang disimpan di repositori dan dapat digunakan kembali dengan uses: myorg/my-actions/deploy@v1. Keduanya mendorong prinsip DRY di seluruh pipeline 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 vs Azure Pipelines: Kapan Memilihnya

Pilih GitHub Actions jika: kode Anda dihosting di GitHub, tim Anda lebih menyukai antarmuka GitHub, Anda menginginkan integrasi erat dengan pemeriksaan PR dan pemindaian kode GitHub, atau Anda sedang membangun proyek sumber terbuka (menit gratis yang besar). Pilih Azure Pipelines jika: Anda memerlukan integrasi Azure Boards, pengujian lanjutan dengan Azure Test Plans, pengelolaan umpan Azure Artifacts, kode berada di Azure Repos, atau Anda memerlukan pengelolaan rilis multi-tahap yang kompleks dengan gerbang di banyak lingkungan. Keduanya sama-sama mendukung penerapan ke Azure dengan baik.

Marketplace GitHub Actions

Marketplace GitHub Actions menyediakan ribuan Actions komunitas dan resmi untuk tugas-tugas umum. Microsoft menerbitkan Actions Azure resmi: azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy, dan banyak lagi. Selalu sematkan Actions ke tag versi tertentu (misalnya, @v3) atau SHA commit untuk mencegah serangan rantai pasokan akibat Actions yang telah disusupi diperbarui dengan kode berbahaya.

# 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 time

Runner yang Dihosting Sendiri untuk Jaringan Privat

Runner yang dihosting GitHub hanya memiliki akses internet publik — runner tersebut tidak dapat menjangkau sumber daya Azure privat (basis data SQL, API internal) tanpa mengekspos sumber daya tersebut ke publik. Gunakan runner yang dihosting sendiri pada VM Azure di dalam VNet Anda untuk penerapan ke sumber daya privat. Daftarkan runner dengan mengunduh agen runner GitHub Actions, mengonfigurasinya menggunakan URL repositori dan token pendaftaran, lalu menjalankannya sebagai layanan. Skalakan runner yang dihosting sendiri dengan Azure Container Apps untuk kumpulan runner elastis.

# 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-hosted

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa: alur kerja GitHub Actions adalah file YAML di .github/workflows/ yang dipicu oleh peristiwa GitHub dan dijalankan pada runner, kredensial federasi OIDC memungkinkan autentikasi Azure tanpa rahasia dari GitHub Actions, dan GitHub Environments dengan aturan perlindungan menambahkan gerbang persetujuan ke penerapan Production. Kursus Azure DevOps ini selesai — selanjutnya adalah Azure Monitor dan Analitik Log.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “GitHub Actions di Azure” gratis?

Ya — teks lengkap “GitHub Actions di Azure” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “GitHub Actions di Azure”?

Tiru alur kerja CI/CD menggunakan GitHub Actions dengan tindakan azure/webapps-deploy, lalu pahami kapan harus memilih GitHub Actions daripada Azure Pipelines. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “GitHub Actions di Azure” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ikhtisar Azure DevOps Services
  2. Membangun Alur CI dengan Azure Pipelines
  3. Penerapan Berkelanjutan ke Azure
  4. GitHub Actions di Azure
← Kembali ke Cloud & IT Cert Prep