Dalam artikel ini kita akan melihat langkah-langkah untuk mengimplementasikan pipeline CI/CD sederhana menggunakan Jenkins. Kami akan menggunakan contoh kode Java dan kami akan menerapkan kode itu ke Server Web Apache Tomcat sebagai file .war. Kami akan menggunakan Maven sebagai alat build. Anda dapat menemukan contoh kode Java di Github Repository(repo) saya. Sebelum melanjutkan, mari kita pahami dasar-dasar alat dan teknologi yang akan kita gunakan dalam menyiapkan pipeline CI/CD.
- Contoh EC2: Instance EC2 adalah Mesin Virtual (VM) di AWS Cloud. Kami akan men-deploy Apache Tomcat dan Jenkins ke instance EC2.
- Apache Tomcat: Apache Tomcat adalah Server Web sumber terbuka. Kami akan menerapkan contoh Aplikasi Java kami ke Apache Tomcat sebagai file .war.
- Github: Github adalah platform hosting Kode. Ini pada dasarnya adalah Sistem Manajemen Kontrol Versi/Sumber. Kami akan memasukkan contoh kode Java ke Github.
- Webhook Github: Github Webhook digunakan untuk membangun dan mengatur integrasi. Kami akan membuat webhook yang akan memicu Pekerjaan Jenkins setiap kali komit baru dilakukan di repo Github.
- Jenkins: Jenkins adalah alat otomatisasi sumber terbuka gratis. Kami akan menulis tugas di Jenkins yang akan membuat dan menyebarkan file .war dari contoh kode aplikasi Java ke server Apache Tomcat.
- Maven : Maven adalah alat otomatisasi build yang digunakan terutama untuk membuat project Java.
Prasyarat
- Akun AWS (Buat jika Anda belum memilikinya)
- Pemahaman dasar tentang Github.
- Pemahaman dasar tentang Jenkins.
- Pemahaman dasar tentang Server dan Perintah Linux
Apa yang akan kita lakukan?
- Buat Instance EC2
- Instal Java
- Instal Jenkins
- Siapkan Apache Tomcat
- Buka Repo Github saya
- Mengakses dan Mengonfigurasi Jenkins
- Menyiapkan Pekerjaan Jenkins untuk penerapan .war
- Siapkan Webhook di Repo Github
- Uji Pembuatan Otomatis di setiap Komit
Buat VM atau Instans EC2
Untuk membuat instance EC2, Anda dapat merujuk ke dokumen yang tersedia di sini.
Di sini, saya telah membuat Instans EC2 baru di akun AWS saya. Instance ini memiliki OS Ubuntu 18.
Anda dapat melihat bahwa instance sedang berjalan. Saya akan menggunakan instance ini untuk menginstal Java atau dependensi dan Apache Tomcat dan Jenkins juga.
Instal Java
Untuk menginstal Java ke sistem Ubuntu 18 Anda, Anda dapat menggunakan perintah berikut. Perintah berikut akan menginstal Java 8. Setelah diinstal, Anda bahkan dapat memeriksa versinya.
sudo apt-get update
sudo apt install openjdk-8-jdk
java -version
Instal Jenkins
Gunakan perintah berikut untuk menginstal Jenkins ke instans Anda.
sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
Setelah Anda menginstal Jenkins, gunakan perintah berikut untuk memulai dan memeriksa statusnya.
sudo systemctl start jenkins #Start Jenkins
service jenkins status #Check Jenkins Status
Pada tangkapan layar berikut, Anda dapat melihat bahwa layanan Jenkins telah dimulai. Layanan Jenkins ini telah dimulai pada port 8080.
Siapkan Apache Tomcat
Instal Apache Tomcat
Sebelum mendownload dan menginstal Apache Tomcat, mari kita buat direktori untuk mendownload paket Apache Tomcat.
Gunakan perintah berikut untuk membuat direktori di /opt
cd /opt/
sudo mkdir Innovecture
Ubah kepemilikan direktori menggunakan perintah berikut. Kami mengubah kepemilikan menjadi pengguna Ubuntu dan mengelompokkan Ubuntu sehingga pengguna Ubuntu dapat memulai layanan Apache Tomcat dan kami tidak perlu menggunakan hak root atau pengguna atau sudo.
sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/
Unduh dan ekstrak Apache Tomcat menggunakan perintah berikut. Jika Anda ingin menggunakan Apache Tomcat versi lain, Anda dapat mengunduh dan mengekstrak.
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0 .31.tar.gz
cd apache-Tomcat-9.0.31/
Buat konfigurasi yang diperlukan di Apache Tomcat menggunakan perintah berikut. Lihat screenshot berikut untuk konfigurasi yang perlu dilakukan. Dalam konfigurasi berikut kami menetapkan pengguna dan kata sandi yang dapat digunakan untuk masuk ke aplikasi manajer Apache Tomcat. Catat nama pengguna dan sandi ini karena kami akan memerlukan kredensial ini nanti.
Konfigurasi Apache Tomcat
vim conf/Tomcat-users.xml
Lihat screenshot berikut dan pastikan context.xml Anda memiliki konfigurasi yang sama.
vim webapps/manager/META-INF/context.xml
Di server.xml di bawah direktori conf, ubah port tempat Apache Tomcat berjalan, mis. ubah port 8080 menjadi 8090 karena layanan Jenkins kami sudah berjalan pada port 8080.
vim conf/server.xml
Ubah juga konfigurasi localhost di file server.xml dengan IP server agar server Anda dapat diakses dari Internet.
Mulai Apache Tomcat
Gunakan perintah berikut untuk memulai layanan Apache Tomcat.
bin/startup.sh
Pada tangkapan layar berikut Anda dapat melihat bahwa layanan Apache Tomcat berjalan pada port 8090 Dan pada port 8080 layanan Jenkins berjalan. Untuk memeriksa sistem Anda, gunakan perintah berikut.
netstat -tulpn
Masuk ke Aplikasi Tomcat Manager
Untuk melihat apakah kita dapat masuk ke aplikasi pengelola Apache Tomcat menggunakan kredensial yang telah kita tentukan sebelumnya, tekan URL Apache Tomcat http://IP-of -Apache-Tomcat:8090/manager. Anda akan diminta dengan layar kredensial, cukup masukkan nama pengguna 'tomcat-manager' dan sandi yang telah kami konfigurasikan di conf/tomcat-users.xml.
Setelah Anda berhasil login, Anda akan melihat layar sebagai berikut
Fork Github Repo
Anda dapat melakukan fork atau clone repo saya yang disebutkan di bawah ini. Repo ini berisi contoh kode Java, Anda dapat menggunakan kode ini atau jika Anda memiliki repositori sendiri, Anda juga dapat menggunakannya.
URL repo: https://github.com/shivalkarrahul/Innovecture.git
Mengakses dan Mengonfigurasi Jenkins
Untuk mengakses Jenkins, tekan URL http://IP-of-Jenkins:8080.
Ikuti layar yang Anda dapatkan untuk Membuka Kunci Jenkin dan Menginstal Plugin yang disarankan
Setelah Anda membuka kunci Jenkin dan menginstal plugin yang disarankan, Anda akan melihat layar berikut.
Anda harus memasukkan nama pengguna dan sandi yang perlu dikonfigurasi dan klik simpan dan lanjutkan.
Instal Plugin Otentikasi Github tanpa memulai ulang
Setelah Anda berhasil masuk, buka Kelola Jenkins> Kelola Plugin. Di bawah Tersedia tab Telusuri git . Pilih plugin "GithubAuthentication" dan klik instal tanpa memulai ulang.
Instal Plugin Integrasi Maven tanpa memulai ulang
Dengan cara yang sama, instal plugin integrasi pakar dan instal tanpa memulai ulang
Instal Terapkan ke Plugin penampung tanpa memulai ulang
Untuk mengotomatiskan penerapan file .war ke Apache Tomcat, kita memerlukan plugin "Deploy to container". Instal plugin "Deploy to container" dengan cara yang sama seperti saat kita menginstal git dan maven plug-in.
Menyiapkan Pekerjaan Jenkins untuk penerapan .war
Sekarang saatnya membuat Job gaya bebas. Buka dasbor utama dan klik buat pekerjaan. Pilih pekerjaan gaya bebas dan lanjutkan lebih jauh.
Tambahkan Github Repo di bawah Tab Umum
Di bawah tab umum, centang kotak "Proyek Github" dan tambahkan URL repo kode sumber Anda atau URL repo yang Anda pisahkan dari repo saya.
Tambahkan URL Github di bawah Manajemen Kode Sumber
Di bawah tab pengelolaan kode sumber, klik tombol radio "Git" dan tambahkan URL repositori seperti yang ditunjukkan di bawah ini. Karena repositori saya tidak bersifat pribadi dan bersifat publik, saya tidak perlu menambahkan kredensial.
Pilih Github pemicu kait
Pilih “Pemicu kait GitHub untuk jajak pendapat GitSCM” di bawah tab Pemicu Build
Tambahkan Langkah Pembuatan
Di bawah lingkungan build, klik tambahkan langkah build dan pilih "Aktifkan target Maven tingkat atas"
Untuk tujuan, tentukan clean and package and save the Job.
Uji Pembuatan
Untuk menguji pekerjaan apakah dapat menarik dan membuat kode kita, klik Bangun Sekarang.
Tambahkan Penerapan Tindakan Pasca Pembuatan
Sekarang karena kami yakin bahwa kode kami sedang ditarik dan dibangun, sekarang kami siap untuk menambahkan tindakan pasca-pembuatan. Untuk menambahkan tindakan pasca-pembuatan, klik tindakan pasca-pembuatan di bawah lingkungan pembangunan dan pilih "Deploy war to a container".
Kemudian tambahkan URL server Tomcat bersama dengan kredensialnya. Untuk menambahkan kredensial, klik "Tambah" dan ikuti langkah-langkah yang Anda lihat dan simpan Pekerjaan.
Uji Pembuatan Manual
Sekarang uji apakah tugas kita mampu menarik, membangun, dan menerapkan kode di server Apache Tomcat. Klik build now untuk menguji pekerjaan kami.
Seperti yang Anda lihat pada tangkapan layar di atas, pembuatan manual berhasil dan telah diterapkan di Server Apache Tomcat.
Untuk menguji apakah perang benar-benar telah diterapkan, tekan Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager untuk mengakses aplikasi pengelola.
Di sini Anda dapat melihat bahwa web_ex.war file telah berhasil di-deploy di server Apache Tomcat.
Uji Contoh Java Aplikasi
Untuk menguji apakah aplikasi Java berjalan, tekan URL http://IP-of-Apache-Tomcat:8090/web_ex .
Setup Webhook di Github Repo
Buat webhook
Untuk membuat buku bayi di tab kunjungi, dapatkan login situs webnya ke akun Anda dan ikuti langkah-langkah yang disebutkan di bawah.
Buka setelan repo Anda, di panel kiri, klik web hooks, lalu klik "Tambahkan Webhook"
Di URL Payload, tambahkan http://Jenkins-URL:8080/github-webhook.
Anda dapat memilih peristiwa yang Anda inginkan untuk memicu Webhook ini atau Anda dapat memilih "Kirim semuanya kepada saya" jika Anda ingin memicu pekerjaan Jenkins di setiap peristiwa, klik perbarui Webhook untuk menyimpannya.
Uji Auto Build on Commit
Sekarang kami siap untuk menguji tugas pembuatan otomatis kami.
Untuk menguji apakah pekerjaan Jenkins kami menarik kode dari repo github kami pada setiap komit, gunakan perintah berikut.
Untuk mengkloning repo secara lokal, saya telah menggunakan perintah berikut. Jika Anda memiliki laporan sendiri, kirimkan ke sistem lokal Anda.
git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/
Buat beberapa perubahan pada repositori sehingga kami dapat mendorongnya. Di sini, saya telah menambahkan file baru secara lokal yang akan saya dorong di repo jarak jauh
sentuh README.md
Untuk mengonfigurasi nama pengguna dan ID email untuk git gunakan perintah berikut.
git config user.name "Rahul Shivalkar"
git config user.email "[email protected]"
Untuk melakukan dan mendorong perubahan Anda gunakan perintah berikut
git commit -m "Test Commit"
git push
Segera setelah kami mendorong perubahan ke repositori di Github, itu akan memicu tugas Jenkins kami yang telah kami tambahkan di Github Webhook.
Anda dapat melihat ini di bawah "Log Polling" pekerjaan, lihat tangkapan layar berikut untuk hal yang sama.
Jika Anda membuka konsol keluaran tugas, Anda dapat melihat bahwa tugas telah berhasil dijalankan dan perang telah diterapkan ke Apache Tomcat.
Uji Ulang
Sekarang ubah kode untuk menguji apakah kode terbaru diterapkan atau tidak. Saya akan mengubah pesan yang ditampilkan di browser.
Jika Anda menggunakan laporan Anda sendiri, buat perubahan yang diperlukan pada kode Anda, di sini saya hanya mengubah contoh file index.jsp yang mencetak pesan di browser.
vim src/main/webapp/index.jsp
Sekarang mari kita lihat apakah kode yang diubah direfleksikan atau tidak.
Komit perubahan yang telah Anda buat pada kode Anda menggunakan perintah berikut.
git add src/main/webapp/index.jsp
git commit -m "Mengubah Kode menjadi Hello World Baru!”
git push
Tekan URL Apache Tomcat http://IP-of-Apache-Tomcat:8090/web_ex untuk mengakses aplikasi sampel kami.
Anda dapat melihat bahwa kode terbaru telah dibuat dan diterapkan di Apache Tomcat yang berarti aplikasi telah berhasil diterapkan dan pipeline juga berhasil dipicu.
Jika Anda melihat kode saya sebelumnya hanya ditampilkan "Hello World!" dan sekarang ketika saya membuat perubahan di index.jsp dan mengkomitnya, aplikasi terbaru menampilkan "Hello World New!".
Kesimpulan
Dalam artikel ini kita melihat langkah-langkah membuat pipeline CI/CD sederhana yang dapat menarik kode Anda dari repo Github dan menerapkannya di server Apache Tomcat pada setiap commit. Kami juga melihat langkah-langkah menginstal Jenkins, Apache Tomcat, Java, Plug-in di Jenkins.