GNU/Linux >> Belajar Linux >  >> Ubuntu

Apa itu Jenkins?

Pendahuluan

Jenkins adalah platform untuk menciptakan lingkungan Continuous Integration/Continuous Delivery (CI/CD). Sistem ini menawarkan berbagai alat, bahasa, dan tugas otomatisasi untuk membantu pembuatan pipeline saat mengembangkan dan menerapkan program.

Meskipun Jenkins memerlukan beberapa langkah otomatisasi skrip, program ini menyediakan cara yang cepat dan kuat untuk mensistematisasikan siklus hidup pengembangan perangkat lunak.

Lanjutkan membaca untuk mempelajari lebih lanjut tentang Jenkins dan mengapa Jenkins menjadi salah satu alat DevOps terkemuka saat ini.

Definisi Jenkins

Jenkins adalah server otomatisasi yang ditulis dalam Java yang membantu membangun, menguji, dan menyebarkan perangkat lunak secara berkelanjutan. Sistem sumber terbuka saat ini merupakan salah satu server otomatisasi terkemuka.

Secara umum, Jenkins memberikan dukungan untuk:

  • Berbagai alat kontrol versi seperti Git.
  • Membangun proyek berbasis Ant dan Apache Maven.
  • Menjalankan skrip Bash dan file batch Windows.

Sejarah Singkat Jenkins

Proyek Jenkins dimulai pada tahun 2004 dengan nama Hudson. Pengembang Kohsuke Kawaguchi, yang bekerja di sistem Sun, ingin membuat metode untuk melakukan integrasi berkelanjutan. Idenya adalah untuk menguji kode sebelum berkomitmen untuk menghindari kerusakan build.

Idenya terbukti berhasil dan dengan cepat menyebar ke seluruh timnya. Akibatnya, Kohsuke Kawaguch membuat proyek Jenkins dan membuat program tersebut menjadi open-source. Penggunaannya tersebar di seluruh dunia dengan perkiraan saat ini 1,6 juta pengguna .

Untuk Apa Jenkins Digunakan?

Meskipun Jenkins dimulai sebagai alat integrasi berkelanjutan, penggunaan saat ini mencakup keseluruhan jalur pengiriman perangkat lunak, termasuk penerapan.

Program ini menjalankan wadah dan plugin web, seperti Apache Tomcat, dan membantu mengelola siklus hidup dan permintaan hak akses. Lebih dari 1700 plugin untuk Jenkins memperkaya integrasi perangkat lunak, otomatisasi, dan proses pengiriman serta menyediakan lingkungan yang dapat disesuaikan.

Terminologi Inti Jenkins

Jenkins mencakup berbagai terminologi DevOps di seluruh pilihan pembuatan dan manajemen pipeline yang berbeda. Di bawah ini adalah daftar dengan beberapa istilah umum dan definisinya.

Jalur Pipa Jenkins

Pipa Jenkins adalah model buatan pengguna untuk pipa pengiriman berkelanjutan. Pipeline menggabungkan berbagai plugin yang membantu menentukan langkah-langkah prosedur dari kontrol versi hingga pengguna.

Semua perubahan dan komitmen perangkat lunak melalui proses yang rumit sebelum rilis. Metode ini mencakup tiga langkah :

  • Bangunan otomatis .
  • Pengujian multi-langkah .
  • Menerapkan prosedur.

Di Jenkins, ada dua cara untuk membuat pipeline :

  1. Tentukan Pipeline melalui antarmuka pengguna secara langsung.
  2. Gunakan Pipa sebagai Kode metodologi dan buat Jenkinsfile . File teks menggunakan sintaks yang kompatibel dengan Groovy untuk menentukan proses pipeline.

Jenkinsfile sintaksnya adalah deklaratif atau berskrip .

Sebuah deklaratif dasar Jenkinsfile pipa lebih mudah dipahami. Contohnya seperti berikut ini:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building…'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing…'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Kode memiliki elemen berikut:

  • Pipa pipeline { } block memanggil plugin Jenkins Pipeline.
  • Kata kunci agent mendefinisikan di mana Pipeline berjalan, di mana any menunjukkan Pipeline berjalan pada semua agen yang tersedia.
  • stages { } blok mewakili urutan di mana Pipeline berjalan.
  • Kode ini berisi tiga tahap:Build , Test dan Deploy , masing-masing dengan steps { } .
  • steps { } beri tahu Jenkins apa yang harus dilakukan pada titik tertentu.

berskrip setara dengan Jenkinsfile terlihat seperti berikut:

node {  
    stage('Build') { 
        echo 'Building…'
    }
    stage('Test') { 
        echo 'Testing…'
    }
    stage('Deploy') { 
        echo 'Deploying…'
    }
}

Memeriksa Jenkinsfile ke alat kontrol sumber memungkinkan seluruh tim untuk mengedit, meninjau, dan menyesuaikan langkah-langkah dalam alur pengiriman.

Integrasi Berkelanjutan

Integrasi berkelanjutan adalah prosedur pengembangan perangkat lunak di mana setiap perubahan yang diterapkan meminta pengujian build otomatis. Proses ini memastikan kode terintegrasi ke dalam bentuk yang dapat dieksekusi yang berfungsi tanpa bug.

Integrasi berkelanjutan adalah aspek penting dalam lingkungan dengan banyak pengembang. Setiap pengembang membuat perubahan pada kode, dan setiap perubahan memiliki potensi masalah.

Alat integrasi berkelanjutan seperti Jenkins membantu menguji, mengidentifikasi, dan mengatasi masalah sebelum menerapkan perubahan pada produksi.

Pengujian Otomatis

Pengujian otomatis untuk eksekusi uji prasetel Jenkins dan menyimpan hasilnya. Idenya adalah untuk memastikan kode berfungsi dalam berbagai skenario. Membuat pengujian otomatis untuk lingkungan yang berbeda, seperti beberapa versi Java atau sistem operasi, membantu memperkirakan dan mencegah masalah pada rilis selanjutnya.

Fase pengujian otomatis disematkan ke dalam pipa CI di Jenkins dengan mulus. Berbagai plugin membantu menjalankan pengujian unit, integrasi, fungsional, dan regresi serta menyimpan hasilnya untuk dilihat dan dianalisis nanti.

Pengontrol (Sebelumnya Master)

Arsitektur Jenkins melayani build terdistribusi. Satu node adalah unit kontrol pusat dan pengatur, yang dikenal sebagai pengontrol.

Controller adalah proses sentral di mana konfigurasi Jenkins berada. Sebelumnya dikenal sebagai Master, pengontrol Jenkins mengelola agen dan koneksinya, membantu memuat plugin, dan mengoordinasikan alur proyek.

Agen (Sebelumnya Budak)

Agen terhubung ke pengontrol Jenkins untuk menjalankan proyek. Agen memerlukan penginstalan Java pada mesin fisik atau virtual, seperti instance Bare Metal Cloud, image Docker, atau cluster Kubernetes.

Agen di Jenkins membantu memberikan kinerja yang lebih baik dengan membangun penyeimbangan beban dan menciptakan lingkungan yang aman, terpisah dari pengontrol.

Simpul

Node adalah istilah umum untuk agen dan pengontrol, terlepas dari peran sebenarnya mereka. Mesin apa pun dengan kemampuan untuk membangun proyek dan saluran pipa adalah simpul Jenkins, dan pengontrolnya dikenal sebagai node bawaan .

Node bawaan memantau kondisi semua node yang terpasang dan menjadikannya offline jika ada nilai yang melebihi ambang batas.

Proyek (Sebelumnya Pekerjaan)

Proyek Jenkins, atau pekerjaan, adalah prosedur otomatisasi buatan pengguna dengan tujuan tertentu. Jenkins menawarkan berbagai pekerjaan build secara default, dan lebih banyak lagi tersedia melalui plugin.

Di bawah ini adalah tabel dengan deskripsi singkat tentang beberapa jenis proyek.

Proyek Deskripsi
Gaya Bebas Tugas pembangunan tak terbatas dengan banyak operasi.
Pipa Proyek multi-langkah dengan beberapa agen pembangunan.
Multi-konfigurasi Proyek dengan beberapa lingkungan pengujian dan konfigurasi berbeda.
Pipa multi-cabang Proyek yang membuat sekumpulan proyek pipeline menurut cabang dalam sistem manajemen kontrol sumber.

Bangun

Di Jenkins, build mewakili eksekusi tunggal pekerjaan dengan konfigurasi saat ini. Build membuat perangkat lunak dari berbagai sumber yang ditentukan dalam prosedur proyek. Bergantung pada proyeknya, mekanisme pembangunan meliputi:

  • Mengumpulkan dependensi.
  • Mengkompilasi atau mengubah kode.
  • Mengarsipkan materi.
  • Pengujian.
  • Menerapkan ke lingkungan yang berbeda.

Oleh karena itu, build adalah satu proses dari proyek yang ditentukan dengan berbagai langkah.

Bagaimana Jenkins Bekerja?

Jenkins mengambil langkah-langkah pengembangan dari integrasi ke penerapan , mengotomatiskan setiap langkah.

Setiap kali pengembang memublikasikan komit ke repositori kode sumber, Jenkins memicu build. Biasanya, komit memposting ke cabang pengembangan.

Langkah-langkah build termasuk menguji kode, memastikan build tidak rusak. Jika terjadi kesalahan, Jenkins memberi tahu pengembang untuk bertindak sesuai dengan itu. Jika semua tes lulus, Pipeline melanjutkan ke langkah integrasi.

Integrasi membutuhkan waktu lebih lama dan memerlukan pengujian kode terhadap beberapa konfigurasi sistem. Jenkins melakukan tes integrasi paralel pada node yang berbeda, mengurangi waktu yang dibutuhkan untuk mencoba dan mengintegrasikan kode.

Lebih jauh ke Pipeline, Jenkins mengotomatiskan pengujian penerimaan pengguna, yang merupakan persyaratan sebelum penerapan. Jika semua tes lulus, kode bergabung ke cabang utama, membuat kode tersedia untuk pengguna.

Fitur Jenkins

Fitur utama Jenkins adalah:

  • Pemasangan mudah . Program berbasis java bersifat otonom dan platform agnostik.
  • Langsung untuk mengonfigurasi . Antarmuka web yang mudah digunakan membuat konfigurasi menjadi proses yang mudah. Untuk penyiapan pertama kali, lihat tutorial Jenkins kami.
  • Dapat disesuaikan dengan ketersediaan plugin yang besar . Saat ini, ada lebih dari 1700 plugin yang tersedia untuk memperluas fungsionalitas Jenkins. Untuk fitur yang hilang, impor plugin eksternal atau custom-made tambahan.
  • Sumber terbuka . Jenkins sepenuhnya open-source dan gratis untuk digunakan, menjadikannya teknologi yang murah untuk diterapkan.

Manfaat dan Kekurangan Jenkins

Jenkins hadir dengan kelebihan dan kekurangan tertentu. Di bawah ini adalah ikhtisar terperinci tentang pro dan kontra bekerja dengan Jenkins.

Manfaat Jenkins

Beberapa manfaat yang menyertai Jenkins adalah:

  • Siklus pengembangan lebih cepat . Membangun dan menguji setiap komit menciptakan lingkungan yang serba cepat untuk menyingkirkan bug. Fitur dan rilis baru menjangkau pengguna akhir lebih cepat dan dengan lebih sedikit kesalahan.
  • Lebih sedikit waktu untuk mengintegrasikan kode . Sebelum Jenkins, integrasi kode adalah proses manual, dan kode debug rumit. Mencapai versi yang berfungsi akan membutuhkan melalui berbagai komit dan menganalisis masalah. Saat menggunakan Jenkins, pengintegrasian setelah setiap komit memastikan bahwa fungsionalitas program selalu tersedia dan beroperasi.
  • Masukan cepat untuk pengembang . Setiap kali build rusak, pengembang tetap mendapat informasi. Sistem umpan balik membantu tim pengembang dengan cepat mengatasi masalah alih-alih men-debug banyak komit.
  • Alur kerja saluran otomatis . Pengujian otomatis untuk setiap komit terintegrasi ke dalam Pipeline secara langsung.

Kekurangan Jenkins

Berikut adalah beberapa kerugian saat bekerja dengan Jenkins:

  • Mahal . Meskipun Jenkins gratis, program ini membutuhkan infrastruktur yang stabil dan kuat.
  • Perawatan konstan . Mempertahankan server Jenkins memakan waktu. Menambahkan tahapan ke pipeline, meningkatkan server dengan fitur baru, dan melacak pembaruan plugin memerlukan administrator untuk memulai ulang dan mengelola server secara manual.
  • Berpusat pada pengembang . Platform ini didorong oleh fitur dan tidak terlalu ramah pengguna untuk non-pengembang. Beberapa pengalaman developer harus dimiliki saat bekerja dengan Jenkins.

Cara Menginstal Jenkins

Jenkins bekerja pada berbagai sistem operasi dan lingkungan. Instalasi tersedia dalam berbagai bentuk, seperti:

  • Paket penginstal untuk sistem operasi utama, seperti Windows, Ubuntu, Debian, CentOS, dll.
  • File arsip PERANG.
  • Gambar Docker.
  • Di kluster Kubernetes.
  • Pembuatan kode sumber.

Jenkins berjalan sebagai paket yang berdiri sendiri atau pada server aplikasi Java. Antarmuka pengguna berbasis web dan dilengkapi dengan REST API dalam kedua kasus tersebut.


Ubuntu
  1. Apa itu Web3.0?

  2. Apa itu JingOS Linux?

  3. Cara menggunakan perintah sumber dalam skrip pipa Jenkins

  1. Apa itu Bare Metal Cloud

  2. Apa itu Spark DataFrame?

  3. Apa itu Basis Data Relasional?

  1. Apa Itu Git?

  2. Apa itu Repositori Git?

  3. Apa itu Cloud-Init?