JavaRush /Blog Java /Random-MS /Integrasi berterusan
Nikita Koliadin
Tahap
Днепр

Integrasi berterusan

Diterbitkan dalam kumpulan
Salam, rakan sekerja! Bosan memaksa komputer anda untuk sentiasa membina projek? Maka artikel ini adalah untuk anda! Integrasi Berterusan - 1Dalam artikel ini saya akan cuba membentangkan secara ringkas dan jelas bahan berkenaan Integrasi Berterusan (selepas ini ringkasnya CI), saya akan menjawab soalan mudah seperti: "Apakah itu?", "Mengapa?" dan mengapa?" dan saya akan memberikan contoh projek ujian. Artikel ini ditujukan untuk pengguna berpengalaman yang sekurang-kurangnya biasa dengan Build System: Maven , tahu cara menggunakan Git dan tahu bagaimana untuk menolak projek ke GitHub ;

"Apakah itu Integrasi Berterusan?"

Mari lihat apa yang Wiki beritahu kita tentang soalan ini : Penyepaduan berterusan (CI, English Continuous Integration) ialah amalan pembangunan perisian yang terdiri daripada menggabungkan salinan kerja ke dalam cawangan pembangunan utama biasa beberapa kali sehari dan melaksanakan binaan automatik yang kerap bagi projek untuk awal. pengesanan potensi kecacatan dan penyelesaian kepada masalah integrasi. Menakutkan, bukan? Mari cuba terangkan istilah ini dalam perkataan mudah: Penyepaduan berterusan ialah sistem untuk membina dan ujian automatik perisian dengan konfigurasi tertentu pada mesin tertentu untuk mengesan pepijat dan ketidakserasian. Okey, tidak ada masalah, kami telah memikirkannya, tetapi soalan logik berikut timbul:

Mengapa kita memerlukan CI?

Cuba bayangkan anda sedang menulis projek yang besar, dan terdapat keperluan untuk menambah/menukar fungsi. Anda berjaya menulisnya, menulis ujian, melancarkannya, dan semuanya kelihatan baik-baik saja, tetapi tidak. Terdapat situasi apabila perubahan dalam satu fungsi mempengaruhi yang lain, satu lagi pada yang ketiga, dan seterusnya, sehingga pepijat tergelincir di suatu tempat dan ralat berlaku. Ya, anda boleh katakan ini kemungkinan besar projek yang direka dengan buruk, dan anda mungkin betul, tetapi bagaimana jika tidak, dan sambungan ini benar-benar sepatutnya ada? Dan bagaimana jika anda menulis dan mencipta projek lebih daripada sekali, yang selalunya berlaku? Anda menjalankan ujian pada kefungsian anda yang baru ditulis, dan mereka memberikan keputusan yang positif. Anda membuat komitmen yang cepat, kemudian menolak ke suatu tempat dan sudah memikirkan bagaimana anda akan menghisap cerut di rumah sambil minum wiski mahal, tetapi tidak. Malangnya, rakan sekerja atau bos anda, tidak kira siapa, mengatakan bahawa kerana komitmen anda, keseluruhan binaan ranap. Anda berkata dengan kebingungan bahawa anda seorang pengaturcara, anda telah menguji segala-galanya. Tetapi selalunya tiada masa untuk sentiasa menguji keseluruhan projek, dan anda hanya menguji sekeping kod anda yang anda buat perubahan, dan bukan keseluruhan pemasangan secara keseluruhan. Di sinilah CI datang untuk membantu kami. Dengan setiap menolak ke mana-mana sumber, CI akan membina projek anda dari awal, menjalankan SEMUA ujian dan hanya jika semua ujian lulus dan projek dibina, binaan akan menerima status lulus . Jika tidak, anda akan mempunyai peluang untuk membuat kemunculan semula dan melihat apa yang salah. Jadi, sudah tiba masanya untuk bertanya soalan "Mengapa ini dan tidak sebaliknya?" dan lihat pada pelaksanaan perisian. Contoh Seperti yang telah saya katakan, artikel itu ditujukan untuk mereka yang biasa dengan Maven dan Git. Oleh itu, saya berharap anda tahu cara dan perkara yang saya lakukan selain menyediakan CI, dsb.
  1. Mula-mula, mari buat projek ujian Maven yang mudah dan buat kelas di dalamnya yang mencetak "Hello World!" dan melakukan beberapa operasi mudah, dan mari tulis ujian paling mudah untuk kelas ini.

    Akibatnya, kita harus mempunyai struktur projek primitif:

    Integrasi Berterusan - 2

    Semua sumber akan berada di GitHub saya. Tidak kira apa yang anda tulis dalam Utama anda dan apa ujian yang akan ada.

  2. Kami menolak projek kami ke GitHub.

  3. Sekarang datang bahagian yang menyeronokkan. Daripada CI, saya memilih Travis CI kerana ketersediaan dan kebolehpercayaannya. Travis menggunakan GitHub untuk mengehoskan kod sumbernya.

    Jadi, pergi ke laman web Travis CI dan log masuk melalui GitHub. Dalam profil kami menyambungkan projek kami:

    Integrasi Berterusan - 3

    Segala-galanya sedia untuk dipasang dengan setiap tolak, tetapi persoalannya ialah BAGAIMANA untuk memasang?

  4. Kami kembali ke IDEA tercinta dan mencipta fail .travis.yml

    Fail ini bertanggungjawab untuk konfigurasi binaan Travis. Mari lihat tetapan yang paling popular:

    • Anda perlu menentukan bahasa di mana projek itu dilaksanakan;
    • Tentukan laluan ke direktori untuk menjadikan binaan lebih pantas;
    • Nyatakan kaedah pemberitahuan tentang pemasangan yang berjaya atau tidak berjaya.

    Inilah yang sepatutnya kelihatan seperti konfigurasi Travis biasa:

    # 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

    Saya telah menambah ulasan, dengan pautan, untuk kejelasan.

  5. Kami menolak sekali lagi ke GitHub dan membuka tapak web Travis , pilih projek dan pantau binaan. Akibatnya, kami menerima pemberitahuan tentang binaan yang berjaya:

    Integrasi Berterusan - 4 Integrasi Berterusan - 5

    Juga di tapak kami boleh melihat lencana dengan pemasangan projek kami yang berjaya, yang boleh kami masukkan ke dalam README.md kami:

    Integrasi Berterusan - 6
Pautan berguna: Mungkin terdapat ralat dan ketinggalan dalam teks. Terima kasih kerana memberi perhatian!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION