Дженкинс согушу жана GitLab CI/CD

Акыркы он жылдын ичинде үзгүлтүксүз интеграция (CI) жана үзгүлтүксүз жайылтуу (CD) куралдарын өнүктүрүүдө олуттуу ийгиликтерге жетишилди. Программалык камсыздоону иштеп чыгууну жана эксплуатациялоону интеграциялоо үчүн технологиялардын өнүгүшү (Development Operations, DevOps) CI/CD куралдарына суроо-талаптын тез өсүшүнө алып келди. Учурдагы чечимдер тынымсыз өркүндөтүлүп, мезгил менен бирге болууга аракет кылып, жаңы версиялар чыгарылып, программалык камсыздоонун сапатын камсыздоо (QA) дүйнөсүндө көптөгөн жаңы өнүмдөр тынымсыз пайда болууда. Мындай тандоо байлыгы менен туура шаймандарды тандоо оңой иш эмес.

Дженкинс согушу жана GitLab CI/CD

Учурдагы бардык CI/CD куралдарынын арасында бул чөйрөдө бир нерсе издеп жаткандар үчүн сөзсүз көңүл бура турган эки долбоор бар. Биз Дженкинс жана GitLab платформасынын бир бөлүгү болгон GitLab CI/CD куралы жөнүндө сөз болуп жатат. Дженкинс андан көп 16000 GitHub боюнча жылдыздар. gitlab.com сайтындагы GitLab репозиторийи бир аз көбүрөөк пайда тапты 2000 жылдыздар Эгер репозиторийлердин популярдуулугун салыштырсак, Дженкинс GitLab CI/CD камтыган платформага караганда 8 эсе көп жылдыз алган экен. Бирок CI/CD куралын тандоодо, бул көңүл бурууга арзырлык жалгыз көрсөткүчтөн алыс. Башка көптөгөн нерселер бар, бул эмне үчүн Дженкинс жана GitLab CI/CD көптөгөн салыштырууларда бири-бирине абдан жакын экенин түшүндүрөт.

Мисалы, G2 платформасынын маалыматтарын алалы, анда ар кандай өнүмдөрдүн сын-пикирлерин жана колдонуучулар аларга берген рейтингдерин топтоо. Бул жерде орточо баа болуп саналат Jenkins, 288 кароодон алынган, 4,3 жылдыз. О GitLab Бул жерде 270 сын-пикирлер бар жана бул курал үчүн орточо рейтинг 4,4 жылдызды түзөт. Дженкинс жана GitLab CI/CD бири-бири менен бирдей шарттарда атаандашат десек жаңылышпайбыз. Белгилей кетчү нерсе, Jenkins долбоору 2011-жылы пайда болгон жана ошондон бери ал тестерлер үчүн сүйүктүү курал болуп калды. Бирок, ошол эле учурда, 2014-жылы ишке киргизилген GitLab CI/CD долбоору бул платформа сунуш кылган өнүккөн мүмкүнчүлүктөрдүн аркасында абдан бийик позицияны ээледи.

Башка ушул сыяктуу платформаларга салыштырмалуу Дженкинстин популярдуулугу жөнүндө айтсак, Travis CI жана Jenkins платформаларын салыштырган макаланы жарыялагандан кийин биз сурамжылоо уюштурганыбызды белгилейбиз. Ага 85 колдонуучу катышты. Респонденттерден өздөрүнө эң жаккан CI/CD куралын тандоо сунушталды. 79%ы Дженкинсти, 5%ы Travis CIди, ал эми 16%ы башка инструменттерди тандаган.

Дженкинс согушу жана GitLab CI/CD
Сурамжылоо жыйынтыгы

Башка CI/CD куралдарынын арасында GitLab CI/CD көбүнчө айтылган.

Эгер сиз DevOps жөнүндө олуттуу болсоңуз, анда долбоордун өзгөчөлүктөрүн, анын бюджетин жана башка талаптарды эске алуу менен тиешелүү куралдарды кылдаттык менен тандап алышыңыз керек. Туура тандоо жасоого жардам берүү үчүн, биз Jenkins жана GitLab CI/CD талдоо жүргүзөбүз. Бул, мен ишенем, туура тандоо жасоого жардам берет.

Дженкинс менен тааныштыруу

Дженкинс согушу жана GitLab CI/CD
Jenkins программалык долбоорлор менен байланышкан көптөгөн тапшырмаларды автоматташтыруу үчүн иштелип чыккан белгилүү, ийкемдүү CI/CD куралы. Дженкинс толугу менен Java тилинде жазылган жана MIT лицензиясы боюнча чыгарылган. Бул программалык камсыздоону куруу, сыноо, жайылтуу, интеграциялоо жана чыгаруу менен байланышкан милдеттерди автоматташтырууга багытталган кубаттуу мүмкүнчүлүктөргө ээ. Бул курал ар кандай операциялык системаларда колдонулушу мүмкүн. Алардын арасында macOS, Windows жана көптөгөн Linux дистрибутивдери бар, мисалы OpenSUSE, Ubuntu жана Red Hat. Ар кандай OS үчүн иштелип чыккан Jenkins орнотуу пакеттери бар, бул куралды Dockerге жана JRE (Java Runtime Environment) бар каалаган системага орнотууга болот.

Jenkins иштеп чыгуучулары Kubernetes чөйрөсүндө иштөө үчүн иштелип чыккан Jenkins X аттуу дагы бир долбоорду түзүштү. Jenkins X Helm, Jenkins CI/CD Server, Kubernetes жана DevOps мыкты тажрыйбаларына ылайык CI/CD түтүктөрүн курууга арналган башка куралдарды бириктирет. Мисалы, GitOps бул жерде колдонулат.

Дженкинстин артыкчылыктарынын бири, анын сценарийлери абдан жакшы структураланган, түшүнүктүү жана окууга оңой. Дженкинс командасы 1000ге жакын плагиндерди түздү, алар Дженкинстин ар кандай технологиялар менен өз ара аракеттенүүсүн уюштурууга багытталган. Скрипттерде аутентификация системаларын колдоно аласыз, алар, мисалы, ар кандай жабык системаларга кошулууга мүмкүндүк берет.

Дженкинс куурун эксплуатациялоодо сиз ар бир кадамда эмне болуп жатканын, иштин айрым этаптары ийгиликтүү аяктаганбы же жокпу, байкай аласыз. Мунун баарын сиз кандайдыр бир графикалык интерфейстин жардамы менен эмес, терминалдын мүмкүнчүлүктөрүн колдонуу менен байкай аласыз.

Дженкинс өзгөчөлүктөрү

Женкинстин белгилүү өзгөчөлүктөрүнүн арасында конфигурациянын жеңилдиги, ар кандай операцияларды автоматташтыруунун жогорку деңгээли жана эң сонун документация бар. Эгерде биз DevOps көйгөйлөрүн чечүү жөнүндө сөз кыла турган болсок, анда Дженкинс абдан ишенимдүү курал болуп эсептелет, аны колдонуу менен, эреже катары, долбоордун бардык процессине кылдат байкоо жүргүзүүнүн мааниси жок. Бул башка CI/CD куралдарында эмес. Келгиле, Дженкинстин эң маанилүү өзгөчөлүктөрүнө токтололу.

▍1. Акысыз, ачык булак, көп платформа колдоого алынат

Дженкинс macOS, Windows жана Linux платформаларында иштей алат. Ал ошондой эле Docker чөйрөсүндө иштей алат, бул автоматташтырылган тапшырмаларды бирдиктүү жана тез уюштурууга мүмкүндүк берет. Курал ошондой эле Apache Tomcat жана GlassFish сыяктуу Java иштетилген контейнерлерде сервлет катары иштей алат. Jenkinsти натыйжалуу орнотуу документтештирилген.

▍2. Иштелип чыккан плагин экосистемасы

Jenkins плагининин экосистемасы башка CI/CD куралдарынын плагин экосистемаларына салыштырмалуу алда канча жетилген окшойт. Учурда Jenkins үчүн 1500дөн ашык плагиндер бар. Бул плагиндер көйгөйлөрдүн кеңири спектрин чечүүгө багытталган; алардын жардамы менен сиз ар кандай долбоорлорду автоматташтыра аласыз. Тандоо үчүн бекер плагиндердин байлыгы Дженкинсти колдонгондордун баары кымбат акы төлөнүүчү плагиндерди сатып алуунун зарылчылыгы жок экенин билдирет. Мүмкүнчүлүгү бар интеграция Jenkins көптөгөн DevOps куралдары менен.

▍3. Оңой орнотуу жана орнотуу

Дженкинсти орнотуу жана конфигурациялоо оңой. Ошол эле учурда системаны жаңылоо процесси да абдан ыңгайлуу. Бул жерде, дагы бир жолу, документтин сапатын айта кетүү керек, анткени ал Дженкинсти орнотууга жана конфигурациялоого байланыштуу ар кандай суроолорго жооп бере алат.

▍4. Достук коомчулук

Жогоруда айтылгандай, Дженкинс бул ачык булак долбоору, анын экосистемасы көптөгөн плагиндерди камтыйт. Дженкинстин айланасында долбоорду иштеп чыгууга жардам берген колдонуучулардын жана иштеп чыгуучулардын чоң коомчулугу бар. Коомчулук - Дженкинстин өнүгүүсүнө түрткү берген факторлордун бири.

▍5. REST API болушу

Дженкинс менен иштөөдө сиз REST API колдоно аласыз, ал системанын мүмкүнчүлүктөрүн кеңейтет. Системага алыстан кирүү үчүн API үч версияда берилген: XML, JSONP колдоосу менен JSON, Python. бул жерде Jenkins REST API менен иштөөнүн чоо-жайын камтыган документация барагы.

▍6. Параллель тапшырманы колдоо

Дженкинс DevOps тапшырмаларын параллелдештирүүнү колдойт. Аны тиешелүү куралдар менен оңой бириктирип, тапшырманын натыйжалары жөнүндө эскертмелерди алса болот. Код тестирлөө ар кандай виртуалдык машиналарды колдонуу менен параллелдүү долбоорлорду уюштуруу менен тездетилиши мүмкүн.

▍7. Бөлүштүрүлгөн чөйрөлөрдө иштөө үчүн колдоо

Дженкинс бир нече компьютерлерди колдонуу менен бөлүштүрүлгөн курулуштарды уюштурууга мүмкүндүк берет. Бул өзгөчөлүк ири долбоорлордо колдонулат жана бир негизги Дженкинс сервери жана бир нече кул машиналары бар иш схемасын колдонот. Кул машиналарды ар кандай чөйрөдө долбоордун тестирлөөсүн уюштуруу зарыл болгон учурларда да колдонсо болот. Бул өзгөчөлүктөр Дженкинсти башка ушул сыяктуу долбоорлордон айырмалап турат.

GitLab менен тааныштыруу

Дженкинс согушу жана GitLab CI/CD
GitLab CI/CD DevOps инженерлери эң жаңы жана эң сүйүктүү куралдардын бири деп атоого болот. Бул акысыз, ачык булак куралы GitLab версиясын башкаруу тутумуна орнотулган. GitLab платформасынын жамааттык версиясы бар, ал репозиторийлерди башкарууну, көйгөйлөргө көз салуу куралдарын, кодду карап чыгууну уюштурууну жана документтерди түзүүгө багытталган механизмдерди колдойт. Компаниялар GitLab'ти жер-жерлерде орнотуп, аны Active Directory жана LDAP серверлери менен коопсуз колдонуучу авторизациясы жана аутентификациясы үчүн байланыштыра алышат.

бул жерде GitLab CI/CD мүмкүнчүлүктөрүн колдонуу менен CI/CD түтүктөрүн кантип курууну үйрөнүүгө жардам берген видео үйрөткүч.

GitLab CI/CD алгач өз алдынча долбоор катары чыгарылган, бирок 2015-жылы инструменттер топтому GitLab 8.0 менен интеграцияланган. Бир GitLab CI/CD сервери 25000 XNUMXден ашык колдонуучуну колдоого алат. Мындай серверлердин негизинде сиз жеткиликтүү системаларды түзө аласыз.

GitLab CI/CD жана негизги GitLab долбоору Ruby жана Go тилдеринде жазылган. Алар MIT лицензиясы боюнча бошотулган. GitLab CI/CD, CI/CD куралдарынын кадимки мүмкүнчүлүктөрүнөн тышкары, ошондой эле, мисалы, ишти пландаштырууга байланыштуу кошумча мүмкүнчүлүктөрдү колдойт.

GitLab CI/CDди долбооруңузга интеграциялоо абдан оңой. GitLab CI/CDди колдонууда долбоордун кодун иштетүү процесси этаптарга бөлүнөт, алардын ар бири белгилүү тартипте аткарылган бир нече тапшырмалардан турушу мүмкүн. Тапшырмаларды жакшылап жөнгө салууга болот.

Тапшырмаларды параллелдүү аткарууга болот. Этаптардын жана тапшырмалардын ырааттуулугун орноткондон кийин, CI/CD түтүгү иштөөгө даяр. Тапшырмалардын абалына көз салуу менен анын жүрүшүн көзөмөлдөй аласыз. Натыйжада, GitLab CI/CD колдонуу абдан ыңгайлуу, балким, башка ушул сыяктуу куралдарга караганда ыңгайлуураак.

GitLab CI/CD жана GitLab өзгөчөлүктөрү

GitLab CI/CD эң популярдуу DevOps куралдарынын бири. Долбоор жогорку сапаттагы документтери менен айырмаланат, анын мүмкүнчүлүктөрү жеңил жана колдонууга ыңгайлуу. Эгер сиз GitLab CI/CD менен жаңы болсоңуз, куралдын төмөнкү тизмеси андан эмнени күтө аларыңыз жөнүндө жалпы түшүнүк берет. Бул функциялардын көбү GitLab платформасынын өзүнө тиешелүү экенин белгилей кетүү керек, ага GitLab CI/CD интеграцияланган.

▍1. Популярдуулук

GitLab CI/CD кеңири таралган колдонууну тапкан салыштырмалуу жаңы курал. GitLab CI/CD акырындык менен автоматташтырылган программалык камсыздоону сыноо жана жайылтуу үчүн колдонулган өтө популярдуу CI/CD куралына айланды. Аны орнотуу оңой. Бул ошондой эле GitLab платформасына курулган акысыз CI/CD куралы.

▍2. GitLab баракчалары жана Jekyll колдоосу

Jekyll GitLab репозиторийлеринин негизинде сайттарды түзүү үчүн GitLab Pages системасында колдонула турган статикалык сайт генератору. Система баштапкы материалдарды алып, алардын негизинде даяр статикалык веб-сайтты түзөт. Сиз файлды түзөтүү менен мындай сайттардын көрүнүшүн жана мүмкүнчүлүктөрүн көзөмөлдөй аласыз _config.yml, Jekyll колдонгон.

▍3. Долбоорду пландаштыруу мүмкүнчүлүктөрү

Долбоордун этаптарын пландаштыруу жөндөмүнүн аркасында көйгөйлөрдү жана алардын топторун көзөмөлдөөнүн ыңгайлуулугу жогорулайт. Бул долбоорлор боюнча ишти уюштурууну башкарууга жана аларды белгилүү бир датага ишке ашырууну пландаштырууга мүмкүндүк берет.

▍4. CI жөө күлүктөрүн автоматтык түрдө масштабдоо

Конкреттүү тапшырмаларды аткаруу үчүн жооптуу жөө күлүктөрдү автоматтык түрдө масштабдоо аркасында сиз сервердин сыйымдуулугун ижарага алуу баасын олуттуу түрдө үнөмдөй аласыз. Бул абдан маанилүү, айрыкча долбоорлор параллелдүү сыналуучу чөйрөлөргө келгенде. Мындан тышкары, бул бир нече репозиторийлерден турган ири долбоорлор үчүн маанилүү.

▍5. Маселени көзөмөлдөө куралдары

GitLabдин күчтүү көйгөйлөрдү көзөмөлдөө мүмкүнчүлүктөрү платформаны колдонуу менен көптөгөн ачык булак долбоорлоруна алып келди. GitLab CI/CD сизге параллелдүү түрдө ар кандай код бутактарын сынап көрүүгө мүмкүндүк берет. Сыноонун натыйжалары системанын интерфейсинде ыңгайлуу талданышы мүмкүн. Бул GitLab CI/CDди Дженкинстен айырмалайт.

▍6. Репозиторийлерге кирүү мүмкүнчүлүгүн чектөө

GitLab платформасы репозиторийлерге кирүүнү чектөөнү колдойт. Мисалы, репозиторийдеги долбоордо кызматташкандарга алардын ролуна ылайык келген укуктар берилиши мүмкүн. Бул өзгөчө корпоративдик долбоорлорго тиешелүү.

▍7. Коомчулуктун активдүү колдоосу

GitLab айланасында активдүү коомчулук түзүлдү, ал бул платформаны жана анын куралдарын, атап айтканда GitLab CI/CDди өнүктүрүүгө салым кошот. GitLab CI/CD жана GitLab ортосундагы терең интеграция, башка нерселер менен катар, GitLab CI/CD менен иштөөдө пайда болгон суроолорго жооп табууга жардам берет.

▍8. Ар кандай версияларды башкаруу системалары менен иштөө үчүн колдоо

GitLab CI/CD бул GitLab репозиторийлеринде жайгаштырылган код менен гана эмес иштей турган система. Мисалы, кодду GitHub репозиторийинде сактоого болот, ал эми CI/CD түтүгүн GitLab CI/CD аркылуу GitLab негизинде уюштурууга болот.

Дженкинс жана GitLab CI/CD салыштыруу

Jenkins жана GitLab CI/CD абдан жакшы инструменттер болуп саналат, алардын ар бири CI/CD түтүкчөсүнүн нормалдуу иштешин камсыз кылууга жөндөмдүү. Бирок, аларды салыштырып көрсөк, алар көп жагынан окшош болгону менен, кандайдыр бир жагынан бири-биринен айырмаланат экен.

өзгөчөлүк
Jenkins
GitLab CI/CD

Ачык же жабык булак
Ачык булак
Ачык булак

жөндөө
Талап кылынат.
Бул GitLab платформасынын орнотулган өзгөчөлүгү болгондуктан, талап кылынбайт.

Уникалдуу өзгөчөлүктөрү
Плагинди колдоо.
Версияларды башкаруу системасына терең интеграция.

колдоо
Жок.
жеткиликтүү.

Орнотуу жана тарам
Эч кандай кыйынчылык жаратпайт
Эч кандай кыйынчылык жаратпайт

Системаны өз алдынча жайылтуу
Бул системаны колдонуунун жалгыз варианты.
Колдоого алынган.

CI/CD түтүктөрүн түзүү
Jenkins Pipeline тарабынан колдоого алынган жана колдонулган.
Колдоого алынган.

Колдонмонун аткаруу мониторинги
Жок.
жеткиликтүү.

экосистемасын
1000ден ашык плагиндер бар.
Система GitLab ичинде иштелип чыгууда.

API
Өркүндөтүлгөн API тутумун колдойт.
Долбоорлорго тереңирээк интеграциялоо үчүн API сунуштайт.

JavaScript колдоо
жеткиликтүү.
жеткиликтүү.

Башка куралдар менен интеграция
Башка куралдар жана платформалар (Slack, GitHub) менен интеграция колдоого алынат.
Үчүнчү тараптын системалары менен, атап айтканда GitHub жана Kubernetes менен интеграциялоо үчүн көптөгөн куралдар.

Коддун сапатын көзөмөлдөө
Колдоого алынат - SonarQube плагинин жана башка плагиндерди колдонуу.
Колдоого алынган.

Дженкинс менен GitLab CI/CD ортосундагы айырмачылыктар

Дженкинс менен GitLab CI/CDди сүрөттөп жана салыштырып, келгиле, ушул DevOps куралдарынын ортосундагы айырмачылыктарга токтололу. Бул айырмачылыктарды билүү бул куралдардын бирин экинчисинен артык көргөндөр жөнүндө түшүнүк берет.

  • GitLab CI/CD Git репозиторийлерин толук көзөмөлдөй алат. Биз репозиторий бутактарын башкаруу жана кээ бир башка өзгөчөлүктөрү жөнүндө сөз болуп жатат. Бирок Дженкинс, ал репозиторийлер менен иштей алса да, GitLab CI/CD сыяктуу аларды көзөмөлдөө деңгээлин камсыздай албайт.
  • Jenkins акысыз, ачык булак долбоору. Аны тандап алган адам өзү ачат. Жана GitLab CI/CD GitLab платформасына киргизилген, бул даяр чечим.
  • GitLab CI/CD долбоордун деңгээлинде иштеген өнүккөн маселелерди башкаруу куралдарын колдойт. Дженкинстин бул жагы азыраак өнүккөн.

Дженкинс жана GitLab CI/CD: күчтүү жана алсыз жактары

Эми сизде Дженкинс жана GitLab CI/CD жөнүндө кандайдыр бир түшүнүк бар. Эми, бул куралдар менен дагы жакшыраак таанышуу үчүн, алардын күчтүү жана алсыз жактарын карап көрөлү. Кайсы курал керектиги жөнүндө чечим кабыл алдыңыз деп ишенебиз. Бул бөлүм сизге өзүңүздү сынап көрүүгө мүмкүнчүлүк берет деп ишенем.

▍Женкинстин күчтүү жактары

  • Көп сандагы плагиндер.
  • Куралды орнотууну толук көзөмөлдөө.
  • Жөө күлүктөрдү оңой оңдоо.
  • Оңой түйүн орнотуу.
  • Оңой кодду жайылтуу.
  • Абдан жакшы эсеп башкаруу системасы.
  • Ийкемдүүлүк жана ар тараптуулук.
  • Ар кандай программалоо тилдерин колдоо.
  • Система интуитивдик деңгээлде түшүнүктүү.

▍Jenkins Weaknesses

  • Плагиндерди колдонууда кыйынчылыктар пайда болушу мүмкүн.
  • Дженкинсти чакан долбоорлордо колдонууда, аны өз алдынча орнотуу үчүн талап кылынган убакыт негизсиз чоң болушу мүмкүн.
  • CI/CD чынжырлары боюнча жалпы аналитикалык маалыматтын жоктугу.

▍GitLab CI/CD'нин күчтүү жактары

  • Docker менен жакшы интеграция.
  • Жөө күлүктөрдү оңой масштабдоо.
  • CI/CD куурунун этаптарына кирген тапшырмаларды параллелдүү аткаруу.
  • Тапшырма мамилелерди орнотууда багытталган ациклдик график моделин колдонуу.
  • Жөө күлүктөрдү параллелдүү аткаруу мүмкүнчүлүгүнөн улам масштабдуулуктун жогорку деңгээли.
  • Тапшырмаларды кошуу оңой.
  • Жөнөкөй чыр-чатакты чечүү.
  • Ишенимдүү коопсуздук системасы.

▍GitLab CI/CDнин алсыз жактары

  • Ар бир тапшырма үчүн артефакттарды сүрөттөп, жүктөө/түшүрүшүңүз керек.
  • Сиз чындыгында аларды бириктирүү алдында бутактарды бириктирүү натыйжаларын сынай албайсыз.
  • CI/CD түтүгүнүн этаптарын сүрөттөп жатып, айрым этаптарды айырмалоо азырынча мүмкүн эмес.

натыйжалары

Jenkins жана GitLab CI/CD экөө тең күчтүү жана алсыз жактары бар. Эмнени тандоо керек деген суроого жооп белгилүү бир долбоордун муктаждыктарына жана өзгөчөлүктөрүнө жараша болот. Бүгүн талкууланган CI/CD куралдарынын ар бири белгилүү бир өзгөчөлүктөрү менен айырмаланат, бирок бул куралдар бир эле маселени чечүү үчүн түзүлгөн. Ошол эле учурда, Дженкинс өз алдынча курал болуп саналат жана GitLab CI/CD код боюнча кызматташуу үчүн иштелип чыккан платформанын бир бөлүгү болуп саналат.

CI/CD тутумун тандоодо, анын мүмкүнчүлүктөрүнөн тышкары, аны менен байланышкан чыгымдарды жана долбоорду колдогон DevOps инженерлери эмне менен иштөөгө көнүшкөнүн эске алуу зарыл.

Кандай CI/CD куралдарын колдоносуз?

Дженкинс согушу жана GitLab CI/CD

Дженкинс согушу жана GitLab CI/CD

Source: www.habr.com

Комментарий кошуу