JavaRush /Java Blog /Random-TL /Patuloy na integrasyon
Nikita Koliadin
Antas
Днепр

Patuloy na integrasyon

Nai-publish sa grupo
Pagbati, mga kasamahan! Pagod ka na bang pilitin ang iyong computer na patuloy na bumuo ng isang proyekto? Kung gayon ang artikulong ito ay para sa iyo! Patuloy na Pagsasama - 1Sa artikulong ito susubukan kong maikli at malinaw na ipakita ang materyal tungkol sa Continuous Integration (simula dito simpleng CI), sasagutin ko ang mga simpleng tanong gaya ng: "Ano ito?", "Bakit?" at bakit?" at magbibigay ako ng isang halimbawa ng isang pagsubok na proyekto. Ang artikulong ito ay inilaan para sa isang may karanasang user na hindi bababa sa pamilyar sa Build System: Maven , alam kung paano gamitin ang Git at alam kung paano itulak ang mga proyekto sa GitHub ;

"Ano ang Continuous Integration?"

Tingnan natin kung ano ang sinasabi sa atin ng Wiki tungkol sa tanong na ito : Ang tuluy-tuloy na pagsasama (CI, English Continuous Integration) ay isang kasanayan sa pagbuo ng software na binubuo ng pagsasama-sama ng mga gumaganang kopya sa isang karaniwang pangunahing sangay ng pag-unlad nang ilang beses sa isang araw at pagsasagawa ng mga madalas na awtomatikong pagbuo ng proyekto nang maaga. pagtuklas ng mga potensyal na depekto at solusyon sa mga problema sa pagsasama. Nakakatakot, hindi ba? Subukan nating ipaliwanag ang terminong ito sa mga simpleng salita: Ang tuluy-tuloy na pagsasama ay isang sistema para sa pagbuo at awtomatikong pagsubok ng software na may ilang partikular na config sa ilang partikular na makina upang makita ang mga bug at hindi pagkakatugma. Okay, walang problema, naisip namin ito, ngunit lumitaw ang sumusunod na lohikal na tanong:

Bakit kailangan natin ng CI?

Isipin na lang natin na nagsusulat ka ng isang malaking proyekto, at may pangangailangan na magdagdag/magbago ng functionality. Matagumpay mong naisulat ito, magsulat ng mga pagsubok, ilunsad ito, at ang lahat ay tila maayos, ngunit hindi. May mga sitwasyon kapag ang isang pagbabago sa isang functionality ay nakakaapekto sa isa pa, isa pa sa isang pangatlo, at iba pa, hanggang sa isang bug ay dumulas sa isang lugar at isang error ay nangyari. Oo, maaari mong sabihin na ito ay malamang na isang proyektong hindi maganda ang disenyo, at maaaring tama ka, ngunit paano kung hindi, at ang mga koneksyon na ito ay talagang dapat na naroroon? At paano kung sumusulat ka at lumilikha ng isang proyekto nang higit sa isang beses, na kadalasang nangyayari? Nagpatakbo ka ng mga pagsubok sa iyong bagong nakasulat na functionality, at nagbigay sila ng positibong resulta. Mabilis kang gumawa, pagkatapos ay itinulak sa kung saan at iniisip mo na kung paano ka hihithit ng tabako sa bahay habang umiinom ng mamahaling whisky, ngunit hindi. Naku, ang iyong kasamahan, o boss, kahit sino, ay nagsasabi na dahil sa iyong pangako ay nag-crash ang buong build. Sinabi mo nang may pagkataranta na ikaw ay isang programmer, nasubukan mo na ang lahat. Ngunit kadalasan ay walang oras upang patuloy na subukan ang buong proyekto, at sinubukan mo lamang ang iyong piraso ng code kung saan gumawa ka ng mga pagbabago, at hindi ang buong pagpupulong sa kabuuan. Dito tumulong ang CI. Sa bawat pagtulak sa anumang mapagkukunan, gagawin ng CI ang iyong proyekto mula sa simula, patakbuhin ang LAHAT ng pagsubok, at kung ang lahat ng pagsubok ay pumasa at ang proyekto ay binuo, ang build ay makakatanggap ng passing status . Kung hindi, magkakaroon ka ng pagkakataong bumalik at makita kung ano ang naging mali. Kaya, oras na upang tanungin ang tanong na "Bakit ito at hindi kung hindi?" at tingnan ang pagpapatupad ng software. Halimbawa Gaya ng nasabi ko na, ang artikulo ay inilaan para sa mga pamilyar sa Maven at Git. Kaya naman, umaasa ako na alam mo kung paano at ano ang ginagawa ko bukod sa pagse-set up ng CI, atbp.
  1. Una, gumawa tayo ng isang simpleng proyekto ng pagsubok ng Maven at lumikha ng isang klase dito na nagpi-print ng "Hello World!" at nagsasagawa ng ilang simpleng operasyon, at isulat natin ang pinakasimpleng pagsubok para sa klase na ito.

    Bilang resulta, dapat tayong magkaroon ng primitive na istraktura ng proyekto:

    Patuloy na Pagsasama - 2

    Ang lahat ng mga mapagkukunan ay nasa aking GitHub. Hindi mahalaga kung ano ang isusulat mo sa iyong Main at kung anong mga pagsubok ang magkakaroon.

  2. Itinutulak namin ang aming proyekto sa GitHub.

  3. Ngayon ay dumating ang masayang bahagi. Mula sa CI, pinili ko ang Travis CI dahil sa pagkakaroon at pagiging maaasahan nito. Ginagamit ni Travis ang GitHub para i-host ang source code nito.

    Kaya, pumunta sa website ng Travis CI at mag-log in sa pamamagitan ng GitHub. Sa profile ikinonekta namin ang aming proyekto:

    Patuloy na Pagsasama - 3

    Ang lahat ay handa na para sa pagpupulong sa bawat pagtulak, ngunit ang tanong ay PAANO mag-ipon?

  4. Bumalik kami sa aming minamahal na IDEA at gumawa ng .travis.yml file

    Ang file na ito ay responsable para sa Travis build config. Tingnan natin ang pinakasikat na setting:

    • Kailangan mong tukuyin ang wika kung saan ipinatupad ang proyekto;
    • Tukuyin ang landas sa mga direktoryo upang gawing mas mabilis ang pagbuo;
    • Tukuyin ang paraan ng mga abiso tungkol sa matagumpay o hindi matagumpay na pagpupulong.

    Ganito dapat ang hitsura ng karaniwang Travis config:

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    Nagdagdag ako ng mga komento, na may mga link, para sa kalinawan.

  5. Muli kaming nagtulak sa GitHub at buksan ang website ng Travis , piliin ang proyekto at subaybayan ang build. Bilang resulta, nakatanggap kami ng notification tungkol sa isang matagumpay na build:

    Patuloy na Pagsasama - 4 Patuloy na Pagsasama - 5

    Gayundin sa site na makikita namin ang isang badge na may matagumpay na pagpupulong ng aming proyekto, na maaari naming ipasok sa aming README.md:

    Patuloy na Pagsasama - 6
Mga kapaki-pakinabang na link: Maaaring may mga pagkakamali at pagkukulang sa teksto. Salamat sa iyong atensyon!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION