Boshqalar

Yangi oʻrganuvchilar uchun Jenkins: u oʻzi nima, bizga nima uchun kerak va uni qanday oʻrnatish mumkin?

Ilovalar yigʻish boʻyicha oʻz konveyerimizni ishga tushiramiz.

______________________________________________________________________________________

Uzoq vaqt ilgari, IT sohasi endi paydo boʻlgan davrlarda dasturchilar oʻzgartirishlarni saqlash uchun ofisga bir dunyo perfokartalar bilan kelardi. U davrlar allaqachon ortda qoldi, hozir yangi fichalar kodga uzluksiz kiritiladi va darhol foydalanuvchilarga yetkaziladi. Bu koʻp jihatdan Jenkins kabi yigʻim tizimlari tufayli yuzaga keldi.

Bu maqolada siz quyidagilarni bilib olasiz:

  • CI/CD nima?

  • Jenkins nima?

  • Uning afzalliklari qanday?

  • Uni qanday oʻrnatish mumkin?

  • Windowsʼga qanday oʻrnatiladi?

  • Ubuntuʼga qanday oʻrnatiladi?

  • Jenskinsʼni qanday sozlash kerak?


Ekspert

Dmitriy Zaytsev
CTO Flocktory, Skillbox DevOps ingineer kasbi dasturiy direktori, DevOpsConf dasturiy qoʻmita direktori.

_____________________________________________________________________________________

 

Boshlab olish uchun: CI/CD nima?


Jenkinsʼning ishi asosida uzluksiz dasturlash yondashuvi yotadi. Bu dasturchilar xuddi pazl donalarini birlashtirgandek, kodga yangi funksiyalarni doimiy ravishda kiritib borishini bildiradi. Yana bir yondashuv, yaʼni iterativ yondashuvga koʻra avval dasturning toʻlaqonli versiyasi yoziladi, keyin testdan oʻtkaziladi va foydalanishga topshiriladi.

Uzluksiz dasturlash ikki qismdan iborat boʻladi:

  • CI (continuous integration) – uzluksiz integratsiya. Bunda koddagi barcha yangiliklar loyihaning asosiy tarmogʻiga darhol qoʻshiladi.

  • CD (continuous delivery) – uzluksiz yetkazish. Dasturchilar ishining natijasi ilova serveri yoki test muhitiga yetkaziladi va testdan oʻtkaziladi.

Har ikki tushuncha odatda birgalikda qoʻllanadi, shu tufayli yondashuv nomi ham CI/CD deb ataladi. 

 

CI/CD konveyerning qisqa qadamlarini shunday tasvirlash mumkin:

  • Yigʻish. Dasturchi vazifa boʻyicha kod yozadi va uni CI-uskunalar (ular haqida keyinroq aytib beramiz) yordamida repozitoriydagi asosiy dasturiy taʼminotga qoʻshadi.

  • Testdan oʻtkazish. QA injenerlar jamoasi kodni qoʻlda yoki avtomatik usullar bilan tekshirib chiqadi. Agar bag yoki nosozlik uchrasa, kod dasturchilarga toʻldirish uchun qaytariladi.

  • Reliz. Buyurtmachi mahsulotni koʻrib chiqadi va barchasi qoniqarli boʻlsa, uni foydalanuvchilarga topshiradi.

  • Aloqa va qayta ishlash. Foydalanuvchilar dasturning ishlashi boʻyicha oʻz fikrini qoldiradi. Shu maʼlumotlar asosida dasturchilar uchun yangi texnik vazifa tayyorlanadi va konveyer qayta ishga tushiriladi.

Bunday yondashuvning foydasi shundaki, yakuniy relizni kutmasdan, foydalanuvchilarga yangi xususiyatlarni taqdim qilib borish mumkin. Lekin tanganing ikkinchi tomoni ham bor: konveyer xizmat qilishi uchun butun boshli testdan oʻtkazuvchilar va DevOps injenerlar jamoasi kerak boʻladi. Bu esa baʼzi kompaniyalar uchun katta xarajatga sabab boʻladi. 

Jenkins oʻzi nima?

Jenkins bu – Javaʼda yozilgan uzluksiz dasturlash freymvorki. “Freymvork” soʻzi tizimni plagin va kengaytmalar yordamida oʻz ehtiyojlaringizga moslab sozlashingiz mumkinligini bildiradi. Masalan, versiyalar nazorati tizimi, Yandex Cloud, Jira va boshqalarni qoʻshish mumkin.

Jenkinsʼdagi eng sodda funksiyalar ham konveyerning turli bosqichdagi ishi – yigʻishdan to testdan oʻtkazishgacha masʼul plaginlari hisoblanadi. Bunday toʻplamni pipeline deyishadi va uni toʻgʻri “qutidan” olish mumkin. Agar yana kengaytmalar kerak boʻlsa, ularni Jenkins marketpleysidan yuklab olsa boʻladi.

Jenkins tarqatma tizimda ishlaydi: barcha jarayonlarni boshqarib, vazifalarni taqsimlaydigan boshqaruvchi server va boshqaruvchidan ortiqcha yuklamani oladigan agentlar – sleyv-serverlar boʻladi.

Odatda loyihada har xil vazifalar uchun turli sleyv-serverlar: dasturlash uchun bitta, testdan oʻtkazish uchun bitta, foydalanuvchilar soʻrovini qayta ishlash uchun bittadan sleyv-server boʻladi. Texnik jihatdan hali ilova tarqatilmagan vaqtda uni faqat bitta serverda ishlab chiqsa ham boʻladi. Ammo u birdan buzilsa hamma: foydalanuvchilar ham, testdan oʻtkazuvchilar ham, dasturchilar ham zarar koʻradi.

Agar ilovaning har xil tizimlar uchun moʻljallangan bir nechta versiyasini, masalan, Vinda uchun bitta, Linux yoki macOS uchun boshqa versiya yozmoqchi boʻlsangiz, bu ancha foydali. Ana shunda bir nechta sleyv-serverlarni olish va ularning har biriga oʻz muhitingizni tarqatish ham toʻgʻri boʻladi.

Jenkinsʼning afzalliklari

Bu tizimning eng oʻziga xos jihatlarini sanab oʻtamiz.

  • Kross-platforma. Dasturning Linux, macOS va Windows uchun moʻljallangan versiyalari mavjud.

  • Open Source falsafasi. Ilovani bepul ishlatish mumkin, uning kodi esa barcha istovchilar uchun oʻrganishga ochiq.

  • Bulutli texnologiyalar bilan integratsiya: Azure, Google Cloud, DigitalOcean, Yandex Cloud va boshqalar.

  • Takomillashgan jamiyat. Ehtimoliy muammolarni yechish shunga oʻxshash muammolar yechimini izlash bilan yengillashadi.

  • Koʻplab plaginlar. Jenkins marketpleysining oʻzida 2 mingga yaqin plagin mavjud.

  • Murakkab loyihalarga ham mos keladi. Lekin buni salbiy jihat sifatida ham qarasa boʻladi, chunki Jenkins kichik masalalar uchun “ogʻirroq” koʻrinishi mumkin.

Endi esa Jenkins-konveyerni ishga tushirish vaqti keldi.

Jenkinsʼni oʻrnatamiz.

Jenkins Java ilova boʻlgani uchun uni oʻrnatishda bizga mos muhit kerak boʻladi. Bu Oracle tomonidan taqdim qilingan dasturchining Java asosidagi ilovalar toʻplami – JDK (Java Development Kit) hisoblanadi.

Jenkinsʼni ikki tizimga Windows 11 va Ubuntu 22.04ʼga oʻrnatamiz. Ishni “oynavand” operatsion tizimdan boshlaymiz.

 

Windowsʼga oʻrnatish

Avvaliga kerakli versiyalarni tayyorlab olamiz. Rasmiy saytdan JDK komplektining soʻnggi modifikatsiyasini yuklab olamiz, bizning holatimizda bu jdk-21_windows-x64_bin.exe.

