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 testGitHub 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.zipAzure 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.zipYeniden 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-hostedHı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
- Azure DevOps Services Genel Bakış
- Azure Pipelines ile CI İşlem Hattı Oluşturma
- Azure'a Sürekli Dağıtım
- Azure'da GitHub Actions