JavaRush /Блоги Java /Random-TG /Интегратсияи доимӣ
Nikita Koliadin
Сатҳи
Днепр

Интегратсияи доимӣ

Дар гурӯҳ нашр шудааст
Ассалому алайкум, ҳамкасблар! Аз маҷбур кардани компютери шумо барои сохтани лоиҳа пайваста хаста шудаед? Пас ин мақола барои шумост! Интегратсияи муттасил - 1Дар ин мақола ман кӯшиш мекунам, ки маводро дар бораи Интегратсияи муттасил (минбаъд танҳо CI) мухтасар ва возеҳ пешниҳод кунам, ман ба саволҳои оддӣ, ба мисли: "Ин чист?", "Чаро?" ва чаро?" ва ман як лоиҳаи санҷиширо мисол меорам. Ин мақола барои корбари ботаҷрибае пешбинӣ шудааст, ки ҳадди аққал бо Build System: Maven шинос аст , медонад, ки чӣ тавр истифода бурдани Git ва медонад, ки чӣ гуна лоиҳаҳоро ба GitHub интиқол диҳад ;

"Интегратсияи доимӣ чист?"

Биёед бубинем, ки Wiki дар бораи ин савол чӣ мегӯяд : Интегратсияи муттасил (CI, Integration Continuous English) як таҷрибаи таҳияи нармафзор аст, ки аз муттаҳид кардани нусхаҳои корӣ ба як шохаи асосии таҳия дар як рӯз чанд маротиба ва анҷом додани сохтани зуд-зуд автоматикунонидашудаи лоиҳа барои барвақттар иборат аст. ошкор кардани камбудиҳои эҳтимолӣ ва ҳалли мушкилоти интегратсия. Даҳшатнок, ҳамин тавр не? Биёед кӯшиш кунем, ки ин истилоҳро бо суханони оддӣ шарҳ диҳем: Интегратсияи доимӣ як системаи сохтан ва санҷиши автоматии нармафзор бо конфигуратсияҳои муайян дар мошинҳои муайян бо мақсади ошкор кардани хатогиҳо ва номувофиқатӣ мебошад. Хуб, ҳеҷ мушкиле нест, мо фаҳмидем, аммо саволи мантиқии зерин ба миён меояд:

Чаро ба мо CI лозим аст?

Биёед танҳо тасаввур кунем, ки шумо лоиҳаи калон менависед ва зарурати илова кардан/тағйир додани функсия вуҷуд дорад. Шумо онро бомуваффақият менависед, санҷишҳо нависед, онро оғоз кунед ва ҳама чиз хуб ба назар мерасад, аммо не. Ҳолатҳое вуҷуд доранд, ки тағирот дар як функсия ба дигараш, дигаре ба сеюмӣ таъсир мерасонад ва ғайра, то он даме, ки хато ба ҷое лағжад ва хатогӣ рух диҳад. Бале, шумо метавонед бигӯед, ки ин як лоиҳаи бади тарҳрезишуда аст ва шумо шояд дуруст бошед, аммо агар ин тавр набошад ва ин робитаҳо дар ҳақиқат бояд дар онҷо бошанд? Ва агар шумо зиёда аз як маротиба лоиҳа нависед ва эҷод кунед, ки аксар вақт чунин аст? Шумо дар бораи функсияҳои нав навиштаатон санҷишҳо гузаронидаед ва онҳо натиҷаи мусбӣ доданд. Шумо зуд ӯҳдадор шудед, пас ба ҷое тела додед ва аллакай дар бораи он фикр мекунед, ки чӣ гуна шумо дар хона ҳангоми нӯшидани виски гаронбаҳо сигор мекашед, аммо не. Афсӯс, ҳамтои шумо ё раҳбари шумо, новобаста аз кӣ, мегӯяд, ки аз сабаби ӯҳдадории шумо тамоми сохтмон вайрон шуд. Шумо бо ҳайрат мегӯед, ки шумо барномасоз ҳастед, ҳама чизро санҷидаед. Аммо аксар вақт барои озмоиши доимии тамоми лоиҳа вақт нест ва шумо танҳо порчаи рамзи худро санҷидаед, ки ба он тағирот ворид кардаед, на тамоми маҷлис. Дар ин ҷо CI ба кӯмаки мо меояд. Бо ҳар як фишор ба ҳама гуна манбаъ, CI лоиҳаи шуморо аз сифр месозад, ҲАМАИ санҷишҳоро иҷро мекунад ва танҳо агар ҳама санҷишҳо гузаранд ва лоиҳа сохта шавад, сохтмон мақоми гузаришро мегирад . Дар акси ҳол, шумо имкон доред, ки баргардед ва бубинед, ки чӣ хато кардааст. Пас, вақти он расидааст, ки саволи "Чаро ин тавр бошаду на дигар?" ва ба татбиқи нармафзор назар андозед. Мисол Тавре ки ман аллакай гуфтам, мақола барои онҳое пешбинӣ шудааст, ки бо Maven ва Git шиносанд. Аз ин рӯ, ман умедворам, ки шумо медонед, ки ман ба ғайр аз таъсиси CI ва ғайра чӣ гуна ва чӣ кор мекунам.
  1. Аввалан, биёед як лоиҳаи оддии санҷишии Maven эҷод кунем ва дар он синфе эҷод кунем, ки "Салом Ҷаҳон!"-ро чоп мекунад. ва баъзе амалиёти оддиро иҷро мекунад ва биёед соддатарин санҷишро барои ин синф нависед.

    Дар натиҷа, мо бояд сохтори ибтидоии лоиҳа дошта бошем:

    Интегратсияи муттасил - 2

    Ҳама манбаъҳо дар GitHub ман хоҳанд буд. Фарқ надорад, ки шумо дар Main худ чӣ менависед ва кадом санҷишҳо хоҳанд буд.

  2. Мо лоиҳаи худро ба GitHub тела медиҳем.

  3. Акнун қисми шавқовар меояд. Аз CI, ман Travis CI-ро аз сабаби мавҷудият ва эътимоднокии он интихоб кардам. Травис GitHub-ро барои ҷойгир кардани рамзи сарчашмаи худ истифода мебарад.

    Ҳамин тавр, ба вебсайти Travis CI равед ва тавассути GitHub ворид шавед. Дар профил мо лоиҳаи худро пайваст мекунем:

    Интегратсияи муттасил - 3

    Ҳама чиз бо ҳар як тела барои васлкунӣ омода аст, аммо савол ин аст, ки ЧӢ ТАВР васл кардан мумкин аст?

  4. Мо ба IDEA-и маҳбуби худ бармегардем ва файли .travis.yml эҷод мекунем

    Ин файл барои конфигуратсияи сохтани 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