JDK faylni tanlash uchun Oracle sahifasi



Yuklash bir soatgacha vaqt olishi mumkin. Shundan soʻng oʻrnatish faylini ishga tushiramiz.

"Oʻrnatish manzilini eslab qolamiz yoki nusxalaymiz: C:Program FilesJavajdk-21.
Bu manzil bizga hali kerak boʻladi. Oʻrnatish yakunlanishini kutamiz."

Tayyor! JDK oʻrnatildi, oynani yopamiz.

Ana endi bevosita Jenkinsʼni oʻrnatishga oʻtamiz. Buning uchun yuklashlar sahifasiga oʻtib, Windowsʼni tanlaymiz, distributivni yuklab, oʻrnatuvchi paketni ishga tushiramiz.

Oʻrnatish oynasida tizimga kirishni standart holatdagi Run service as local or domain userʼdan Run service as LocalSystemʼga oʻzgartiramiz. Avtorizatsiya maydoni bu holatda yoʻqoladi, lekin buning qoʻrqinchli joyi yoʻq, login va parolni keyinroq kiritamiz.

Jenkins ishlaydigan portni standart holatda – 8080 holida qoldiramiz.

Test Port tugmasini bosib, portni testdan oʻtkazamiz.

"Test muvaffaqiyatli oʻtkazildi, keyingi qadamda bizga avval JDK saqlangan manzilimiz kerak boʻladi, yaʼni C:Program FilesJavajdk-21.
Direktoriya manzilini oynaga kiritamiz va Next tugmasini bosamiz."

Keyingi qadamda biz taklif qilinadigan komponentlarning oʻrnatilishiga rozilik beramiz.

Jenkinsʼni oʻrnatish yakunlandi!

Oʻrnatuvchi paketni yopamiz va vazifalar dispetcherida kerakli jarayon paydo boʻlganini tekshiramiz.

Tayyor! Dasturni ishga tayyorlashni keyingi boʻlimda aytib oʻtamiz. Endi esa Ubuntu bilan shugʻullanamiz.

 

Jenkinsʼni Ubuntuʼga oʻrnatish

Oʻrnatishni boshlashdan avval tizimda Java paketi borligini tekshiramiz, usiz Jenkins ishlamaydi. Buni qilish uchun terminalga (Ctrl + Alt + T yoki qidiruv boʻlimi orqali) kiramiz va quyidagi buyruqni kiritamiz:

java -version


Agar javob tariqasida 'java' not found kelsa, demak, tizimda Java paketi boʻlmaydi.

Java'ni Ubuntuga oʻrnatish boʻyicha qoʻllanma

1. Dastlab Oracleʼning rasmiy veb-saytiga oʻtamiz va Linux uchun JDK paketini yuklab olamiz. Bizga x64 Compressed Archive oʻrnatish fayli kerak.

2. Faylni yuklab olish uchun havoladan nusxa olamiz va wget buyrugʻidan foydalanib, oʻrnatish faylini toʻgʻridan toʻgʻri kompyuterimizga nusxalaymiz.

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz


3. Arxivimizni ochish uchun papka yaratamiz.

sudo mkdir -p /usr/lib/bizning_papka


4. “bizning_papka” oʻrniga oʻzimiz boshqa nom qoʻyamiz. Endi arxivni shu direktoriyada ochamiz.

tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/bizning_papka


5. JDKʼni PPA (Personal Package Archive) yordamida oʻrnatamiz, uni repozitoriy roʻyxatiga qoʻshamiz.

add-apt-repository ppa:linuxuprising/java


6. Paketlar roʻyxatini yangilaymiz.

sudo apt update


7. Endi bevosita JDK 21ʼni oʻrnatamiz.

sudo apt update


8. Jarayon mobaynida foydalanish qoidalariga rozilik bildiramiz.

