Лавлагаа: Тасралтгүй интеграцийн процесс хэрхэн ажилладаг

Өнөөдөр бид энэ нэр томъёоны түүхийг судалж, CI-г хэрэгжүүлэхэд тулгарч буй бэрхшээлүүдийн талаар ярилцаж, түүнтэй ажиллахад туслах хэд хэдэн алдартай хэрэгслийг өгөх болно.

Лавлагаа: Тасралтгүй интеграцийн процесс хэрхэн ажилладаг
/flickr/ Алтуг Каракоч / CC BY / Зургийг өөрчилсөн

Нэр томъёо

Тасралтгүй интеграци нь төсөл боловсруулах, кодын туршилтыг байнга хийдэг програм хөгжүүлэх арга юм.

Зорилго нь интеграцийн үйл явцыг урьдчилан таамаглах боломжтой болгох, болзошгүй алдаа, алдааг эрт үе шатанд илрүүлэх, ингэснээр тэдгээрийг засахад илүү их цаг зарцуулах явдал юм.

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

түүх

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

2000-аад оны эхээр Agile Alliance-ийг үүсгэн байгуулагчдын нэг нь тасралтгүй нэгтгэх арга зүйг сурталчилж эхэлсэн. Мартин Фаулер (Мартин Фаулер). Түүний CI-тэй хийсэн туршилтууд нь энэ чиглэлийн анхны програм хангамжийн хэрэгсэл болох CruiseControl-ийг бий болгосон. Уг хэрэгслийг Мартины хамтран зүтгэгч Мэттью Фоеммел бүтээжээ.

Хэрэгсэл дэх бүтээх мөчлөг нь кодын суурь дахь өөрчлөлтийг хувилбарын хяналтын системийг үе үе шалгадаг демон хэлбэрээр хэрэгждэг. Шийдлийг өнөөдөр татаж авч болно - энэ тараасан BSD-тэй төстэй лицензийн дагуу.

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

Өнөөдөр тасралтгүй интеграцийн практикийг олон төрлийн салбарын байгууллагууд ашиглаж байна. 2018 онд томоохон үүлэн үйлчилгээ үзүүлэгч үйлчилгээ, боловсрол, санхүүгийн салбарын компаниудын мэдээллийн технологийн мэргэжилтнүүдийн дунд судалгаа явуулжээ. Судалгаанд хамрагдсан зургаан мянган хүний ​​58 хувь нь CI арга хэрэгсэл, зарчмуудыг ажилдаа ашигладаг гэж хариулжээ.

Яаж энэ ажлыг хийдэг

Тасралтгүй интеграци нь хувилбарын хяналтын систем ба CI сервер гэсэн хоёр хэрэгсэл дээр суурилдаг. Сүүлийнх нь физик төхөөрөмж эсвэл үүлэн орчинд виртуал машин байж болно. Хөгжүүлэгчид шинэ кодыг өдөрт нэг буюу хэд хэдэн удаа байршуулдаг. CI сервер нь үүнийг бүх хамааралтай нь автоматаар хуулж, бүтээдэг. Дараа нь интеграцийн болон нэгжийн туршилтуудыг явуулдаг. Хэрэв туршилт амжилттай болвол CI систем кодыг байрлуулна.

Процессын ерөнхий диаграммыг дараах байдлаар илэрхийлж болно.

Лавлагаа: Тасралтгүй интеграцийн процесс хэрхэн ажилладаг

CI аргачлал нь хөгжүүлэгчдэд хэд хэдэн шаардлагыг тавьдаг.

  • Асуудлыг нэн даруй засаарай. Энэ зарчим нь CI-д хэт програмчлалаас ирсэн. Алдаа засах нь хөгжүүлэгчдийн хамгийн чухал ажил юм.
  • Процессуудыг автоматжуулах. Хөгжүүлэгчид болон менежерүүд интеграцийн үйл явцад саад тотгорыг байнга хайж, тэдгээрийг арилгах ёстой. Жишээлбэл, интеграцчлалд ихэвчлэн гацаа байдаг болж хувирдаг туршилт.
  • Чуулганыг аль болох олон удаа хийх. Багийн ажлыг синхрончлохын тулд өдөрт нэг удаа.

Хэрэгжүүлэхэд тулгарч буй хүндрэлүүд

Эхний асуудал бол үйл ажиллагааны өндөр зардал юм. Хэдийгээр компани нээлттэй CI хэрэгслүүдийг ашигладаг байсан ч (бид үүнийг дараа ярих болно) дэд бүтцийн дэмжлэгт мөнгө зарцуулах шаардлагатай болно. Гэсэн хэдий ч үүлэн технологи нь шийдэл байж болох юм.

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

Судалгаагаар [хуудас 14 нийтлэл], тасралтгүй нэгтгэх нь компанийн ажилчдын ачааллыг нэмэгдүүлдэг (наад зах нь). Тэд шинэ хэрэгсэл сурах ёстой бөгөөд хамт ажиллагсад нь сургалтанд үргэлж тусалдаггүй. Тиймээс, та замдаа шинэ хүрээ, үйлчилгээтэй харьцах хэрэгтэй.

Гурав дахь хүндрэл бол автоматжуулалттай холбоотой асуудал юм. Автомат туршилтанд хамрагдаагүй их хэмжээний хуучин кодтой байгууллагууд ийм асуудалтай тулгардаг. Энэ нь CI-ийг бүрэн хэрэгжүүлэхээс өмнө кодыг дахин бичихэд хүргэдэг.

Лавлагаа: Тасралтгүй интеграцийн процесс хэрхэн ажилладаг
/flickr/ тэдр / CC BY-SA

Хэн ашигладаг

Мэдээллийн технологийн аваргууд уг аргачлалын ач тусыг хамгийн түрүүнд үнэлдэг хүмүүсийн нэг байв. Google ашигладаг 2000-аад оны дунд үеэс тасралтгүй интеграцчилал. Хайлтын систем дэх саатлын асуудлыг шийдэхийн тулд CI-ийг хэрэгжүүлсэн. Тасралтгүй нэгтгэх нь асуудлыг хурдан илрүүлж, шийдвэрлэхэд тусалсан. Одоо CI-г мэдээллийн технологийн аварга компанийн бүх хэлтэс ашиглаж байна.

Тасралтгүй интеграци нь жижиг компаниудад тусалдаг бөгөөд CI хэрэгслийг санхүүгийн болон эрүүл мэндийн байгууллагууд ч ашигладаг. Жишээлбэл, Morningstar дээр тасралтгүй интеграцийн үйлчилгээ нь эмзэг байдлыг 70% хурдан засахад тусалсан. Philips Healthcare эмнэлгийн платформ нь туршилтын шинэчлэлтийн хурдыг хоёр дахин нэмэгдүүлэх боломжтой болсон.

Хэрэгсэл

CI-д зориулсан зарим алдартай хэрэгслүүд энд байна:

  • Jenkins нь хамгийн алдартай CI системүүдийн нэг юм. Энэ нь янз бүрийн VCS, үүлэн платформ болон бусад үйлчилгээтэй нэгтгэх мянга гаруй залгаасуудыг дэмждэг. Бид мөн Jenkins-ийг 1cloud: tool дээр ашигладаг Манай DevOps системд багтсан болно. Тэрээр туршилтанд зориулагдсан Гит салбарыг байнга шалгадаг.
  • Buildbot — өөрийн тасралтгүй интеграцийн процессыг бичихэд зориулсан python framework. Хэрэгслийн анхны тохиргоо нь нэлээд төвөгтэй боловч үүнийг тохируулах өргөн сонголтоор нөхдөг. Хүрээний давуу талуудын дунд хэрэглэгчид нөөцийн бага эрчимтэй байдлыг онцолж байна.
  • Консорциум CI нь Docker контейнер ашигладаг Pivotal сервер юм. Concourse CI нь ямар ч хэрэгсэл, хувилбарын хяналтын системтэй нэгдсэн. Систем нь ямар ч хэмжээтэй компанид ажиллахад тохиромжтой гэдгийг хөгжүүлэгчид тэмдэглэжээ.
  • Gitlab CI нь GitLab хувилбарын хяналтын системд суурилагдсан хэрэгсэл юм. Үйлчилгээ нь үүлэн дээр ажилладаг бөгөөд тохиргоонд YAML файлуудыг ашигладаг. Concourse шиг Gitlab CI хамаарна Өөр өөр процессуудыг бие биенээсээ тусгаарлахад тусалдаг докер контейнерууд.
  • Кодчилол нь GitHub, GitLab болон BitBucket-тай ажилладаг үүлэн CI сервер юм. Платформ нь удаан хугацааны анхны тохиргоо шаарддаггүй - стандарт урьдчилан суулгасан CI процессууд Codeship дээр байдаг. Жижиг (сард 100 хүртэл бүтээц) болон нээлттэй эхийн төслүүдийн хувьд Codeship-ийг үнэгүй ашиглах боломжтой.

Манай байгууллагын блогын материалууд:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх