CI/CD Pipeline Mülakat Soruları: 2026 için GitHub Actions, GitLab CI ve Jenkins

GitHub Actions, GitLab CI ve Jenkins için CI/CD pipeline mülakat sorularına hazırlanın. Pratik kod örnekleri, pipeline yapılandırma kalıpları ve 2026 için güvenlik en iyi uygulamaları içerir.

CI/CD Pipeline interview questions for GitHub Actions, GitLab CI and Jenkins

CI/CD pipeline mülakat soruları, 2026 yılında DevOps işe alım süreçlerinde en sık karşılaşılan konular arasında yer alıyor. GitHub Actions günde 71 milyonun üzerinde iş çalıştırıyor ve Haziran 2026'da paralel adım yürütme özelliğini kullanıma sundu. GitLab CI yerleşik Secrets Manager ile 19. sürüme ulaştı ve Jenkins %28 pazar payını korumaya devam ediyor. Mülakatçılar, adaylardan her üç platformda da pratik yetkinlik bekliyor.

Mülakatçılar gerçekte neyi test eder

CI/CD mülakat sorularının çoğu üç kategoriye ayrılır: pipeline tasarımı (aşamaların ve işlerin yapılandırılması), güvenlik (secret yönetimi, tedarik zinciri güçlendirme) ve sorun giderme (başarısız buildlerin hata ayıklaması, yavaş pipelineların optimizasyonu). En az bir sorunun canlı pipeline yapılandırması gerektirmesi beklenmektedir.

GitHub Actions Workflow Yapısı ve Tetikleyiciler

GitHub Actions, otomasyonu workflow, job ve step kavramları etrafında organize eder. Workflow, otomasyonun ne zaman ve nasıl çalışacağını tanımlayan, .github/workflows/ dizininde saklanan bir YAML dosyasıdır. Her workflow bir veya daha fazla job içerir ve her job ayrı bir runner üzerinde çalışır.

Yaygın bir mülakat sorusu, on tetikleyicileri, job bağımlılıkları ve needs anahtar kelimesi arasındaki ilişkiyi açıklamayı ister.

yaml
# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npm run lint

  test:
    needs: lint              # waits for lint to pass
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [20, 22]       # runs tests on both versions
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
          cache: npm
      - run: npm ci
      - run: npm test

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    environment: production  # requires approval
    steps:
      - uses: actions/checkout@v4
      - run: ./deploy.sh

Bu workflow üç temel kavramı göstermektedir: needs anahtar kelimesi joblar arasında bağımlılık grafiği oluşturur, matrix stratejisi Node.js sürümleri arasında paralel test çalıştırmayı sağlar ve environment anahtar kelimesi dağıtımları manuel onay arkasına alır.

GitHub Actions Paralel Adımlar

GitHub Actions, 25 Haziran 2026'da en çok talep edilen özelliklerden birini karşılayarak paralel adım yürütmeyi kullanıma sundu. Daha önce bir job içindeki tüm adımlar sıralı olarak çalışıyordu. Yeni özellik, tek bir job içinde eşzamanlı yürütmeyi sağlayan dört anahtar kelime tanıtıyor.

Mülakat farkı: paralel joblar vs paralel adımlar

Paralel joblar izole dosya sistemleriyle ayrı runnerlar kullanır. Paralel adımlar tek bir runneri, checkouti, ortamı ve workspacei paylaşır. Mülakatçılar, adayların bu farkı anlayıp anlamadığını test eder, çünkü bu durum önbellekleme, artifact paylaşımı ve kaynak kullanımını etkiler.

yaml
# .github/workflows/parallel-steps.yml
name: Build with Parallel Steps

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci

      # Run lint and typecheck in parallel
      - name: lint
        run: npm run lint
        background: true

      - name: typecheck
        run: npm run typecheck
        background: true

      - wait-all:              # wait for both to complete

      # Or use the parallel shorthand
      - parallel:
          - name: build-frontend
            run: npm run build:frontend
          - name: build-backend
            run: npm run build:backend

      - run: npm run deploy

background: true anahtar kelimesi bir adımı asenkron olarak başlatır ve hemen bir sonraki adıma geçer. wait-all anahtar kelimesi önceki tüm arka plan adımları tamamlanana kadar yürütmeyi duraklatır. parallel anahtar kelimesi, birden fazla adımı eşzamanlı çalıştıran ve devam etmeden önce tümünün bitmesini bekleyen kısaltılmış bir sözdizimi sağlar.

İki ek anahtar kelime daha bulunmaktadır: wait belirli adlandırılmış arka plan adımlarını hedefler ve cancel artık ihtiyaç duyulmadığında bir arka plan adımını düzgün bir şekilde sonlandırır (uzun süren servisleri durdurmak için kullanışlıdır).

GitLab CI Aşamalarla Pipeline Yapılandırması

GitLab CI, depo kök dizininde bir .gitlab-ci.yml dosyası kullanır. Jobların varsayılan olarak bağımsız çalıştığı GitHub Actions'ın aksine, GitLab CI jobları aşamalara ayırır; aşamalar sıralı olarak çalışırken aynı aşamadaki joblar paralel çalışır.

Mülakatçılar sıklıkla adaylardan bir GitHub Actions workflowunu GitLab CI pipelineına veya tam tersine dönüştürmelerini ister.

yaml
# .gitlab-ci.yml
stages:
  - validate
  - test
  - deploy

variables:
  NODE_VERSION: "22"

lint:
  stage: validate
  image: node:${NODE_VERSION}
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/
  script:
    - npm ci
    - npm run lint

unit-tests:
  stage: test
  image: node:${NODE_VERSION}
  parallel:
    matrix:
      - NODE_VERSION: ["20", "22"]
  script:
    - npm ci
    - npm test
  artifacts:
    reports:
      junit: coverage/junit.xml
    expire_in: 7 days

deploy-production:
  stage: deploy
  image: alpine:latest
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: manual                   # manual gate
  environment:
    name: production
    url: https://app.example.com
  script:
    - ./deploy.sh

GitHub Actions'tan temel farklar: aşamalar global yürütme sırasını zorlar, parallel:matrix anahtar kelimesi matrix buildleri işler ve artifacts:reports:junit test sonuçlarını doğrudan merge request görünümlerine entegre eder.

GitLab 19.0 (Mayıs 2026) açık beta olarak Secrets Manager'ı tanıttı ve HashiCorp Vault gibi harici servislere ihtiyaç duymadan yerel secret depolaması sağladı. GitLab 19.2 (Temmuz 2026) zamanlanmış pipeline yürütme politikalarını genel kullanıma sundu ve ekiplerin tek bir politika tanımından birden fazla projede belirli bir kadansta uyumluluk taramaları veya bağımlılık kontrollerini zorunlu kılmasını sağladı.

DevOps mülakatlarında başarılı olmaya hazır mısın?

İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.

Jenkins Deklaratif Pipeline Sözdizimi

Jenkins, depo kök dizininde saklanan bir Jenkinsfile kullanır. 2026'da varsayılan olarak önerilen deklaratif pipeline sözdizimi, yapılandırılmış hata işleme ve net aşama tabanlı düzen sağlar.

Sık sorulan mülakat sorusu: deklaratif ve betiksel pipelinelar arasındaki farkı ve her birinin ne zaman kullanılacağını açıklayın.

groovy
// Jenkinsfile
pipeline {
    agent any

    tools {
        nodejs 'node-22'       // configured in Jenkins Global Tool
    }

    environment {
        CI = 'true'
        DEPLOY_ENV = credentials('deploy-env-secret')
    }

    stages {
        stage('Install') {
            steps {
                sh 'npm ci'
            }
        }

        stage('Lint & Test') {
            parallel {             // parallel execution
                stage('Lint') {
                    steps {
                        sh 'npm run lint'
                    }
                }
                stage('Test') {
                    steps {
                        sh 'npm test'
                    }
                    post {
                        always {
                            junit 'coverage/junit.xml'
                        }
                    }
                }
            }
        }

        stage('Deploy') {
            when {
                branch 'main'
            }
            input {
                message 'Deploy to production?'
            }
            steps {
                sh './deploy.sh'
            }
        }
    }

    post {
        failure {
            mail to: 'team@example.com',
                 subject: "Build failed: ${env.JOB_NAME}",
                 body: "Check ${env.BUILD_URL}"
        }
    }
}

Deklaratif pipelinelar zorunlu pipeline, agent ve stages blokları aracılığıyla yapı zorlar. Aşama içindeki parallel direktifi lint ve testi eşzamanlı çalıştırır. input direktifi, GitHub Actions ortamları ve GitLab manuel kapılarına benzer şekilde manuel onay için yürütmeyi duraklatır. Jenkins, Ocak 2026 itibarıyla Java 21 gerektirir, bu nedenle pipeline ortamlarının bu runtime bağımlılığını hesaba katması gerekir.

Jenkins eklenti ayrıştırma (2.574+)

Jenkins 2.574 (Temmuz 2026) ve 2.577 (Ağustos 2026), JUnit, Mailer, Matrix Authorization, Bouncycastle API ve JavaMail API dahil olmak üzere birkaç eklentiyi varsayılan WAR dosyasından çıkardı. Güncelleme merkezi erişimi olmayan sunucuların yükseltmeden önce bu eklentileri manuel olarak yüklemesi gerekir. JUnit eklentisinin kaldırılması, yukarıda gösterilen junit adımını kullanan pipelineları özellikle etkiler.

CI/CD Platformlarında Secret Yönetimi

Her CI/CD mülakatı secret yönetimi hakkında sorular içerir. Her platform kimlik bilgilerini farklı şekilde işler ve güvenlik sonuçlarını anlamak önemlidir.

GitHub Actions secretları depo, ortam veya organizasyon düzeyinde saklar. Secretlar loglarda otomatik olarak maskelenir, ancak mevcut kapsam belirleme modelinin sınırlamaları vardır. 2026 güvenlik yol haritası, kimlik bilgilerini açık yürütme bağlamlarına bağlayan kapsamlı secretları tanıtarak aşırı geniş erişim riskini ele alır.

GitLab CI, koruma kurallarıyla CI/CD değişkenleri sağlar. Korumalı değişkenler yalnızca korumalı dallarda veya taglerde çalışan pipelinelara enjekte edilir. GitLab 19.0 Secrets Manager'ı tanıttı ve ekiplerin harici vaultlara ihtiyaç duymadan secretları yerel olarak saklamasını ve referans vermesini sağladı. Secretlar projelerle veya gruplarla sınırlıdır ve yalnızca açıkça talep eden joblara erişilebilir.

Jenkins, birden fazla kimlik bilgisi türüyle (kullanıcı adı/şifre, SSH anahtarı, gizli metin, sertifika) Credentials eklentisini kullanır. Deklaratif pipelinelardaki credentials() yardımcısı secretları ortam değişkenlerine bağlar ve Folder düzeyindeki kimlik bilgileri belirli projelere erişimi kapsar.

Kritik mülakat cevabı: pipeline dosyalarına asla secret hardkodlamayın, her zaman platformun yerel secret yönetimini kullanın, kimlik bilgilerini düzenli olarak rotate edin ve uzun ömürlü API anahtarları yerine kısa ömürlü tokenları tercih edin.

Pipeline Optimizasyonu ve Önbellekleme Stratejileri

Yavaş pipelinelar geliştirici verimliliğini doğrudan etkiler. Mülakatçılar, adayların CI/CD sistemlerindeki performans darboğazlarını teşhis edip düzeltip düzeltemeyeceklerini test eder.

Her üç platformda da geçerli olan üç evrensel optimizasyon tekniği bulunmaktadır:

Bağımlılık önbellekleme, her çalışmada paketlerin yeniden indirilmesini önler. GitHub Actions actions/cache veya setup actionlardaki yerleşik önbellek desteğini kullanır. GitLab CI, anahtar stratejisiyle cache kullanır. Jenkins, workspace kalıcılığına veya stash/unstash komutlarına dayanır.

Paralel yürütme, işi birden fazla runner arasında böler. GitHub Actions artık hem paralel jobları (matrix stratejisi) hem de paralel adımları (background/parallel anahtar kelimeleri) destekliyor. GitLab CI parallel:matrix kullanır ve Jenkins parallel direktifini kullanır. Doğru bölme ayrıntı düzeyi projeye bağlıdır: çok fazla paralel job runner başlatma süresini boşa harcar, çok az ise kapasiteyi kullanılmamış bırakır.

Koşullu yürütme, gereksiz aşamaları atlar. Her üç platform da bunu destekler: GitHub Actions if ifadeleriyle, GitLab CI rules ile ve Jenkins when direktifleriyle. İyi tasarlanmış bir pipeline, feature branchlerinde dağıtım aşamalarını atlar ve sadece lint değişikliklerinde tam test paketlerini tetiklemekten kaçınır.

CI/CD Pipeline Güvenliği ve Tedarik Zinciri Koruması

CI/CD sistemlerini hedef alan tedarik zinciri saldırıları 2025'te önemli ölçüde arttı ve tj-actions/changed-files ile diğer popüler GitHub Actions olayları yaşandı. Mülakat soruları artık düzenli olarak güçlendirme stratejilerini sorguluyor.

Tag hijacking saldırılarını önlemek için action sürümlerini taglar yerine belirli commit SHA'larına sabitleyin:

yaml
# .github/workflows/secure.yml
steps:
  # Vulnerable: tag can be moved to malicious commit
  - uses: actions/checkout@v4

  # Secure: pinned to exact commit SHA
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

GitLab CI, tedarik zinciri endişelerini SLSA Level 1 onayıyla CI/CD bileşenleri (GitLab 18.1'den beri mevcut) aracılığıyla ele alır ve yeniden kullanılabilir bileşenlerden pipelinelar oluştururken daha net köken sağlar. Değişmez container tagları (GitLab 18.2), yayından sonra image değişikliğini önler.

Jenkins için Shared Library mekanizması, branch koruması, code review gereksinimleri ve imzalı commitlerle ayrılmış bir depo kullanmalıdır. Avrupa Komisyonu, platformun kurumsal tedarik zincirlerindeki kritik rolünü yansıtarak YesWeHack aracılığıyla bir Jenkins Bug Bounty Programı başlattı.

Mülakat Hazırlığı için Platformlar Arası Karşılaştırma

ÖzellikGitHub ActionsGitLab CIJenkins
Yapılandırma dosyası.github/workflows/*.yml.gitlab-ci.ymlJenkinsfile
Yürütme modeliParalel adımlarla job tabanlıAşama tabanlı (sıralı aşamalar)Aşama tabanlı (esnek)
Runner barındırmaGitHub hosted + self-hostedGitLab.com paylaşımlı + self-hostedYalnızca self-hosted
Secret depolamaDepo/Org/Ortam secretlarıSecrets Manager + CI/CD değişkenleriCredentials eklentisi
Matrix buildlerstrategy.matrixparallel:matrixmatrix (eklenti)
Manuel kapılarenvironment + zorunlu inceleyicilerwhen: manualinput direktifi
MarketplaceMarketplace'te 20.000+ ActionCI/CD Components Catalog1.800+ eklenti
AI özellikleriCopilot for ActionsDuo CI Expert AgentTopluluk eklentileri
FiyatlandırmaAçık depolar için ücretsiz, özel için dakika başına400 CI/CD dakikası ücretsiz, sonra kademeliÜcretsiz (açık kaynak), kendi yönetimli

Bu karşılaştırma tablosu, mülakatlarda en sık test edilen farkları kapsar. Takip sorusu genellikle şu şekildedir: "Yeni bir proje için hangi platformu seçerdiniz ve neden?" Cevap, mevcut araçlara, ekip boyutuna, uyumluluk gereksinimlerine ve organizasyonun yönetilen altyapıyı (GitHub/GitLab) mı yoksa tam kontrolü (Jenkins) mü tercih ettiğine bağlıdır.

Kaynaklar

Bu soruları CI/CD temelleri ve GitHub Actions mülakat modülleriyle pratik yapın veya GitLab CI ve Jenkins özel sorularını keşfedin. Daha geniş DevOps hazırlığı için temel DevOps mülakat soruları rehberi, CI/CD ötesindeki konuların tam kapsamını ele alır.

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

CI/CD Pipeline Mülakatları için Önemli Çıkarımlar

  • GitHub Actions paralel adımları (background, wait-all, parallel) Haziran 2026'da kullanıma sunuldu ve runneri, checkouti ile workspacei paylaşırken tek bir job içinde eşzamanlı yürütmeyi sağladı
  • GitLab 19.x, yerel Secrets Manager'ı (açık beta, Mayıs 2026) tanıttı ve zamanlanmış pipeline yürütme politikalarını genel kullanıma sunarak (Temmuz 2026) harici araçlara bağımlılığı azalttı
  • Jenkins 2.574+, JUnit ve Mailer dahil temel eklentileri WAR dosyasından ayırdı ve güncelleme merkezi erişimi olmayan sunucular için açık kurulum gerektiriyor
  • Secret yönetimi, her üç platformda da en sık test edilen güvenlik konusudur: kapsamlı secretlar, korumalı değişkenler ve kimlik bilgisi rotasyon stratejileri bilgisi gösterilmelidir
  • Önbellekleme, paralelleştirme ve koşullu yürütme yoluyla pipeline optimizasyonu evrensel olarak geçerlidir ve mülakatçılara pratik üretim deneyimi sinyali verir
  • Platform başına en az bir çalışan pipeline yapılandırması hazırlayın ve oyuncak örnekler yerine gerçek dünya kalıplarına odaklanın

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

Günün meydan okuması

DevOps kodundaki hatayı bulabilir misin?

Gerçek bir kod parçası, gizli bir hata, günde bir deneme. Denemek için hesap gerekmez.

Anthony Fillion-Maillet

Yazan:

Anthony Fillion-Maillet

SharpSkill kurucusu

10 yılı aşkın süredir fullstack geliştirici. SharpSkill’i yönetiyor ve burada yayımlanan her şeyden sorumlu.

24 Ağustos 2026 tarihinde güncellendi

Etiketler

#devops
#ci-cd
#github-actions
#gitlab-ci
#jenkins
#interview

Paylaş

İlgili makaleler