JavaRush /Java blogi /Random-UZ /Doimiy integratsiya
Nikita Koliadin
Daraja
Днепр

Doimiy integratsiya

Guruhda nashr etilgan
Assalomu alaykum, hamkasblar! Kompyuteringizni doimiy ravishda loyiha yaratishga majburlashdan charchadingizmi? Unda ushbu maqola siz uchun! Uzluksiz integratsiya - 1Ushbu maqolada men uzluksiz integratsiya (bundan buyon matnda CI) bo'yicha materialni qisqacha va aniq taqdim etishga harakat qilaman, men oddiy savollarga javob beraman: "Bu nima?", "Nima uchun?" va nima uchun?" va men test loyihasiga misol keltiraman. Ushbu maqola hech bo'lmaganda Build System: Maven bilan tanish bo'lgan tajribali foydalanuvchi uchun mo'ljallangan, Git-dan qanday foydalanishni biladi va loyihalarni GitHub -ga qanday surishni biladi ;

"Uzluksiz integratsiya nima?"

Keling, Wiki bu savol haqida bizga nima deyishini ko'rib chiqaylik : Uzluksiz integratsiya (CI, English Continuous Integration) - bu dasturiy ta'minotni ishlab chiqish amaliyoti bo'lib, u ishchi nusxalarni kuniga bir necha marta umumiy asosiy ishlab chiqish bo'limiga birlashtirish va loyihaning tez-tez avtomatlashtirilgan tuzilmalarini erta bosqichda amalga oshirishdan iborat. potentsial nuqsonlarni aniqlash va integratsiya muammolarini hal qilish. Qo'rqinchli, shunday emasmi? Keling, ushbu atamani oddiy so'zlar bilan tushuntirishga harakat qilaylik: Uzluksiz integratsiya - bu xatolar va nomuvofiqliklarni aniqlash uchun ma'lum bir mashinalarda ma'lum konfiguratsiyalar bilan dasturiy ta'minotni yaratish va avtomatlashtirilgan sinovdan o'tkazish tizimi. Yaxshi, muammo yo'q, biz buni tushundik, ammo quyidagi mantiqiy savol tug'iladi:

Nima uchun bizga CI kerak?

Tasavvur qilaylik, siz katta loyiha yozyapsiz va funksionallikni qo'shish/o'zgartirish zarurati bor. Siz uni muvaffaqiyatli yozasiz, testlarni yozasiz, ishga tushirasiz va hamma narsa yaxshi ko'rinadi, lekin yo'q. Bir funktsiyaning o'zgarishi boshqasiga, uchinchisiga boshqasiga ta'sir qiladigan va hokazo, xato biror joyga sirg'alib ketguncha va xatolik yuzaga keladigan holatlar mavjud. Ha, siz buni noto'g'ri ishlab chiqilgan loyiha deb ayta olasiz va siz haq bo'lishingiz mumkin, lekin agar bunday bo'lmasa va bu aloqalar haqiqatan ham bo'lishi kerakmi? Va agar siz loyihani bir necha marta yozsangiz va yaratsangiz nima bo'ladi, bu ko'pincha shunday bo'ladi? Siz yangi yozilgan funksiyalaringiz bo'yicha testlarni o'tkazdingiz va ular ijobiy natija berdi. Siz tezda va'da qildingiz, keyin biror joyga itarib yubordingiz va allaqachon uyda qimmat viski ichib, qanday qilib sigaret chekishingiz haqida o'ylayapsiz, lekin yo'q. Afsuski, sizning hamkasbingiz yoki xo'jayiningiz, kim bo'lishidan qat'i nazar, sizning majburiyatingiz tufayli butun qurilish buzildi, deydi. Siz hayron bo‘lib dasturchiman, deysiz, hammasini sinab ko‘rgansiz. Ammo ko'pincha butun loyihani doimiy ravishda sinab ko'rish uchun vaqt yo'q va siz butun yig'ilishni emas, balki faqat o'zingiz o'zgartirgan kod qismini sinab ko'rdingiz. Bu erda CI yordamimizga keladi. Har qanday resursga bosilganda, CI loyihangizni noldan quradi, HAMMA testlarni o'tkazadi va faqat barcha testlardan o'tib, loyiha qurilgan bo'lsa, qurish o'tish holatini oladi . Aks holda, siz qaytib kelish va nima noto'g'ri bo'lganini ko'rish imkoniyatiga ega bo'lasiz. Demak, “Nega bunday emas, boshqa yo‘l bilan emas?” degan savolni berish vaqti keldi. va dasturiy ta'minotni amalga oshirishni ko'rib chiqing. Misol Yuqorida aytganimdek, maqola Maven va Git bilan tanish bo'lganlar uchun mo'ljallangan. Shuning uchun, men CI va hokazolarni o'rnatishdan tashqari, qanday qilib va ​​nima qilishimni bilasiz deb umid qilaman.
  1. Birinchidan, oddiy Maven test loyihasini yaratamiz va unda "Salom Dunyo!" ni chop etadigan sinf yaratamiz. va oddiy amallarni bajaradi va keling, ushbu sinf uchun eng oddiy testni yozamiz.

    Natijada, biz ibtidoiy loyiha tuzilishiga ega bo'lishimiz kerak:

    Uzluksiz integratsiya - 2

    Barcha manbalar mening GitHub-da bo'ladi. Main-da nima yozishingiz va qanday testlar bo'lishi muhim emas.

  2. Biz loyihamizni GitHub-ga suramiz.

  3. Endi qiziqarli qism keladi. CI dan men Travis CI ni uning mavjudligi va ishonchliligi tufayli tanladim . Travis manba kodini joylashtirish uchun GitHub-dan foydalanadi.

    Shunday qilib, Travis CI veb-saytiga o'ting va GitHub orqali tizimga kiring. Profilda biz loyihamizni bog'laymiz:

    Uzluksiz integratsiya - 3

    Har bir surish bilan hamma narsa yig'ishga tayyor, ammo savol QANDAY yig'ish kerak?

  4. Biz sevimli IDEA ga qaytamiz va .travis.yml faylini yaratamiz

    Ushbu fayl Travis konfiguratsiyasi uchun javobgardir. Keling, eng mashhur sozlamalarni ko'rib chiqaylik:

    • Loyiha qaysi tilda amalga oshirilayotganini ko'rsatishingiz kerak ;
    • Qurilishni tezroq qilish uchun kataloglarga yo'lni belgilang ;
    • Muvaffaqiyatli yoki muvaffaqiyatsiz yig'ilish haqida xabar berish usulini belgilang .

    Oddiy Travis konfiguratsiyasi shunday bo'lishi kerak:

    # 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

    Aniqlik uchun havolalar bilan izohlar qo'shdim.

  5. Biz yana GitHub-ga bosamiz va Travis veb-saytini ochamiz , loyihani tanlaymiz va qurilishni kuzatamiz. Natijada biz muvaffaqiyatli qurish haqida bildirishnoma olamiz:

    Uzluksiz integratsiya - 4 Uzluksiz integratsiya - 5

    Shuningdek, saytda biz loyihamiz muvaffaqiyatli yig'ilganligi haqidagi nishonni ko'rishimiz mumkin, uni README.md saytimizga kiritishimiz mumkin:

    Uzluksiz integratsiya - 6
Foydali havolalar: Matnda xato va kamchiliklar bo'lishi mumkin. E'tiboringiz uchun rahmat!
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION