0Pricing
Docker & DevOps Fundamentals · Pelajaran

Penerapan Otomatis dengan Jenkins

Buat pipeline CI/CD di Jenkins untuk menerapkan kontainer Docker ke lingkungan tujuan.

Penerapan Otomatis dengan Jenkins adalah pelajaran Docker & DevOps Fundamentals gratis di CoddyKit. Ini adalah pelajaran 3 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 Docker & DevOps Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Pengantar Deployment Otomatis

Selamat datang di pelajaran terakhir tentang CI/CD dengan Jenkins dan Docker! Hari ini, kita akan berfokus pada otomatisasi deployment kontainer Docker Anda.

Deployment otomatis adalah proses merilis perangkat lunak ke lingkungan produksi atau staging tanpa campur tangan manual. Ini merupakan bagian penting dari Pengiriman dan Deployment Berkelanjutan, yang memastikan kecepatan, konsistensi, dan keandalan.

Penerapan Otomatis dengan Jenkins — ilustrasi 1

Mengapa Deployment Perlu Diotomatiskan?

Melakukan deployment aplikasi secara manual dapat berlangsung lambat, rentan terhadap kesalahan, dan tidak konsisten. Otomatisasi mengatasi tantangan ini:

  • Kecepatan: Menerapkan fitur atau perbaikan baru dengan cepat.
  • Keandalan: Mengurangi kesalahan manusia melalui proses yang terstandarisasi.
  • Konsistensi: Memastikan setiap deployment mengikuti langkah yang sama.
  • Efisiensi: Membebaskan pengembang agar berfokus pada penulisan kode, bukan tugas deployment.

Tahapan Pipeline Deployment

Pipeline Jenkins yang umum untuk deployment Docker melibatkan beberapa tahapan utama:

  • Build: Membangun image Docker (dibahas dalam pelajaran sebelumnya).
  • Test: Menjalankan pengujian otomatis terhadap image.
  • Push: Mengirim image ke Registri Docker.
  • Deploy: Mengambil image dari registri dan menjalankannya di server target.
  • Verify: Memastikan deployment baru berada dalam kondisi sehat.

Hari ini kita akan berfokus pada tahapan 'Deploy' dan 'Verify'.

Menyiapkan Lingkungan Target

Sebelum Jenkins dapat melakukan deployment, server target Anda harus siap. Biasanya, hal ini berarti:

  • Docker Terinstal: Server target harus memiliki Docker Engine yang telah diinstal.
  • Akses SSH: Jenkins memerlukan akses Shell aman (SSH) ke server target.
  • Izin Pengguna: Pengguna SSH memerlukan izin untuk menjalankan perintah Docker.

Biasanya, kita mengelola kredensial SSH dengan aman di dalam Jenkins.

Kredensial SSH Jenkins

Untuk terhubung ke server jarak jauh, Jenkins menggunakan kredensial SSH. Biasanya, kredensial ini berupa pasangan nama pengguna SSH dan kunci pribadi yang disimpan dengan aman di pengelola kredensial Jenkins.

Saat mendefinisikan pipeline, Anda dapat memberi tahu Jenkins untuk menggunakan kredensial ini pada tahapan tertentu, sehingga Jenkins dapat menjalankan perintah di server target Anda.

Contoh Skrip Deployment Dasar

Berikut skrip shell sederhana yang dapat dijalankan di server target untuk memperbarui kontainer Docker. Skrip ini menghentikan kontainer lama, menghapusnya, mengambil image baru, lalu menjalankannya.

APP_NAME dan IMAGE_NAME akan diteruskan sebagai variabel lingkungan.

#!/bin/bash

# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true

# Pull the new Docker image
docker pull ${IMAGE_NAME}

# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}

echo "Deployment of ${APP_NAME} complete!"

Mengintegrasikan dengan Pipeline Jenkins

Dalam Jenkinsfile, Anda dapat menggunakan plugin sshPublisher atau langkah sh sederhana dengan penerusan agen SSH untuk menjalankan perintah pada host jarak jauh. Berikut gambaran tahapan deployment menggunakan langkah sh dasar, dengan asumsi SSH telah dikonfigurasi.

agent { label 'remote-deploy-host' } berarti tahapan ini berjalan di server target.

stage('Deploy to Production') {
  agent { label 'remote-deploy-host' } 
  steps {
    withEnv([
      "APP_NAME=my-webapp",
      "IMAGE_NAME=myregistry/my-webapp:latest"
    ]) {
      sh '''
        docker stop ${APP_NAME} || true
        docker rm ${APP_NAME} || true
        docker pull ${IMAGE_NAME}
        docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
        echo "Deployment successful!"
      '''
    }
  }
}

Mencapai Pembaruan Bergulir

Untuk deployment tanpa waktu henti, sekadar menghentikan lalu memulai ulang tidaklah cukup. Biasanya, Anda akan menggunakan strategi seperti:

  • Pembaruan Bergulir: Mengganti kontainer lama dengan yang baru secara bertahap, satu per satu, sambil memastikan layanan tetap tersedia.
  • Deployment Biru/Hijau: Menjalankan versi baru (Hijau) berdampingan dengan versi lama (Biru), lalu mengalihkan lalu lintas.

Jenkins dapat mengatur strategi ini, tetapi alat seperti Docker Swarm atau Kubernetes menyediakan dukungan bawaan untuk strategi yang lebih canggih.

Verifikasi Deployment

Setelah melakukan deployment, sangat penting untuk memverifikasi bahwa aplikasi berjalan dengan benar. Hal ini dapat mencakup:

  • Pemeriksaan Kesehatan: Permintaan HTTP GET sederhana ke titik akhir kesehatan aplikasi.
  • Pemantauan Log: Memeriksa log kontainer untuk menemukan kesalahan.
  • Pengujian Integrasi: Menjalankan serangkaian pengujian singkat terhadap versi yang baru di-deploy.

Pipeline Jenkins Anda dapat menyertakan tahapan 'Verify' untuk mengotomatiskan pemeriksaan ini.

Uji Pengetahuan Anda

Perhatikan cuplikan Jenkinsfile berikut untuk tahapan deployment. Apa tujuan utama dari docker stop ${APP_NAME} || true?

Rangkuman: Deployment Otomatis

Kerja bagus! Anda telah mempelajari cara melakukan deployment otomatis dengan Jenkins dan Docker.

  • Deployment otomatis memastikan rilis yang cepat, andal, dan konsisten.
  • Lingkungan target memerlukan Docker dan akses SSH.
  • Jenkins menggunakan kredensial aman untuk terhubung ke server jarak jauh.
  • Skrip deployment biasanya menghentikan kontainer lama, mengambil image baru, lalu menjalankan kontainer baru.
  • Langkah verifikasi sangat penting untuk memastikan deployment berhasil.

Dengan ini, kursus CI/CD dengan Jenkins & Docker selesai. Teruslah berlatih untuk menguasai alat-alat canggih ini!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penerapan Otomatis dengan Jenkins” gratis?

Ya — teks lengkap “Penerapan Otomatis dengan Jenkins” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Docker & DevOps Fundamentals, upgrade ke CoddyKit PRO. Kursus Docker & DevOps Fundamentals mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penerapan Otomatis dengan Jenkins”?

Buat pipeline CI/CD di Jenkins untuk menerapkan kontainer Docker ke lingkungan tujuan. Kamu berlatih Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

Tidak diperlukan pengalaman sebelumnya. Docker & DevOps Fundamentals 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 3 dari 4.

Berapa lama pelajaran “Penerapan Otomatis dengan Jenkins” 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 Docker & DevOps Fundamentals ini?

Ya. Setiap pelajaran Docker & DevOps Fundamentals 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. Pengantar Jenkins
  2. Membangun Image Docker dengan Jenkins
  3. Penerapan Otomatis dengan Jenkins
  4. Pipeline Jenkins sebagai Kode dengan Jenkinsfile
← Kembali ke Docker & DevOps Fundamentals