GNU/Linux >> Belajar Linux >  >> Linux

Siapkan pipeline CI/CD sederhana menggunakan Github dan Jenkins pada instance AWS EC2 Linux

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.

  1. Contoh EC2: Instance EC2 adalah Mesin Virtual (VM) di AWS Cloud. Kami akan men-deploy Apache Tomcat dan Jenkins ke instance EC2.
  2. Apache Tomcat: Apache Tomcat adalah Server Web sumber terbuka. Kami akan menerapkan contoh Aplikasi Java kami ke Apache Tomcat sebagai file .war.
  3. Github: Github adalah platform hosting Kode. Ini pada dasarnya adalah Sistem Manajemen Kontrol Versi/Sumber. Kami akan memasukkan contoh kode Java ke Github.
  4. 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.
  5. 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.
  6. Maven : Maven adalah alat otomatisasi build yang digunakan terutama untuk membuat project Java.

Prasyarat

  1. Akun AWS (Buat jika Anda belum memilikinya)
  2. Pemahaman dasar tentang Github.
  3. Pemahaman dasar tentang Jenkins.
  4. Pemahaman dasar tentang Server dan Perintah Linux

Apa yang akan kita lakukan?

  1. Buat Instance EC2
  2. Instal Java
  3. Instal Jenkins
  4. Siapkan Apache Tomcat
  5. Buka Repo Github saya
  6. Mengakses dan Mengonfigurasi Jenkins
  7. Menyiapkan Pekerjaan Jenkins untuk penerapan .war
  8. Siapkan Webhook di Repo Github
  9. 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.


Linux
  1. Aktifkan dan jalankan podman di Windows menggunakan Linux

  2. Buat instans EC2 di AWS menggunakan Terraform

  3. Menggunakan kbhit() dan getch() di Linux

  1. Cara Membuat dan Menambahkan Volume EBS di AWS Instance (EC2)

  2. Cara Meluncurkan Instans AWS EC2 Menggunakan Terraform

  3. Cara menyiapkan server Linux di Amazon AWS

  1. Siapkan Cluster Kubernetes di Instans AWS EC2 dengan Ubuntu menggunakan kubeadm

  2. Cara menginstal Jenkins menggunakan file .war pada instance AWS EC2 Ubuntu 20.04

  3. Cara menambah dan menghapus Cronjobs dari instans Linux EC2 di AWS menggunakan skrip shell