Sanggunian: kung paano gumagana ang proseso ng Patuloy na Pagsasama

Ngayon ay titingnan natin ang kasaysayan ng termino, tatalakayin ang mga kahirapan sa pagpapatupad ng CI, at magbibigay ng ilang mga sikat na tool na makakatulong sa iyong magtrabaho dito.

Sanggunian: kung paano gumagana ang proseso ng Patuloy na Pagsasama
/flickr/ Altug Karakoc / CC BY / Binago ang larawan

termino

Ang Continuous Integration ay isang diskarte sa pagbuo ng application na nagsasangkot ng madalas na pagbuo ng proyekto at pagsubok ng code.

Ang layunin ay gawing predictable ang proseso ng pagsasama at matukoy ang mga potensyal na bug at error sa maagang yugto, upang magkaroon ng mas maraming oras upang ayusin ang mga ito.

Ang terminong Continuous Integration ay unang lumitaw noong 1991. Ipinakilala ito ng lumikha ng wikang UML Grady Butch (Grady Booch). Ipinakilala ng inhinyero ang konsepto ng CI bilang bahagi ng kanyang sariling kasanayan sa pag-unlad - Paraan ng Booch. Nagpahiwatig ito ng incremental na pagpipino ng arkitektura kapag nagdidisenyo ng mga object-oriented system. Hindi inilarawan ni Gradi ang anumang mga kinakailangan para sa patuloy na pagsasama. Ngunit mamaya sa kanyang aklat "Pagsusuri at Disenyo na Nakatuon sa Bagay na may Mga Application"Sinabi niya na ang layunin ng pamamaraan ay upang mapabilis ang paglabas ng "mga panloob na paglabas."

Kuwento

Noong 1996, ang CI ay pinagtibay ng mga tagalikha ng pamamaraan matinding programming (XP) - Kent Beck (Kent Beck) at Ron Jeffries (Ron Jeffries). Ang patuloy na pagsasama ay naging isa sa labindalawang pangunahing prinsipyo ng kanilang diskarte. Nilinaw ng mga tagapagtatag ng XP ang mga kinakailangan para sa pamamaraan ng CI at binanggit ang pangangailangang itayo ang proyekto nang maraming beses sa isang araw.

Noong unang bahagi ng 2000s, ang isa sa mga tagapagtatag ng Agile Alliance ay nagsimulang isulong ang patuloy na pamamaraan ng pagsasama. Martin Fowler (Martin Fowler). Ang kanyang mga eksperimento sa CI ay humantong sa unang software tool sa lugar na ito - CruiseControl. Ang utility ay nilikha ng kasamahan ni Martin, si Matthew Foemmel.

Ang build cycle sa tool ay ipinapatupad bilang isang daemon na pana-panahong sumusuri sa version control system para sa mga pagbabago sa code base. Ang solusyon ay maaaring ma-download ngayon - ito ipinamahagi ni sa ilalim ng lisensyang tulad ng BSD.

Sa pagdating ng software para sa CI, parami nang parami ang mga kumpanyang nagsimulang gumamit ng pagsasanay. Ayon sa Forrester research [pahina 5 ulat], noong 2009, 86% ng limampung kumpanya ng teknolohiya na sinuri ang gumamit o nagpatupad ng mga pamamaraan ng CI.

Ngayon, ang pagsasagawa ng Continuous Integration ay ginagamit ng mga organisasyon mula sa iba't ibang uri ng industriya. Noong 2018, nagsagawa ng survey ang isang malaking cloud provider sa mga IT specialist mula sa mga kumpanya sa sektor ng serbisyo, edukasyon at pananalapi. Sa anim na libong respondent, 58% ang nagsabi na gumagamit sila ng mga tool at prinsipyo ng CI sa kanilang trabaho.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Ang patuloy na pagsasama ay batay sa dalawang tool: isang version control system at isang CI server. Ang huli ay maaaring alinman sa isang pisikal na device o isang virtual machine sa isang cloud environment. Nag-a-upload ang mga developer ng bagong code nang isa o higit pang beses sa isang araw. Awtomatikong kinokopya ito ng CI server kasama ang lahat ng mga dependency at itinatayo ito. Pagkatapos, nagpapatakbo ito ng integration at mga unit test. Kung matagumpay na pumasa ang mga pagsubok, i-deploy ng CI system ang code.

Ang pangkalahatang diagram ng proseso ay maaaring ilarawan bilang mga sumusunod:

Sanggunian: kung paano gumagana ang proseso ng Patuloy na Pagsasama

Ang pamamaraan ng CI ay gumagawa ng ilang kinakailangan para sa mga developer:

  • Iwasto kaagad ang mga problema. Ang prinsipyong ito ay dumating sa CI mula sa matinding programming. Ang pag-aayos ng mga bug ay ang pinakamataas na priyoridad ng mga developer.
  • I-automate ang mga proseso. Dapat palaging maghanap ang mga developer at manager ng mga bottleneck sa proseso ng pagsasama at alisin ang mga ito. Halimbawa, madalas mayroong bottleneck sa pagsasama lumiliko ito pagsubok.
  • Magsagawa ng mga pagtitipon nang madalas hangga't maaari. Isang beses sa isang araw para i-synchronize ang trabaho ng team.

Mga kahirapan sa pagpapatupad

Ang unang problema ay mataas na gastos sa pagpapatakbo. Kahit na ang isang kumpanya ay gumagamit ng bukas na mga tool sa CI (na pag-uusapan natin mamaya), kakailanganin pa rin itong gumastos ng pera sa suporta sa imprastraktura. Gayunpaman, maaaring ang mga teknolohiya ng ulap ang solusyon.

Pinapasimple nila ang pagpupulong ng iba't ibang sukat na mga pagsasaayos ng computer. Dagdag pa ng kumpanya magbayad para lamang sa mga mapagkukunang ginamit, na tumutulong sa pagtitipid sa imprastraktura.

Ayon sa mga survey [pahina 14 Artikulo], ang tuluy-tuloy na pagsasama ay nagpapataas ng load sa mga empleyado ng kumpanya (hindi bababa sa una). Kailangan nilang matuto ng mga bagong tool, at hindi palaging tumutulong ang mga kasamahan sa pagsasanay. Samakatuwid, kailangan mong harapin ang mga bagong framework at serbisyo habang naglalakbay.

Ang pangatlong kahirapan ay ang mga problema sa automation. Nahaharap sa problemang ito ang mga organisasyong may malaking halaga ng legacy code na hindi saklaw ng mga automated na pagsubok. Ito ay humahantong sa katotohanan na ang code ay muling isinulat bago ang buong pagpapatupad ng CI.

Sanggunian: kung paano gumagana ang proseso ng Patuloy na Pagsasama
/flickr/ theilr / CC BY-SA

Sino ang gumagamit

Ang mga higanteng IT ay kabilang sa mga unang nagpahalaga sa mga benepisyo ng pamamaraan. Google gumagamit patuloy na pagsasama mula noong kalagitnaan ng 2000s. Ipinatupad ang CI upang malutas ang problema ng mga pagkaantala sa search engine. Ang patuloy na pagsasama ay nakatulong upang mabilis na matukoy at malutas ang mga problema. Ngayon ang CI ay ginagamit ng lahat ng departamento ng IT giant.

Ang patuloy na pagsasama ay nakakatulong din sa maliliit na kumpanya, at ang mga tool ng CI ay ginagamit din ng mga organisasyon sa pananalapi at pangangalaga sa kalusugan. Halimbawa, sa Morningstar, ang tuluy-tuloy na mga serbisyo sa pagsasama ay nakatulong sa pag-tap ng mga kahinaan nang 70% na mas mabilis. At nagawang doblehin ng medikal na platform ng Philips Healthcare ang bilis ng mga update sa pagsubok.

Tools

Narito ang ilang sikat na tool para sa CI:

  • Jenkins ay isa sa pinakasikat na CI system. Sinusuportahan nito ang higit sa isang libong plugin para sa pagsasama sa iba't ibang VCS, cloud platform at iba pang serbisyo. Ginagamit din namin ang Jenkins sa 1cloud: tool kasama sa aming DevOps system. Regular niyang tinitingnan ang sangay ng Git na inilaan para sa pagsubok.
  • Buildbot β€” isang python framework para sa pagsulat ng sarili mong patuloy na proseso ng pagsasama. Ang paunang pag-setup ng tool ay medyo kumplikado, ngunit ito ay nabayaran ng malawak na mga pagpipilian sa pagpapasadya. Kabilang sa mga pakinabang ng balangkas, itinatampok ng mga user ang mababang lakas ng mapagkukunan nito.
  • Kaganapan CI ay isang server mula sa Pivotal na gumagamit ng mga container ng Docker. Ang Concourse CI ay isinasama sa anumang mga tool at version control system. Napansin ng mga developer na ang sistema ay angkop para sa trabaho sa mga kumpanya ng anumang laki.
  • Gitlab CI ay isang tool na binuo sa GitLab version control system. Ang serbisyo ay tumatakbo sa cloud at gumagamit ng YAML file para sa configuration. Tulad ng Concourse, Gitlab CI nalalapat Mga lalagyan ng Docker na tumutulong na ihiwalay ang iba't ibang proseso sa isa't isa.
  • Codeship ay isang cloud CI server na gumagana sa GitHub, GitLab at BitBucket. Ang platform ay hindi nangangailangan ng mahabang paunang pag-setup - ang mga karaniwang pre-install na proseso ng CI ay available sa Codeship. Para sa maliliit (hanggang 100 build bawat buwan) at open source na mga proyekto, available nang libre ang Codeship.

Mga materyales mula sa aming corporate blog:

Pinagmulan: www.habr.com

Magdagdag ng komento