0Pricing
Cloud & IT Cert Prep · Ders

Azure'da GitHub Actions

CI/CD iş akışını azure/webapps-deploy eylemiyle GitHub Actions kullanarak yineleyin ve GitHub Actions'ı Azure Pipelines'a ne zaman tercih etmeniz gerektiğini anlayın.

Azure'da GitHub Actions, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

GitHub Actions Nedir?

GitHub Actions, GitHub'ın yerleşik CI/CD ve otomasyon platformudur. İş akışları, deponuzun .github/workflows/ dizininde saklanan YAML dosyalarında tanımlanır ve GitHub olaylarıyla — gönderimler, çekme istekleri, sürümler ve daha fazlasıyla — tetiklenir. GitHub Actions, GitHub ekosistemiyle (sorunlar, PR'ler, paketler, güvenlik taraması) derinlemesine tümleşir ve Azure'da derleme, test etme ve dağıtım gibi görevler için zengin bir topluluk eylemleri pazaryeri sunar.

GitHub Actions İş Akışı Yapısı

Bir GitHub Actions iş akışı dosyası, üst düzeyde üç bölüm içerir. on, tetikleyici olayları tanımlar. env, genel ortam değişkenlerini ayarlar. jobs, her biri bir runner (GitHub tarafından barındırılan veya kendi barındırdığınız) üzerinde çalışan bir ya da daha fazla iş tanımlar. Her işte steps bulunur — bunlar ya run (kabuk betiği) ya da uses (önceden oluşturulmuş bir eylem) olur. İşler varsayılan olarak paralel çalışır; sıralı bağımlılıklar oluşturmak için needs kullanın.

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

GitHub Actions ile Azure'da Kimlik Doğrulama

GitHub Actions'ı Azure'da kimlik doğrulaması yapacak şekilde yapılandırmanın önerilen yolu OpenID Connect (OIDC)'tir — GitHub'da uzun ömürlü gizli dizileri depolamadan kısa ömürlü belirteçler verir. Bir Azure App Registration veya Managed Identity üzerinde federasyon kimlik bilgisi yapılandırarak GitHub deponuza ve dalınıza güvenmesini sağlayın. GitHub OIDC belirtecini Azure erişim belirteciyle değiştirmek için azure/login@v2 eylemini kullanın — GitHub Secrets'ta istemci gizli dizileri bulundurmanız gerekmez.

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

Azure App Service'e Dağıtım

azure/webapps-deploy@v3 eylemi, kodu veya kapsayıcı görüntüsünü Azure App Service'e dağıtır. Yuva dağıtımını, paket tabanlı dağıtımı ve Docker görüntüsü dağıtımını yönetir. Kimlik doğrulaması için bunu azure/login@v2 ile birlikte kullanın. Bir hazırlama yuvasını hedefleyebilir, duman testleri çalıştırabilir ve ardından yuva değiştirme komutunu çalıştıran azure/CLI@v2 eylemiyle yuvaları değiştirebilirsiniz — böylece Azure Pipelines mavi-yeşil dağıtım modelini tamamen GitHub Actions içinde uygulayabilirsiniz.

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

Azure Kubernetes Service'e Dağıtım

azure/k8s-deploy@v5 eylemini kullanarak GitHub Actions üzerinden AKS'ye dağıtım yapın. Bu eylem, bildirimleri dağıtmak için kubectl apply kullanır, görüntü değiştirme işlemi gerçekleştirir (görüntü etiketini geçerli derlemenin etiketiyle değiştirir) ve dağıtımın durumunu izler. azure/aks-set-context@v4 eylemi, kimliği doğrulanmış Azure oturumunu kullanarak kümenin kubeconfig dosyasını alır ve kubectl kimlik bilgilerini yapılandırır.

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

GitHub Secrets ve Değişkenleri

Hassas değerleri GitHub Secrets içinde depolayın — iş akışlarında ${{ secrets.SECRET_NAME }} olarak erişilebilen şifrelenmiş değerlerdir. Hassas olmayan yapılandırmaları GitHub Variables içine koyun — bunlara ${{ vars.VARIABLE_NAME }} olarak erişilebilir. Her ikisi de bir depo, ortam veya kuruluş kapsamına alınabilir. Azure DevOps Environments'a benzer koruma kuralları (gerekli inceleyenler, dağıtım dalları) eklemek için GitHub Actions'ta environments kullanın.

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

Ortam Koruma Kuralları

GitHub Actions Environments özelliği (depo Settings → Environments bölümünde yapılandırılır), Azure DevOps ortamlarına benzer dağıtım kapıları ekler. Ortamı hedefleyen bir iş çalışmadan önce onay vermesi gereken gerekli inceleyenler belirleyebilir, dağıtımları belirli dallarla kısıtlayabilir (Production'a yalnızca main dağıtım yapabilir) ve dağıtımları geciktirmek için bekleme zamanlayıcıları ekleyebilirsiniz. Korumalı bir ortamı hedefleyen işler, tüm koruma kuralları karşılanana kadar duraklatılır.

# 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

Yeniden Kullanılabilir İş Akışları ve Bileşik Eylemler

İki GitHub Actions özelliğini kullanarak CI/CD mantığını depolar arasında yinelemekten kaçının. Yeniden kullanılabilir iş akışları, bir depoda iş akışı tanımlamanıza ve uses: myorg/shared-workflows/.github/workflows/deploy.yml@main kullanarak bunu diğer depolardaki iş akışlarından çağırmanıza olanak tanır. Bileşik eylemler, bir depoda saklanan birden çok adımı tek bir eylemde birleştirir ve uses: myorg/my-actions/deploy@v1 ile yeniden kullanılabilir. Her ikisi de kuruluşunuzun CI/CD işlem hatlarında DRY ilkelerini destekler.

# 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 ve Azure Pipelines: Ne Zaman Hangisini Seçmelisiniz

Şu durumlarda GitHub Actions'ı seçin: kodunuz GitHub'da barındırılıyorsa, ekibiniz GitHub kullanıcı arayüzünü tercih ediyorsa, GitHub PR denetimleri ve kod taramasıyla sıkı tümleşme istiyorsanız veya açık kaynak projeler geliştiriyorsanız (cömert ücretsiz dakika kotası). Şu durumlarda Azure Pipelines'ı seçin: Azure Boards tümleşmesine, Azure Test Plans ile gelişmiş testlere, Azure Artifacts akış yönetimine ihtiyacınız varsa, kodunuz Azure Repos'taysa veya birçok ortamda kapılar içeren karmaşık çok aşamalı sürüm yönetimine ihtiyaç duyuyorsanız. Her ikisi de Azure'a eşit derecede iyi dağıtım yapmayı destekler.

GitHub Actions Pazaryeri

GitHub Actions Marketplace, yaygın görevler için binlerce topluluk ve resmî eyleme ev sahipliği yapar. Microsoft şu resmî Azure eylemlerini yayımlar: azure/login, azure/webapps-deploy, azure/aks-set-context, azure/k8s-deploy, azure/CLI, azure/arm-deploy ve daha fazlası. Ele geçirilmiş bir eylemin kötü amaçlı kodla güncellenmesinden kaynaklanan yazılım tedarik zinciri saldırılarını önlemek için eylemleri her zaman belirli bir sürüm etiketine (ör. @v3) veya bir işleme SHA'sına sabitleyin.

# 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

Özel Ağlar için Kendi Barındırdığınız Runners

GitHub tarafından barındırılan runner'ların yalnızca genel internet erişimi vardır — bu kaynakları herkese açık hâle getirmeden özel Azure kaynaklarına (SQL veritabanları, dahili API'ler) erişemezler. Özel kaynaklara dağıtım yapmak için VNet'inizin içindeki Azure VM'lerinde kendi barındırdığınız runner'ları kullanın. GitHub Actions runner aracısını indirip depo URL'niz ve kayıt belirtecinizle yapılandırarak ve bir hizmet olarak çalıştırarak bir runner kaydedin. Esnek runner havuzları için kendi barındırdığınız runner'ları Azure Container Apps ile ölçeklendirin.

# 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

Hızlı Kontrol

Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: GitHub Actions iş akışları, GitHub olaylarıyla tetiklenen ve runner'larda yürütülen .github/workflows/ dizinindeki YAML dosyalarıdır; OIDC federasyon kimlik bilgileri, GitHub Actions'tan Azure'da gizli dizisiz kimlik doğrulamayı etkinleştirir; koruma kurallarına sahip GitHub Environments ise üretim dağıtımlarına onay kapıları ekler. Böylece Azure DevOps kursu tamamlanıyor — sırada Azure Monitor ve Log Analytics var.

Sıkça Sorulan Sorular

“Azure'da GitHub Actions” dersi ücretsiz mi?

Evet — “Azure'da GitHub Actions” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Azure'da GitHub Actions” dersinde ne öğreneceğim?

CI/CD iş akışını azure/webapps-deploy eylemiyle GitHub Actions kullanarak yineleyin ve GitHub Actions'ı Azure Pipelines'a ne zaman tercih etmeniz gerektiğini anlayın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Azure'da GitHub Actions” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Azure DevOps Services Genel Bakış
  2. Azure Pipelines ile CI İşlem Hattı Oluşturma
  3. Azure'a Sürekli Dağıtım
  4. Azure'da GitHub Actions
← Cloud & IT Cert Prep Sayfasına Dön