9. Tayyor! Java versiyasiga soʻrov berish orqali muvaffaqiyatli oʻrnatilganini tekshiramiz.

java -version

Agar til muvaffaqiyatli oʻrnatilgan boʻlsa, konsol Java versiyasini koʻrsatadi. Bizning holatda bu 21-versiya.

Bevosita Jenkinsʼni oʻrnatishga oʻtamiz
1. Avvaliga curl buyrugʻi bilan GPG shifrlash kalitini olamiz. Kalit Jenkins repozitoriysidan yuklanadigan paketlar haqqoniyligini tekshirishda kerak boʻladi. Ikki marta urinmaslik uchun kalitni tizimga sudo tee buyrugʻi bilan oʻrnatamiz.

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null


2. Shundan soʻng Jenkins repozitoriysini Ubuntu paketlari roʻyxatiga qoʻshamiz.

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/null


Manzillarning toʻgʻri kiritilganini yuklash sahifasida tekshirish mumkin. 

3. Paketlar roʻyxatini yana yangilaymiz.

sudo apt update


4. Jenkinsʼni oʻrnatish vaqti keldi.

sudo apt install jenkins


5. Oʻrnatilgandan keyin servisni ishga tushiramiz.

sudo apt install jenkins


6. Ish statusini tekshiramiz.

sudo service jenkins status

Javob sifatidaActive: active (running)... qatori paydo boʻlishi kerak.

7. Soʻnggi nuqta. Jenkins yaxshi ishlashi uchun unga brendmauerda 8080 tarmoq portini ochish kerak. Buning uchun SSHʼni ochamiz.

sudo ufw allow OpenSSH

8. Brendmauerni ishga tushiramiz.

sudo ufw enable


9. Jenkinsʼning ishlashi uchun zarur portni ochamiz.

sudo ufw allow 8080


10. Hammasi chindan ochilganini tekshiramiz.

sudo ufw status


Javob tariqasida allowva Anywheresoʻzlari mavjud qatorlar chiqishi kerak.

Ajoyib! Endi Jenkins sizning serveringizda ham bor!

Jenskinsʼni qanday sozlash mumkin?

Jenskinsʼni sozlash uchun quyidagilarni kiriting:

  • http://ip_сервера:8080 — Ubuntu uchun;

  • http://localhost:8080 — Windows uchun.


Qolgan jihatlarda sozlash har ikki tizimda deyarli bir xil boʻladi. Biz Windowsʼda sozlashni koʻrib chiqamiz.

1. Havola boʻyicha oʻtilganda Jenkinsʼni ochish oynasi ochiladi. Bu yerda tizimlardagi yagona farq – faylning parolli manzilini koʻramiz. Ubuntuʼda bu Windowsʼdagidan farq qiladi.

2. Administrator password oynasiga manzilni kiritamiz va davom etishni bosamiz.

3. Plaginlarni oʻrnatishni taklif qilgan oyna ochiladi. Standart toʻplamni yuklash yoki plaginlarni oʻzingiz tanlashingiz mumkin. Hozir birinchi variantni tanlaymiz.

4. Yuklash boshlanadi.

5. Agar nimadir xato ketsa yoki qaysidir plagin yuklanmasa, Retrytugmasini bosib, qayta urinib koʻramiz.

6. Plaginlarni oʻrnatish yakunlangach, avtorizatsiya maʼlumotlari: foydalanuvchi nomi va parolni kiritamiz.

7. Saqlashdan soʻng muvaffaqiyatli xabarni qabul qilamiz: Jenkins ishlashga tayyor!

8. Start using Jenkins tugmasini bosamiz va dastur interfeysiga oʻtamiz.

Profit! Jenkinsʼni yuklash va sozlash yakunlandi. Endi u bizning masalalarni yechishga tayyor.

 

Manba: Jenkins для начинающих: что это, зачем нужен и как его установить

#guide
#Jenkins
Mohirdev Telegram

Telegram kanalimizga obuna bo’lishni unutmang

Obuna bo'lish
skillbox.ru

skillbox.ru