Install and Configure Jenkins Master and Jenkins Agent via SSH (Part-01)

Wai Yan SoeWai Yan Soe
3 min read
💡
CI/CD Tools တွေကို အခုမှ စလေ့လာနေတဲ့ သူတွေအတွက် အထောက်အကူ ဖြစ်စေဖို့ရည်ရွယ်ပါတယ်။ 😊

1. Introduction

Jenkins နဲ့ အခုမှစ ထိတွေ့မယ့်သူတွေအတွက် အထောက်အကူ တစ်ခုဖြစ်စေဖို့ ...

Jenkins လို့ဆိုလိုက်တာနဲ့ လူသုံးအများဆုံး CI/CD Tools တွေထဲ က တစ်ခု ဆိုတာတော့အားလုံးသိပြီးကြပြီဖြစ်မှာပါ။ Open Source ဖြစ်ပြီး သူ့မှာ တခြား Third Party tools တွေနဲ့ အများအပြား Integrate လုပ်လို့ရပါတယ်။ ဒီ article မှာတော့ Jenkins Master and agent ကို ဘယ်လို Setup လုပ်မလဲဆိုတာကို Lab အသားပေး ပြောပြပေးသွားမှာပါ။

Jenkins Master: Jenkins Master ဆိုတာကတော့ Jenkins Systems တစ်ခုလုံးကို Manage လုပ်ပေးတဲ့ Server လို့အလွယ်မှတ်လို့ရတယ်။ Agent Node တွေ၊ Pipeline Jobs တွေ၊ Plugin and tools တွေ၊ Security Credential တွေ အစရှိသဖြင့် Jenkins system တစ်ခုလုံးကို Master Node ရဲ့ Web UI ကနေ Manage လုပ်ကြရပါတယ်။

Jenkins Agents or Slave: Jenkins Agents တွေကတော့ တစ်နည်းအားဖြင့် Worker Node တွေလို့လည်း ဆိုနိုင်ပါတယ်။ GitHub Action၊ GitLab CI နဲ့ Bitbucket pipeline တို့ မှာ ဆိုရင် Runner လို့ ခေါ်ကြပါတယ်။ Agents တွေက Virtual Machine or Container တွေလည်းဖြစ်နေတတ်ပါတယ်။ သူတို့ကတော့ Master node ကနေ assign ကျလာတဲ့ Tasks တွေကို တာဝန်ယူပါတယ်။ဥပမာအားဖြင့် Pipeline A ကို Agent A မှာ run ပေးပါလို့ သတ်မှတ်ပေးလိုက်တာနဲ့ Pipeline A ထဲမှာသတ်မှတ်ထားတဲ့ steps တွေ ဥပမာ Application Artifact or Container Build လုပ်တာတွေ Testing ကိစ္စတွေ အစရှိသဖြင့် Jenkinsfile ထဲမှာ ထည့်ရေးပေးလိုက်တဲ့ Steps တွေအားလုံး အဲ့ ဒီ Agent A ပေါ်မှာ run သွားပါတယ်။ အဲ့ဒီမှာ သတိထားရမှာတစ်ခုက Pipeline ထဲမှာပါတဲ့ steps တွေရဲ့ Dependency တွေကို Agent တွေမှာ ကြိုတင် Install ထားဖို့ လိုပါမယ်။ ဥပမာ Docker Build မယ်လို့ Jenkinsfile မှာ ရေးထားရင် အဲ့ဒီ Pipeline run မယ့် Agent ပေါ်မှာ Docker Engine ကို Install လုပ်ထားရပါမယ်။ အပေါ်မှာပြောခဲ့တဲ့ Jenkinsfile ဆိုတာကတော့ pipeline ထဲမှာ ဘာတွေလုပ်မလဲဆို တဲ့ pipeline stage တွေကို သတ်မှတ်ထားတဲ့ ဖိုင်လေးတစ်ဖိုင်ဖြစ်ပါတယ်။ သူ့ကို Groovy syntax နဲ့ရေးရပါတယ်။

Learn More:https://www.jenkins.io/doc/book/using/using-agents/

