JavaRush /Java блогы /Random-KK /Үздіксіз интеграция
Nikita Koliadin
Деңгей
Днепр

Үздіксіз интеграция

Топта жарияланған
Сәлеметсіздер ме, әріптестер! Компьютеріңізді үнемі жоба құруға мәжбүрлеуден шаршадыңыз ба? Онда бұл мақала сізге арналған! Үздіксіз интеграция – 1Бұл мақалада мен Үздіксіз интеграцияға (бұдан әрі жай CI) қатысты материалды қысқаша және анық беруге тырысамын, мен қарапайым сұрақтарға жауап беремін: «Бұл не?», «Неге?» және неге?» мен сынақ жобасына мысал келтіремін. Бұл мақала кем дегенде Build System: Maven- пен таныс, Git-ті қалай пайдалану керектігін және жобаларды GitHub -қа қалай жіберу керектігін білетін тәжірибелі пайдаланушыға арналған ;

«Үздіксіз интеграция дегеніміз не?»

Wiki бұл сұраққа қатысты не айтатынын көрейік : Үздіксіз интеграция (CI, English Continuous Integration) – жұмыс көшірмелерін күніне бірнеше рет ортақ негізгі әзірлеу тармағына біріктіруден және жобаның жиі автоматтандырылған құрастыруларын ертерек орындаудан тұратын бағдарламалық жасақтаманы әзірлеу тәжірибесі. ықтимал ақауларды анықтау және интеграциялық мәселелерді шешу. Қорқынышты, солай емес пе? Бұл терминді қарапайым сөздермен түсіндіруге тырысайық: Үздіксіз интеграция - қателер мен сәйкессіздіктерді анықтау үшін белгілі бір машиналарда белгілі бір конфигурациялары бар бағдарламалық жасақтаманы құру және автоматтандырылған тестілеу жүйесі. Жарайды, проблема жоқ, біз оны түсіндік, бірақ келесі логикалық сұрақ туындайды:

Бізге CI не үшін қажет?

Сіз үлкен жоба жазып жатырсыз деп елестетіп көрейік және функционалдылықты қосу/өзгерту қажет. Сіз оны сәтті жазасыз, сынақтар жазасыз, оны іске қосасыз және бәрі жақсы сияқты, бірақ жоқ. Қате бір жерге сырғып, қате пайда болғанша бір функционалдық өзгеріс екіншісіне, екіншісі үшіншіге әсер ететін және т.б. жағдайлар бар. Иә, бұл нашар жобаланған жоба деп айта аласыз және сіз дұрыс шығарсыз, бірақ олай болмаса ше және бұл байланыстар шынымен де сонда болуы керек пе? Ал егер сіз жобаны бірнеше рет жазып, жасап жатсаңыз ше? Сіз жаңадан жазылған функционалдылық бойынша сынақтарды өткіздіңіз және олар оң нәтиже берді. Сіз тез міндеттеме жасадыңыз, содан кейін бір жерге итермеледіңіз және үйде қымбат виски ішіп отырып, темекі шегуді ойлап жатырсыз, бірақ жоқ. Өкінішке орай, сіздің әріптесіңіз немесе бастық, кім болса да, сіздің міндеттемеңізге байланысты бүкіл құрылыс бұзылды дейді. Сіз бағдарламашымын деп таңдана айтасыз, бәрін сынап көрдіңіз. Бірақ көбінесе бүкіл жобаны үнемі сынауға уақыт болмайды және сіз тұтастай алғанда бүкіл жинақты емес, өзгертулер енгізген code бөлігін ғана тексердіңіз. Міне, CI бізге көмекке келеді. Кез келген ресурсқа әр басу арқылы CI жобаңызды нөлден жасайды, БАРЛЫҚ сынақтарды іске қосады және тек барлық сынақтар өтіп, жоба құрастырылған болса, құрастыру өту күйін алады . Әйтпесе, сізде қайтып оралу және ненің дұрыс емес екенін көру мүмкіндігі болады. Ендеше, «Неге бұлай емес, басқаша емес?» деген сұрақты қоятын кез келді. және бағдарламалық қамтамасыз етуді енгізуді қараңыз. Мысал Жоғарыда айтқанымдай, мақала Maven және Git-пен таныс адамдарға арналған. Сондықтан, сіз CI орнатудан басқа қалай және не істейтінімді білесіз деп үміттенемін.
  1. Алдымен қарапайым Maven сынақ жобасын жасайық және онда «Hello World!» басып шығаратын класс жасайық. және кейбір қарапайым операцияларды орындайды және осы сынып үшін ең қарапайым тестті жазайық.

    Нәтижесінде бізде қарабайыр жоба құрылымы болуы керек:

    Үздіксіз интеграция – 2

    Барлық дереккөздер менің GitHub-да болады. Негізгі бөлімде не жазғаныңыз және қандай сынақтар болатыны маңызды емес.

  2. Біз жобамызды GitHub-қа жібереміз.

  3. Енді қызықты бөлік келді. CI-ден мен Travis CI-ді оның қолжетімділігі мен сенімділігіне байланысты таңдадым . Травис бастапқы codeын орналастыру үшін GitHub пайдаланады.

    Сонымен, Travis CI веб-сайтына өтіп , GitHub арқылы кіріңіз. Профильде біз жобамызды байланыстырамыз:

    Үздіксіз интеграция – 3

    Әр итергенде бәрі құрастыруға дайын, бірақ мәселе ҚАЛАЙ құрастыру керек?

  4. Біз сүйікті IDEA-ға оралып, .travis.yml файлын жасаймыз

    Бұл файл Travis құрастыру конфигурациясына жауап береді. Ең танымал параметрді қарастырайық:

    • Жобаның қай тілде жүзеге асырылатынын көрсету керек ;
    • Құрылымды жылдамdate үшін каталогтарға жолды көрсетіңіз ;
    • Сәтті немесе сәтсіз құрастыру туралы хабарландыру әдісін көрсетіңіз .

    Әдеттегі Travis конфигурациясы келесідей болуы керек:

    # 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

    Түсінікті болу үшін сілтемелері бар пікірлерді қостым.

  5. Біз GitHub-қа қайтадан басамыз және Travis веб-сайтын ашамыз , жобаны таңдаймыз және құрастыруды бақылаймыз. Нәтижесінде біз сәтті құрастыру туралы хабарлама аламыз:

    Үздіксіз интеграция – 4 Үздіксіз интеграция – 5

    Сондай-ақ сайтта біз README.md сайтына енгізуге болатын жобамыздың сәтті құрастырылғаны бар төсбелгіні көре аламыз:

    Үздіксіз интеграция – 6
Пайдалы сілтемелер: Мәтінде қателер мен олқылықтар болуы мүмкін. Назарларыңызға рахмет!
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION