Шилтеме: Үзгүлтүксүз интеграция процесси кантип иштейт

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

Шилтеме: Үзгүлтүксүз интеграция процесси кантип иштейт
/flickr/ Алтуг Каракоч / CC BY / Сүрөт өзгөртүлдү

мөөнөт

Үзгүлтүксүз интеграция - бул тез-тез долбоорлорду түзүүнү жана кодду сыноону камтыган тиркемени иштеп чыгууга болгон мамиле.

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

Үзгүлтүксүз интеграция термини биринчи жолу 1991-жылы пайда болгон. Бул UML тилинин жаратуучусу тарабынан киргизилген Греди Батч (Греди Буч). Инженер CI концепциясын өзүнүн өнүгүү практикасынын бир бөлүгү катары киргизген - Буч ыкмасы. Бул объектиге багытталган системаларды долбоорлоодо архитектуранын кадам сайын өркүндөтүлүшүн билдирет. Gradi үзгүлтүксүз интеграция үчүн эч кандай талаптарды сүрөттөгөн эмес. Бирок кийинчерээк анын китебинде "Тиркемелер менен объектке багытталган талдоо жана дизайн"Ал методологиянын максаты "ички релиздерди" чыгарууну тездетүү экенин айтты.

История

1996-жылы CI методологиянын жаратуучулары тарабынан кабыл алынган экстремалдык программалоо (XP) - Кент Бек (Кент Бек) жана Рон Джеффрис (Рон Джеффрис). Үзгүлтүксүз интеграция алардын мамилесинин он эки негизги принциптеринин бири болуп калды. XP негиздөөчүлөрү CI методологиясына коюлган талаптарды тактап, долбоорду күнүнө бир нече жолу куруу зарылдыгын белгилешти.

2000-жылдардын башында Agile Альянстын негиздөөчүлөрүнүн бири үзгүлтүксүз интеграциялык методологияны жайылта баштаган. Мартин Фаулер (Мартин Фаулер). Анын CI менен жүргүзгөн эксперименттери бул чөйрөдөгү биринчи программалык куралга - CruiseControlге алып келди. Пайдалуу программаны Мартиндин кесиптеши Мэтью Фоеммел жараткан.

Куралдагы куруу цикли мезгил-мезгили менен версияны башкаруу системасын код базасындагы өзгөрүүлөрдү текшерип турган демон катары ишке ашырылат. Чечимди бүгүн жүктөп алса болот - бул жайылуу BSD сыяктуу лицензия боюнча.

CI үчүн программалык камсыздоонун пайда болушу менен, барган сайын көп компаниялар практиканы кабыл ала башташты. Форрестердин изилдөөсүнө ылайык [5-бет билдирүү], 2009-жылы сурамжылоого катышкан элүү технологиялык компаниялардын 86% CI ыкмаларын колдонгон же ишке ашырган.

Бүгүнкү күндө Үзгүлтүксүз Интеграция тажрыйбасы ар түрдүү тармактардагы уюмдар тарабынан колдонулат. 2018-жылы ири булут провайдери кызматтар, билим берүү жана финансы секторлорундагы компаниялардын IT адистеринин арасында сурамжылоо жүргүзгөн. Алты миң респонденттин 58%ы өз ишинде CI инструменттерин жана принциптерин колдоноорун айтышкан.

Бул кандай иштейт

Үзгүлтүксүз интеграция эки куралга негизделген: версияны башкаруу системасы жана CI сервери. Акыркысы физикалык түзүлүш же булут чөйрөсүндөгү виртуалдык машина болушу мүмкүн. Иштеп чыгуучулар жаңы кодду күнүнө бир же бир нече жолу жүктөшөт. CI сервери аны бардык көз карандылыктар менен автоматтык түрдө көчүрөт жана аны түзөт. Андан кийин, ал интеграциялоону жана бирдик тесттерин жүргүзөт. Эгер сыноолор ийгиликтүү өтсө, CI системасы кодду жайылтат.

Процесстин жалпы схемасы төмөнкүчө чагылдырылышы мүмкүн:

Шилтеме: Үзгүлтүксүз интеграция процесси кантип иштейт

CI методологиясы иштеп чыгуучуларга бир катар талаптарды коёт:

  • Проблемаларды дароо оңдоңуз. Бул принцип CIге экстремалдык программалоодон келген. Мүчүлүштүктөрдү оңдоо - иштеп чыгуучулардын эң башкы приоритети.
  • Процесстерди автоматташтыруу. Иштеп чыгуучулар жана менеджерлер интеграция процессиндеги тоскоолдуктарды тынымсыз издеп, аларды жок кылышы керек. Маселен, интеграцияда көп учурда тоскоолдуктар болот чыгат тестирлөө.
  • Мүмкүн болушунча тез-тез чогулуштарды өткөрүңүз. Команданын ишин синхрондоштуруу үчүн күнүнө бир жолу.

Ишке ашыруудагы кыйынчылыктар

Биринчи көйгөй - жогорку операциялык чыгымдар. Компания ачык CI инструменттерин колдонсо да (бул тууралуу кийинчерээк сүйлөшөбүз), ал дагы эле инфраструктураны колдоого акча коротууга туура келет. Бирок, булут технологиялары чечим болушу мүмкүн.

Алар ар кандай масштабдагы компьютер конфигурацияларын чогултууну жөнөкөйлөштүрөт. Компаниянын плюс төлөө инфраструктураны үнөмдөөгө жардам берген ресурстар үчүн гана.

Сурамжылоолор боюнча [14-бет макалалар], үзгүлтүксүз интеграция компаниянын кызматкерлерине жүктү жогорулатат (жок дегенде алгач). Алар жаңы инструменттерди өздөштүрүүгө туура келет, ал эми кесиптештери окутууга дайыма эле жардам бере беришпейт. Ошондуктан, сиз учуп жаңы алкактар ​​жана кызматтар менен күрөшүүгө туура келет.

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

Шилтеме: Үзгүлтүксүз интеграция процесси кантип иштейт
/flickr/ алар / CC BY-SA

Ким колдонот

IT гиганттары методологиянын артыкчылыктарын биринчилерден болуп баалашты. Гугл колдонуу 2000-жылдардын ортосунан бери үзгүлтүксүз интеграция. CI издөө системасындагы кечигүү маселесин чечүү үчүн ишке ашырылган. Үзгүлтүксүз интеграция көйгөйлөрдү тез аныктоого жана чечүүгө жардам берди. Азыр CI IT гигантынын бардык бөлүмдөрү тарабынан колдонулат.

Үзгүлтүксүз интеграция чакан компанияларга да жардам берет жана CI инструменттери каржы жана саламаттыкты сактоо уюмдары тарабынан да колдонулат. Мисалы, Morningstarда үзгүлтүксүз интеграция кызматтары аялуу жерлерди 70% тезирээк оңдоого жардам берди. Жана Philips Healthcare медициналык платформасы тестирлөө жаңыртууларынын ылдамдыгын эки эсеге көбөйтө алды.

аспаптар

Бул жерде CI үчүн кээ бир популярдуу куралдар бар:

  • Jenkins таанымал CI системаларынын бири болуп саналат. Бул ар кандай VCS, булут платформалары жана башка кызматтар менен интеграциялоо үчүн миңден ашык плагиндерди колдойт. Биз Дженкинсти 1cloud: куралында да колдонобуз биздин DevOps тутумубузга киргизилген. Ал дайыма тестирлөө үчүн арналган Гит бутагын текшерип турат.
  • Buildbot — өзүңүздүн үзгүлтүксүз интеграция процесстериңизди жазуу үчүн python алкагы. Куралдын баштапкы орнотуусу абдан татаал, бирок бул кеңири ыңгайлаштыруу параметрлери менен толукталат. Алкактын артыкчылыктарынын арасында колдонуучулар анын аз ресурстун интенсивдүүлүгүн белгилешет.
  • Конкурс CI Docker контейнерлерин колдонгон Pivotal сервери. Concourse CI ар кандай куралдар жана версияларды башкаруу системалары менен интеграцияланат. Иштеп чыгуучулар система ар кандай өлчөмдөгү компанияларда иштөө үчүн ылайыктуу экенин белгилешет.
  • Gitlab CI GitLab версиясын башкаруу системасына орнотулган курал. Кызмат булутта иштейт жана конфигурациялоо үчүн YAML файлдарын колдонот. Concourse сыяктуу, Gitlab CI колдонулат Ар кандай процесстерди бири-биринен обочолонтууга жардам берген докер контейнерлери.
  • Codeship GitHub, GitLab жана BitBucket менен иштеген булут CI сервери. Платформа узак баштапкы орнотууну талап кылбайт - стандарттуу алдын ала орнотулган CI процесстери Codeshipте жеткиликтүү. Чакан (айына 100 курууга чейин) жана ачык булак долбоорлору үчүн Codeship акысыз.

Биздин корпоративдик блогубуздагы материалдар:

Source: www.habr.com

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