2. Prerequires

  • Check System Requirements
    AWS EC2 သုံးမယ်ဆိုရင်တော့ workload အရမ်းမများဘူး testing အတွက်ဆို t2.micro လောက်သုံးလို့ရပေမယ့် t2.medium လောက်ကို Recommend လုပ်ချင်ပါတယ်။
    2 vCPUs 4G RAM လောက်ပေါ့
    Supported platforms and requirements ကို ဒီမှာကြည့်နိုင်ပါတယ်။
    https://www.jenkins.io/doc/book/installing/linux/#prerequisites

  • Two Linux machines with SSH connection (master and agent)
    ဒီ Lab Setup အတွက် Virtual Machine နှစ်ခုရှိရပါမယ်။
    ကျွန်တော်ကတော့ AWS EC2 t2.medium နဲ့ OS ကို Ubuntu 22.04.2 LTS (Jammy Jellyfish) ကို Master အတွက်တစ်ခု Agent အတွက်တစ်ခု အဆင်သင့်ပြင်ထားလိုက်ပါတယ်။ Local laptop မှာပဲ စမ်းချင်တော့ Vagrant or VirtualBox တို့နဲ့လည်းစမ်းနိုင်ပါတယ်။ VM နှစ်ခုက SSH Connection ကောင်းကောင်းရှိဖို့လိုပါမယ်။

  • Java Runtime Dependency:

    Jenkins က Java-based application ဖြစ်တာမလို့ သူ့ကိုကောင်းကောင်း Runနိုင်ဖို့ဆိုရင် JRE (Java Runtime Environment) လိုပါမယ်။Master ရော Agents အတွက်ပါလိုမှာပါ။

3. Jenkins Installations

3.1 JRE Installations on both the master and agent.

JRE 17 ကို install လုပ်ပါမယ်။

sudo apt install openjdk-17-jre-headless -y

3.2 Install Jenkins on Master

Jenkins repo အတွက် GPG Key download လုပ်ပါမယ်။

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
  https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

Jenkins Repo ကို APT Sources ထဲမှာ Add ပါမယ်။

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/nullpdate APT Package Index

ပြီရင်တော့ apt update လေး run လိုက်ပါ။

sudo apt-get update

Jenkins ကိုစပြီး Install လုပ်လို့ရပါပြီ။

sudo apt-get install jenkins

Install လုပ်ပြီးသွားရင် တော့ Jenkins Service Statusကို ဒီ Command လေးနဲ့စစ်ကြည့်နိုင်ပါတယ်။

sudo systemctl status jenkins

Learn More: https://www.jenkins.io/doc/book/installing/linux/#debianubuntu

4. Access to Jenkins Console

4.1 Access to Jenkins Console via browser

Install လုပ်ပြီး Jenkins Service လည်း running ဖြစ်နေပြီဆိုရင်တော့ Browser ကနေ Jenkins Master VM ရဲ့ IP နဲ့ Default port number 8080 ကို ခေါ်ကြည့်လိုက်ပါ။
default port 8080 (Example:10.90.1.202:8080)
AWS EC2 သုံးတဲ့သူတွေကတော့ Public IP နဲ့ခေါ်ရမှာဖြစ်ပြီး port number 8080 ကို security group မှာ anywhere allow လုပ်ထားဖို့လည်းလိုပါမယ်။ Local မှာစမ်းတဲ့သူတွေကတော့ ခေါ်လို့မရသေးရင် Jenkins Service နဲ့ Firewall rules တွေကို တစ်ချက်စစ်ကြည့်နိုင်ပါတယ်။

4.2 Initial setup

Browser ကနေ Access ရပြီဆိုတာနဲ့ ဒီ page ကို အရင်ဆုံးတွေ့ရမှာပါ။

Initial Administrator Password ကို Jenkins server ထဲက /var/lib/jenkins/secrets/initialAdminPassword

ဒီဖိုင်လေးကို ဖွင့်ဖတ်ပြီး သိရှိနိုင်ပါတယ်။ Password ကို Copy ကူးလာပြီး paste ချပြီးရင်တော့ Continue ဆက်သွားလိုက်ပါ။

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

ညာဘက်က တစ်ခုကတော့ ကိုယ့်လိုအပ်ချက်ပေါ်မူတည်ပြီးကြိုက်ရာရွေးပြီး Plugins တွေကို Install လုပ်နိုင်ပါတယ်။ ဒီမှာ ကျွန်တော် ကတော့ ဘယ်ဘက်က suggested plugins ဆိုတာကိုပဲရွေးပြီးဆက်သွားပါမယ်။

ပြီးရင်တော့ Admin User Create လုပ်ခိုင်းပါလိမ့်မယ်။ လိုအပ်တာတွေဖြည့်စွက် ပြီးဆက်သွားလို့ရပါပြီ။

အခုဆိုရင်တော့ Jenkins Ready ဖြစ်ပါပြီ။ Master Node မှာ Jenkins ကို Install လုပ်လို့ အောင်မြင်သွားပါပြီ။

Thank you for taking the time to read this article! Feel free to connect and share your thoughts or questions.

Part 02 မှာပြန်လည်တွေ့ပါတယ် ...။

Part 02

5
Subscribe to my newsletter

Read articles from Wai Yan Soe directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Wai Yan Soe
Wai Yan Soe