Jenkins adalah sebuah aplikasi cross plaform, dimana fungsi utamanya adalah continuous integration dan continuous delivery untuk build dan test secara berkelanjutan sehingga itu memudahkan developer dalam mengembangan aplikasinya secara terus menerus.
Use Case:
ada sebuah perusahaan PT Suka Dagang, perusahaan tersebut bergerak dibidang E-Commerce, dimana perusahaan tersebut mengunakan banyak paltform untuk menjalankan aplikasinya diatanya adalah web, android, ios, dll. sebelumnya perusahaan tersebut hanya mengunakan 1 platform saja yaitu web, untuk menlajankan itu mereka hanya menggunakan 1 jenkins saja. namun karena sekarang dia menjalankan aplikasinya dibanyak platform, maka dibutuhkan solusi jenkins master slave, untuk menjalankan masing2 plaform hanya pada satu slave tertentu saja, seperti gambar diatas.
Secara Arsitektur Jenkins support dengan arsitektur master-slave, kita dapat membangun banyak slave untuk satu master. itu juga dikenal dengan Jenkins Distributed Build, hal ini juga memungkinkan untuk menjalankan pekerjaan pada environment yang berbeda, misal linux, windows atau macos. Selain itu kita juga dapat menjalankan skema testing secara paralel pada env yang berbeda dengan jenkins distributed build, dengan itu maka suatu proses dapat dikerjakan secara bersamaan dan lebih cepat, dan semua hasil pekerjaan di monitoring oleh master.
Jenkins Master
Your main Jenkins server is the master machine. The tasks performed by the master are :
- Scheduling build jobs.
- Dispatching builds to the slaves for the execution.
- Monitor the slaves.
- Recording and presenting the build results.
- Can also execute build jobs directly.
Jenkins Slave
A slave is a Java executable that runs on a remote machine. The characteristics of the slave are :
- It hears requests from the Jenkins Master instance.
- Slaves can run on a variety of operating systems.
- The job of a Slave is to do as they are told to, which involves executing build jobs dispatched by the Master.
- We can configure a project to always run on a particular Slave machine or a particular type of Slave machine, or simply let Jenkins pick the next available Slave.
Sebelum anda menjalankan ini, anda harus install jenkins terlebih dahulu disini
- Generate SSH Key – Pada Jenkins Master
1 |
ssh-keygen -t rsa -b 4096 |
Hasil SSH Key Public
1 2 |
jenkins:~# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMG1BLHNu5YNF7IKv6/Ft8ZJeBdMjMT/C9Y6QHN/kJe2niY0j33XrdniufOjdoo6ncgA3zkFju91iMzQrCM4hRx3YpwFsXtLrRPw3pERnyGdEim3t8+/9LqsZo5POVzGuYilupMJN8bm01QA2opxvCwpqysN2OnKpBLCBZHUtutsUKNovxBAKl/9CsaGorj2jFcFJHwPgg2b7G/cbsnmV+igPtHzy+bbbFxezqdUnOB2Q3WnAjmv7emgZJqsNx7Sboi1qMsDPxXLJj5y2VAAPocQKviHzIzcoQmrtJ5/iAb44RXeyLFfx4zXYiaTS+NrhYlwskCpaI0OjdKqkAJlIShH20TYAOPf3rWnTD0d4LSRwrWgZjdiHGe0cHulHp2qNd7qGmvswF8oz8uRlbJQH7u4dKIwcVM0crtzxrZx7JE/nebHZLWN9k1/sT73Yc5asb4/PnU9qVcaF+DkvZCUuQgL+ho4HD1lL3gyXOcM8ajhmuY2+/GofZ9CIcivkiSuAiMNq0tkSPqQSTDGeTaimXRwbN1EQwX7HZMNd8f3heBnorEzekJDUDJJBAwH7ct9mUhP6IbTUZzVzSS82VH3lt0/9uYmmRkPEfV1Fxdj0iUdQwiA6PXJutpT+pkK9ixUZYl8DKuGc7Zj6Nq+KWCsHaNbt9heNlrIG1I3Xv6iGONQ== root@jenkins |
- Jalankan Pada Jenkins Worker
1 |
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMG1BLHNu5YNF7IKv6/Ft8ZJeBdMjMT/C9Y6QHN/kJe2niY0j33XrdniufOjdoo6ncgA3zkFju91iMzQrCM4hRx3YpwFsXtLrRPw3pERnyGdEim3t8+/9LqsZo5POVzGuYilupMJN8bm01QA2opxvCwpqysN2OnKpBLCBZHUtutsUKNovxBAKl/9CsaGorj2jFcFJHwPgg2b7G/cbsnmV+igPtHzy+bbbFxezqdUnOB2Q3WnAjmv7emgZJqsNx7Sboi1qMsDPxXLJj5y2VAAPocQKviHzIzcoQmrtJ5/iAb44RXeyLFfx4zXYiaTS+NrhYlwskCpaI0OjdKqkAJlIShH20TYAOPf3rWnTD0d4LSRwrWgZjdiHGe0cHulHp2qNd7qGmvswF8oz8uRlbJQH7u4dKIwcVM0crtzxrZx7JE/nebHZLWN9k1/sT73Yc5asb4/PnU9qVcaF+DkvZCUuQgL+ho4HD1lL3gyXOcM8ajhmuY2+/GofZ9CIcivkiSuAiMNq0tkSPqQSTDGeTaimXRwbN1EQwX7HZMNd8f3heBnorEzekJDUDJJBAwH7ct9mUhP6IbTUZzVzSS82VH3lt0/9uYmmRkPEfV1Fxdj0iUdQwiA6PXJutpT+pkK9ixUZYl8DKuGc7Zj6Nq+KWCsHaNbt9heNlrIG1I3Xv6iGONQ== root@jenkins" >> ~/.ssh/authorized_keys |
kemudian install beberapa package
1 2 3 4 |
apt update apt-get install default-jre apt-get install default-jdk apt-get install git maven |
- Buat Credentials SSH Private Key di jenkins master
Pilih Add Credentials, pada Kind pilih SSH Username with private key, username : root, private key (dari jenkins master, cat ~/.ssh/id_rsa)
Pilih Manage Jenkins -> manage Nodes
Pilih New Nodes
masukan Node Name: Jenkins-worker1, pilih permanent
Perhatikan pada bagian yang saya kasih tanda merah
Tunggu beberapa menit untuk proses sync
Untuk case ini saya hanya mengunakan 1 slave saja, namun jika anda membutuhkan env di windows, anda juga dapat install slave agent jenkins di windows
cukup sekian tutorialnya semoga bermanfaat 😀
Ref:
- https://blog.knoldus.com/setting-up-master-slave-machines-using-jenkins/
- https://embeddedartistry.com/blog/2017/12/22/jenkins-configuring-a-linux-slave-node
System Engineer
Komentar