Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Uzluksiz joylashtirish - bu dasturiy ta'minotni ishlab chiqishda turli funktsiyalarni tez, xavfsiz va samarali amalga oshirish uchun ishlatiladigan maxsus yondashuv.

Asosiy g'oya ishlab chiquvchiga tayyor mahsulotni foydalanuvchiga tezda yetkazib berish imkonini beruvchi ishonchli avtomatlashtirilgan jarayonni yaratishdir. Shu bilan birga, ishlab chiqarishga doimiy o'zgarishlar kiritiladi - bu uzluksiz etkazib berish quvuri (CD Pipeline) deb ataladi.

Skillbox tavsiya qiladi: Amaliy kurs "Mobil dasturchi PRO".

Sizga eslatib o'tamiz: "Habr" ning barcha o'quvchilari uchun - "Habr" promo-kodidan foydalangan holda har qanday Skillbox kursiga yozilishda 10 000 rubl chegirma.

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Oqimni boshqarish uchun siz pullik va mutlaqo bepul, shu jumladan keng ko'lamli vositalardan foydalanishingiz mumkin. Ushbu maqolada har bir dasturchi uchun foydali bo'lishi mumkin bo'lgan ishlab chiquvchilar orasida eng mashhur uchta echim tasvirlangan.

Jenkins

To'liq mustaqil, ochiq manbali avtomatlashtirish serveri. Dasturiy ta'minotni yaratish, sinovdan o'tkazish, jo'natish yoki joylashtirish bilan bog'liq barcha turdagi vazifalarni avtomatlashtirish uchun u bilan ishlashga arziydi.

Minimal kompyuter talablari:

  • 256 MB RAM, 1 GB fayl maydoni.

Optimal:

  • 1 GB operativ xotira, 50 GB qattiq disk.

Ishlash uchun sizga qo'shimcha dasturiy ta'minot ham kerak bo'ladi - Java Runtime Environment (JRE) 8-versiya.

Arxitektura (tarqatilgan hisoblash) quyidagicha ko'rinadi:
Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Jenkins Server - bu GUI xostingi, shuningdek, butun tuzilishni tashkil etish va bajarish uchun mas'ul bo'lgan o'rnatish.

Jenkins Node/Slave/Build Server - Master (asosiy tugun) nomidan qurish ishlarini bajarish uchun sozlanishi mumkin bo'lgan qurilmalar.

Linux uchun o'rnatish

Avval siz Jenkins omborini tizimga qo'shishingiz kerak:

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable ikkilik/' | sudo tee -a /etc/apt/sources.list.d/je

Paket omborini yangilash:

sudo apt yangilanishi

Jenkinsni o'rnating:

sudo apt o'rnatish jenkins

Shundan so'ng, Jenkins tizimda standart port 8080 orqali mavjud bo'ladi.

Funktsionallikni tekshirish uchun brauzerda manzilni ochishingiz kerak localhost: 8080. Shundan so'ng tizim sizdan root foydalanuvchisi uchun dastlabki parolni kiritishingizni so'raydi. Ushbu parol /var/lib/jenkins/secrets/initialAdminPassword faylida joylashgan.

Endi hamma narsa tayyor, siz CI/CD oqimlarini yaratishni boshlashingiz mumkin. Ish stolining grafik interfeysi quyidagicha ko'rinadi:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Jenkinsning kuchli tomonlari:

  • Master/Slave arxitekturasi tomonidan taqdim etilgan miqyoslilik;
  • REST XML/JSON API mavjudligi;
  • plaginlar tufayli ko'p sonli kengaytmalarni ulash imkoniyati;
  • faol va doimiy rivojlanayotgan jamiyat.

Kamchiliklari:

  • analitik blok yo'q;
  • juda qulay interfeys emas.

TeamCity

JetBrains-dan tijorat rivojlanishi. Server oddiy sozlash va mukammal interfeys bilan yaxshi. Standart konfiguratsiya juda ko'p funktsiyalarga ega va mavjud plaginlar soni doimiy ravishda oshib bormoqda.

Java Runtime Environment (JRE) 8-versiyasini talab qiladi.

Server uskunasiga talablar muhim emas:

  • RAM - 3,2 GB;
  • protsessor - ikki yadroli, 3,2 gigagertsli;
  • 1 Gb/s quvvatga ega aloqa kanali.

Server yuqori samaradorlikka erishish imkonini beradi:

  • 60 ta konfiguratsiyaga ega 300 ta loyiha;
  • Qurilish jurnali uchun 2 MB ajratilgan;
  • 50 ta qurilish agenti;
  • veb-versiyasida 50 ta foydalanuvchi va IDEda 30 ta foydalanuvchi bilan ishlash imkoniyati;
  • Tashqi VCS ning 100 ta ulanishi, odatda Perforce va Subversion. O'rtacha o'zgartirish vaqti - 120 soniya;
  • kuniga 150 dan ortiq o'zgartirishlar;
  • bitta serverda ma'lumotlar bazasi bilan ishlash;
  • JVM server jarayoni sozlamalari: -Xmx1100m -XX:MaxPermSize=120m.

Agent talablari ishlaydigan yig'ilishlarga asoslanadi. Serverning asosiy vazifasi barcha ulangan agentlarni kuzatish va moslik talablari asosida yig'ilishlarni navbatdan ushbu agentlarga tarqatish, natijalar haqida hisobot berishdir. Agentlar turli platformalar va operatsion tizimlarda, shuningdek, oldindan tuzilgan muhitda keladi.

Qurilish natijalari haqidagi barcha ma'lumotlar ma'lumotlar bazasida saqlanadi. Bu, birinchi navbatda, tarix va shunga o'xshash boshqa ma'lumotlar, VCS o'zgarishlari, agentlar, qurish navbatlari, foydalanuvchi hisoblari va ruxsatlar. Ma'lumotlar bazasi faqat jurnallar va artefaktlarni o'z ichiga olmaydi.

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Linux uchun o'rnatish

TeamCity-ni Tomcat servlet konteyneri bilan qo'lda o'rnatish uchun siz TeamCity arxividan foydalanishingiz kerak: TeamCity .tar.gz. Yuklab oling shu yerdan olishingiz mumkin.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [boshlash|to'xtatish]

Birinchi marta boshlaganingizda, siz yig'ish ma'lumotlari saqlanadigan ma'lumotlar bazasi turini tanlashingiz kerak.

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Standart konfiguratsiya ishlaydi localhost:8111/ bitta kompyuterda ishlaydigan bitta ro'yxatdan o'tgan qurish agenti bilan.

TeamCity-ning kuchli tomonlari:

  • oddiy sozlash;
  • foydalanuvchilar bilan do'st interfeys;
  • ko'p sonli o'rnatilgan funktsiyalar;
  • qo'llab-quvvatlash xizmati;
  • RESTful API mavjud;
  • yaxshi hujjatlar;
  • yaxshi xavfsizlik.

Kamchiliklari:

  • cheklangan integratsiya;
  • Bu pullik vosita;
  • kichik bir jamoa (ammo o'sib bormoqda).

GoCD

Oʻrnatish va ishlatish uchun Java Runtime Environment (JRE) 8-versiyasini talab qiluvchi ochiq kodli loyiha.

Tizim talablari:

  • RAM - kamida 1 GB, ko'proq yaxshi;
  • protsessor - ikki yadroli, yadro chastotasi 2 gigagertsli;
  • qattiq disk - kamida 1 GB bo'sh joy.

Agent:

  • RAM - kamida 128 MB, ko'proq yaxshiroq;
  • protsessor - kamida 2 gigagertsli.

Server agentlarning ishlashini ta'minlaydi va foydalanuvchi uchun qulay interfeysni taqdim etadi:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Bosqichlar/Ishlar/Vazifalar:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

Linux uchun o'rnatish

echo "debyuti download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

kıvrım download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key qo'shish -
add-apt-repository ppa: openjdk-r/ppa

apt-get update

apt-get install -y openjdk-8-jre

apt-get o'rnatish go-server

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|qayta ishga tushirish]

/etc/init.d/go-agent [start|stop|status|qayta ishga tushirish]

Odatiy bo'lib GoCd ishlaydi localhost: 8153.

GoCd ning kuchli tomonlari:

  • ochiq manba;
  • oddiy o'rnatish va sozlash;
  • yaxshi hujjatlar;

  • Ajoyib foydalanuvchi interfeysi:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

  • GoCD-ni bosqichma-bosqich joylashtirish yo'lini bir ko'rinishda ko'rsatish imkoniyati:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

  • quvur liniyasi tuzilishining ajoyib namoyishi:

Uzluksiz joylashtirishni tashkil qilish uchun 3 ta mashhur vosita (Continuous Deployment)

  • GoCD CD ish jarayonini Docker, AWS kabi eng mashhur bulutli muhitlarda optimallashtiradi;
  • Ushbu vosita quvur liniyasidagi muammolarni tuzatishga imkon beradi, buning uchun real vaqt rejimida majburiyatdan tortib to joylashtirishgacha bo'lgan har bir o'zgarish kuzatiladi.

Kamchiliklari:

  • kamida bitta agent kerak;
  • barcha bajarilgan vazifalarni ko'rsatish uchun konsol yo'q;
  • har bir buyruqni bajarish uchun siz quvur liniyasi konfiguratsiyasi uchun bitta vazifani yaratishingiz kerak;
  • Plaginni o'rnatish uchun .jar faylini /plugins/external-ga ko'chirishingiz va serverni qayta ishga tushirishingiz kerak;
  • nisbatan kichik jamoa.

Xulosa sifatida

Bu faqat uchta vosita, aslida yana ko'p narsalar mavjud. Tanlash qiyin, shuning uchun siz, albatta, qo'shimcha jihatlarga e'tibor berishingiz kerak.

Asbobning ochiq manba kodi uning nima ekanligini tushunishga, shuningdek, tezroq yangi xususiyatlarni qo'shishga imkon beradi. Ammo agar biror narsa ishlamasa, unda siz faqat o'zingizga va jamiyatning yordamiga tayanishingiz kerak. Pullik vositalar ba'zan muhim bo'lishi mumkin bo'lgan yordamni ta'minlaydi.

Agar xavfsizlik sizning ustuvor vazifangiz bo'lsa, mahalliy vosita bilan ishlashga arziydi. Agar yo'q bo'lsa, SaaS yechimini tanlash yaxshi tanlovdir.

Va nihoyat, chinakam samarali uzluksiz joylashtirish jarayonini ta'minlash uchun siz o'ziga xos xususiyatlar mavjud vositalar qatorini qisqartirishga imkon beradigan mezonlarni yaratishingiz kerak.

Skillbox tavsiya qiladi:

Manba: www.habr.com

a Izoh qo'shish