Pertanyaan Wawancara CI/CD Pipeline: GitHub Actions, GitLab CI, dan Jenkins di Tahun 2026

Persiapkan pertanyaan wawancara CI/CD pipeline yang mencakup GitHub Actions, GitLab CI, dan Jenkins. Termasuk contoh kode praktis, pola konfigurasi pipeline, dan praktik terbaik keamanan untuk 2026.

Pertanyaan Wawancara CI/CD Pipeline: GitHub Actions, GitLab CI, dan Jenkins di Tahun 2026

Pertanyaan wawancara seputar CI/CD pipeline menjadi salah satu topik paling sering muncul dalam proses rekrutmen DevOps sepanjang tahun 2026. Dengan GitHub Actions yang kini memproses lebih dari 71 juta job per hari dan meluncurkan eksekusi step secara paralel pada Juni 2026, GitLab CI yang mencapai versi 19 dengan Secrets Manager native, serta Jenkins yang masih mempertahankan tingkat adopsi sebesar 28%, pewawancara mengharapkan kandidat mampu menunjukkan kemampuan praktis di ketiga platform tersebut.

Fokus utama pewawancara

Sebagian besar pertanyaan wawancara CI/CD termasuk dalam tiga kategori: desain pipeline (cara menyusun stage dan job), keamanan (manajemen secret dan penguatan supply chain), serta troubleshooting (debugging build yang gagal dan optimasi pipeline yang lambat). Kandidat sebaiknya mempersiapkan setidaknya satu contoh konfigurasi pipeline secara langsung.

Struktur Workflow dan Trigger pada GitHub Actions

GitHub Actions mengorganisasi otomasi melalui workflow, job, dan step. Sebuah workflow merupakan file YAML yang disimpan di direktori .github/workflows/ dan mendefinisikan kapan serta bagaimana otomasi dijalankan. Setiap workflow dapat memiliki satu atau lebih job, dan setiap job berjalan pada runner yang terpisah.

Pertanyaan wawancara yang umum meminta kandidat menjelaskan hubungan antara trigger on, dependensi antar-job, dan keyword needs.

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

Workflow di atas mendemonstrasikan tiga konsep penting: keyword needs membentuk dependency graph antar-job, strategi matrix memungkinkan pengujian paralel di berbagai versi Node.js, dan keyword environment menempatkan deployment di balik persetujuan manual.

Parallel Steps pada GitHub Actions

GitHub Actions meluncurkan eksekusi step secara paralel pada 25 Juni 2026, menjawab salah satu fitur yang paling banyak diminta. Sebelumnya, semua step dalam sebuah job berjalan secara sekuensial. Fitur baru ini memperkenalkan empat keyword yang memungkinkan eksekusi konkuren dalam satu job.

Perbedaan wawancara: parallel jobs vs parallel steps

Parallel jobs menggunakan runner terpisah dengan filesystem yang terisolasi. Parallel steps berbagi satu runner, checkout, environment, dan workspace. Pewawancara menguji apakah kandidat memahami perbedaan ini, karena berpengaruh pada caching, artifact sharing, dan pemanfaatan resource.

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

Keyword background: true memulai step secara asinkron dan langsung melanjutkan ke step berikutnya. Keyword wait-all menjeda eksekusi sampai semua background step selesai. Keyword parallel menyediakan shorthand yang menjalankan beberapa step secara konkuren dan menunggu semuanya selesai sebelum melanjutkan.

Dua keyword tambahan juga tersedia: wait menargetkan background step tertentu berdasarkan nama, dan cancel menghentikan background step secara graceful ketika tidak lagi diperlukan (berguna untuk menghentikan long-running service).

Konfigurasi Pipeline GitLab CI dengan Stages

GitLab CI menggunakan file .gitlab-ci.yml pada root repository. Berbeda dengan GitHub Actions di mana job berjalan secara independen secara default, GitLab CI mengorganisasi job ke dalam stages yang dieksekusi secara berurutan, sementara job dalam stage yang sama berjalan secara paralel.

Pewawancara sering meminta kandidat untuk mengonversi workflow GitHub Actions menjadi pipeline GitLab CI, atau sebaliknya.

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

Perbedaan utama dengan GitHub Actions: stages mengatur urutan eksekusi secara global, keyword parallel:matrix menangani matrix build, dan artifacts:reports:junit mengintegrasikan hasil pengujian langsung ke tampilan merge request.

GitLab 19.0 (Mei 2026) memperkenalkan Secrets Manager dalam open beta, menyediakan penyimpanan secret native tanpa layanan eksternal seperti HashiCorp Vault. GitLab 19.2 (Juli 2026) menjadikan kebijakan eksekusi pipeline terjadwal tersedia secara umum, memungkinkan tim menerapkan compliance scan atau dependency check pada jadwal tetap di beberapa proyek dari satu definisi kebijakan.

Siap menguasai wawancara DevOps Anda?

Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.

Sintaks Jenkins Declarative Pipeline

Jenkins menggunakan Jenkinsfile yang disimpan di root repository. Sintaks declarative pipeline, yang direkomendasikan sebagai standar di tahun 2026, menyediakan penanganan error yang terstruktur dan tata letak berbasis stage yang jelas.

Pertanyaan wawancara yang sering muncul: jelaskan perbedaan antara declarative dan scripted pipeline, serta kapan masing-masing digunakan.

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

Declarative pipeline menerapkan struktur melalui blok wajib pipeline, agent, dan stages. Direktif parallel di dalam stage menjalankan lint dan test secara bersamaan. Direktif input menjeda eksekusi untuk persetujuan manual, serupa dengan environment GitHub Actions dan manual gate GitLab. Jenkins membutuhkan Java 21 sejak Januari 2026, sehingga environment pipeline harus memperhitungkan dependensi runtime ini.

Unbundling plugin Jenkins (2.574+)

Jenkins 2.574 (Juli 2026) dan 2.577 (Agustus 2026) menghapus beberapa plugin dari file WAR default, termasuk JUnit, Mailer, Matrix Authorization, Bouncycastle API, dan JavaMail API. Instance tanpa akses update center harus menginstal plugin ini secara manual sebelum upgrade. Penghapusan plugin JUnit khususnya mempengaruhi pipeline yang menggunakan step junit seperti yang ditampilkan di atas.

Manajemen Secret di Berbagai Platform CI/CD

Setiap wawancara CI/CD pasti mencakup pertanyaan tentang manajemen secret. Setiap platform menangani credential dengan cara berbeda, dan pemahaman terhadap implikasi keamanannya sangatlah penting.

GitHub Actions menyimpan secret pada level repository, environment, atau organization. Secret secara otomatis disembunyikan dalam log, namun model scoping saat ini memiliki keterbatasan. Roadmap keamanan 2026 memperkenalkan scoped secret yang mengikat credential ke konteks eksekusi tertentu, mengatasi risiko akses yang terlalu luas.

GitLab CI menyediakan CI/CD variable dengan aturan proteksi. Variable yang dilindungi hanya diinjeksi ke dalam pipeline yang berjalan pada branch atau tag yang dilindungi. GitLab 19.0 memperkenalkan Secrets Manager, memungkinkan tim menyimpan dan mereferensikan secret secara native tanpa vault eksternal. Secret di-scope ke proyek atau grup dan hanya dapat diakses oleh job yang secara eksplisit memintanya.

Jenkins menggunakan plugin Credentials dengan berbagai tipe credential (username/password, SSH key, secret text, sertifikat). Helper credentials() dalam declarative pipeline mengikat secret ke variabel environment, dan credential tingkat Folder membatasi akses ke proyek tertentu.

Jawaban wawancara yang krusial: jangan pernah meng-hardcode secret dalam file pipeline, selalu gunakan manajemen secret bawaan platform, rotasi credential secara berkala, dan utamakan token berjangka pendek dibandingkan API key berjangka panjang.

Optimasi Pipeline dan Strategi Caching

Pipeline yang lambat berdampak langsung pada produktivitas developer. Pewawancara menguji apakah kandidat mampu mendiagnosis dan memperbaiki bottleneck performa dalam sistem CI/CD.

Tiga teknik optimasi universal berlaku di ketiga platform:

Dependency caching menghindari pengunduhan ulang package pada setiap run. GitHub Actions menggunakan actions/cache atau dukungan cache bawaan pada setup action. GitLab CI menggunakan cache dengan strategi key. Jenkins mengandalkan persistensi workspace atau perintah stash/unstash.

Eksekusi paralel membagi pekerjaan ke beberapa runner. GitHub Actions kini mendukung parallel jobs (strategi matrix) dan parallel steps (keyword background/parallel). GitLab CI menggunakan parallel:matrix, dan Jenkins menggunakan direktif parallel. Granularitas pembagian yang tepat bergantung pada proyek: terlalu banyak job paralel membuang waktu startup runner, terlalu sedikit membiarkan kapasitas tidak terpakai.

Eksekusi kondisional melewati stage yang tidak diperlukan. Ketiga platform mendukung hal ini: GitHub Actions dengan ekspresi if, GitLab CI dengan rules, dan Jenkins dengan direktif when. Pipeline yang dirancang dengan baik melewati stage deployment pada feature branch dan melewati perubahan khusus lint agar tidak memicu seluruh test suite.

Keamanan Pipeline CI/CD dan Perlindungan Supply Chain

Serangan supply chain yang menargetkan sistem CI/CD meningkat secara signifikan pada tahun 2025, dengan insiden yang memengaruhi tj-actions/changed-files dan GitHub Actions populer lainnya. Pertanyaan wawancara kini secara rutin menguji kandidat tentang strategi penguatan keamanan.

Pin versi action ke commit SHA tertentu, bukan tag, untuk mencegah serangan tag-hijacking:

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 menangani masalah supply chain melalui CI/CD components dengan attestasi SLSA Level 1 (tersedia sejak GitLab 18.1), memberikan provenance yang lebih jelas saat merangkai pipeline dari komponen yang dapat digunakan kembali. Tag container yang immutable (GitLab 18.2) mencegah penggantian image setelah dipublikasikan.

Untuk Jenkins, mekanisme Shared Library sebaiknya menggunakan repository khusus dengan branch protection, persyaratan code review, dan signed commit. Komisi Eropa meluncurkan Jenkins Bug Bounty Program melalui YesWeHack, mencerminkan peran kritis platform ini dalam supply chain enterprise.

Perbandingan Lintas Platform untuk Persiapan Wawancara

FiturGitHub ActionsGitLab CIJenkins
File konfigurasi.github/workflows/*.yml.gitlab-ci.ymlJenkinsfile
Model eksekusiBerbasis job dengan parallel stepsBerbasis stage (stage berurutan)Berbasis stage (fleksibel)
Hosting runnerGitHub-hosted + self-hostedGitLab.com shared + self-hostedSelf-hosted saja
Penyimpanan secretSecret repository/org/environmentSecrets Manager + CI/CD variablePlugin Credentials
Matrix buildstrategy.matrixparallel:matrixmatrix (plugin)
Gerbang manualenvironment + required reviewerswhen: manualDirektif input
Marketplace20.000+ Actions di MarketplaceCI/CD Components Catalog1.800+ plugin
Fitur AICopilot for ActionsDuo CI Expert AgentPlugin komunitas
HargaGratis untuk repo publik, per-menit untuk privat400 menit CI/CD gratis, lalu bertingkatGratis (open source), self-managed

Tabel perbandingan ini mencakup perbedaan yang paling sering diujikan dalam wawancara. Pertanyaan lanjutan yang biasanya muncul: "Platform mana yang akan dipilih untuk proyek baru, dan mengapa?" Jawabannya bergantung pada tooling yang sudah ada, ukuran tim, persyaratan compliance, dan apakah organisasi lebih memilih infrastruktur terkelola (GitHub/GitLab) atau kontrol penuh (Jenkins).

Sumber

Latih pertanyaan-pertanyaan ini secara langsung dengan modul wawancara CI/CD fundamentals dan GitHub Actions, atau pelajari lebih dalam pertanyaan khusus GitLab CI dan Jenkins. Untuk persiapan DevOps yang lebih luas, panduan pertanyaan wawancara DevOps esensial mencakup cakupan topik lengkap di luar CI/CD.

Mulai berlatih!

Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.

Poin Penting untuk Wawancara CI/CD Pipeline

  • GitHub Actions parallel steps (background, wait-all, parallel) diluncurkan pada Juni 2026, memungkinkan eksekusi konkuren dalam satu job dengan berbagi runner, checkout, dan workspace
  • GitLab 19.x memperkenalkan Secrets Manager native (open beta, Mei 2026) dan menjadikan kebijakan eksekusi pipeline terjadwal tersedia secara umum (Juli 2026), mengurangi ketergantungan pada tooling eksternal
  • Jenkins 2.574+ melakukan unbundling plugin inti termasuk JUnit dan Mailer dari file WAR, memerlukan instalasi eksplisit untuk instance tanpa akses update center
  • Manajemen secret adalah topik keamanan yang paling sering diujikan di ketiga platform: tunjukkan pengetahuan tentang scoped secret, protected variable, dan strategi rotasi credential
  • Optimasi pipeline melalui caching, paralelisasi, dan eksekusi kondisional berlaku secara universal dan menandakan pengalaman produksi praktis kepada pewawancara
  • Persiapkan setidaknya satu konfigurasi pipeline yang berfungsi per platform, dengan fokus pada pola dunia nyata daripada contoh sederhana

Mulai berlatih!

Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.

Tantangan harian

Bisakah kamu menemukan bug di DevOps?

Satu potongan kode nyata, satu bug tersembunyi, satu percobaan per hari. Tanpa akun untuk mencoba.

Anthony Fillion-Maillet

Ditulis oleh

Anthony Fillion-Maillet

Pendiri SharpSkill

Developer fullstack selama lebih dari 10 tahun. Ia menjalankan SharpSkill dan bertanggung jawab atas semua yang diterbitkan di sini.

Diperbarui 24 Agustus 2026

Tag

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

Bagikan

Artikel terkait