JavaRush /Blog Java /Random-MS /Kami sedang menulis projek. Tambah SpringBoot dan sediaka...

Kami sedang menulis projek. Tambah SpringBoot dan sediakan proses CI - "Projek Java dari A hingga Z"

Diterbitkan dalam kumpulan
Artikel daripada siri tentang mencipta projek Java (pautan ke bahan lain ada di penghujung). Matlamatnya adalah untuk menganalisis teknologi utama, hasilnya menulis bot telegram. Salam sejahtera, pembaca budiman. Seperti yang diterangkan di bahagian sebelumnya , kami akan pergi mengikut rancangan. Kami telah pun mencipta projek dan sudah tiba masanya untuk mengisinya dengan kod. Kini semua isu akan ditambah sebagai komitmen berasingan. Saya akan menerangkan semua yang perlu di sini. Jika saya terlepas sesuatu atau tidak menerangkannya dengan cukup jelas, tanya dalam ulasan, saya akan cuba menjawab."Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 1

Kami menulis JRTB-0M

Dalam tugasan ini kita perlu menambah rangka kerja SpringBoot kosong untuk kerja masa hadapan. Kami akan melakukan ini dengan cara yang sama seperti yang kami lakukan dalam artikel tentang SpringBoot + Flyway . Muat turun projek , buka dalam IDEA dan buat cawangan baharu yang dipanggil JRTB-0 . Saya menerangkan cara melakukan ini melalui idea di sini . Ini akan memudahkan kami menjejaki kerja pada masa hadapan. "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 2Adakah anda sudah tahu bahawa tiada lagi cawangan induk ? Kini ia dipanggil neutral - utama . Jadi kita biasakan diri. Walaupun, sejujurnya, kami sentiasa boleh menamakannya semula kepada tuan. Kami pergi ke Spring Initializr dan mencipta rangka kerja SpringBoot untuk bot kami. "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 3Pada masa ini, versi termuda pecut but yang ditawarkan ialah 2.3.7, mari kita ambil. Saya akan menerangkan tetapan berikut secara berasingan:
  • Projek: Projek Maven - kami telah membincangkan Maven di sini dan di sini . Oleh itu, saya juga akan menerangkan hanya perkara yang tidak saya dedahkan dalam artikel sebelumnya. Sekiranya terdapat "bintik-bintik putih", sudah tentu)
  • Bahasa: Java - semuanya jelas di sini. Jika ada keinginan, kita boleh menulis semula perkara ini dalam Kotlin. Saya baru sahaja membeli sendiri buku Kotlin in Action, kita akan belajar Kotlin bersama-sama))
  • Spring Boot: 2.3.7 - kami mengambil versi terkecil yang ditawarkan untuk menghapuskan sebarang masalah. Ini sudah menjadi versi but sepenuhnya moden.
Metadata Projek:
  • Kumpulan: com.github.javarushcommunity - di sini kami memilih domain tempat kumpulan repositori kami dihoskan.
  • Artifak: javarush-telegrambot - penerangan maksimum projek.
  • Nama: Javarush TelegramBot - kami akan menulisnya sepenuhnya di sini.
  • Penerangan: Bot Telegram untuk Javarush dari komuniti ke komuniti - di sini ialah penerangan yang lebih terperinci tentang projek itu.
  • Nama pakej: com.github.javarushcommunity.jrtb - di sini anda sudah boleh menggunakan singkatan untuk nama projek. Sekarang projek akan bermula dengan pakej ini. Mengapa begitu ramai? Supaya apabila kita menambah projek lain pada classpath, mereka akan berada dalam pakej yang berbeza. Masing-masing dengan cara tersendiri. Ini penting untuk mengekalkan prinsip OOP.
  • Pembungkusan: Jar adalah standard kami)
  • Java: 11 - kami akan selangkah ke hadapan. Saya tidak fikir saya akan menggunakan inovasi selepas Java kelapan, tetapi biarlah. Dia tidak meminta makanan)... keputusan ini akan memberi kita telur Paskah kecil pada masa hadapan)
Kami tidak akan menambah sebarang kebergantungan buat masa ini. Kami tidak memerlukan ini untuk tugas ini. Setelah mengisi semua ini, kami dapat (di sini adalah pautan ke projek yang dijana): "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 4Setelah mengisi, klik JANA dan tambah semua dalaman dalam arkib ke projek kami. "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 5Tambahkan fail pada projek. Akibatnya, kami mempunyai permohonan. Untuk menyemak sama ada ia dipasang sama sekali, pergi ke terminal dan tulis: $ mvn clean package"Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 6 Jika anda mempunyai yang sama seperti dari sini, semuanya ok: projek telah dipasang, dan jarnik sudah sedia dalam folder sasaran. Pada ketika ini, tugasan dalam huraian sudah sedia. Ia mudah, bukan? Oleh itu, kami komited dan menolak ke cawangan kami: "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 7Kami menambah nama tugas kami pada permulaan perihalan komit, supaya kemudiannya ia akan menjadi jelas dalam rangka kerja tugasan yang telah dilakukan. Klik Komit dan Tekan ... "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 8Sekali lagi kami menyemak dan menyemak perkara yang sebenarnya kami mahu tolak daripada repositori tempatan ke repositori jauh dan, memastikan semuanya ok, klik Tekan . Apakah langkah seterusnya? Mengikut semua peraturan (yang boleh dibaca dalam artikel ini , di bahagian tentang aliran GitHub), anda perlu membuat permintaan tarik untuk cawangan utama dan menunggu seseorang daripada pasukan menyemak kod tersebut. Memandangkan saya bersendirian, saya secara rasmi akan membuat permintaan tarik dan menyemak semula semuanya. Saya pergi ke halaman repositori, dan Github sudah mengetahui bahawa kami mempunyai tambahan dan tawaran untuk membuat permintaan tarik: "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 9Tiada halangan untuk patriot (c) - kami menciptanya, seperti yang dicadangkan. Kami menetapkan label yang sama, projek seperti pada tugas yang sedang kami kerjakan dan isikan penerangan: "Projek Java dari A hingga Z": Kami sedang menulis projek.  Tambah SpringBoot dan konfigurasikan proses CI - 10Klik Buat permintaan tarik .

Menyediakan proses CI

Kami pergi ke permintaan tarik yang dibuat: di bawah kami melihat bahawa kami tidak mempunyai Integrasi Berterusan yang dikonfigurasikan (selepas ini - CI). "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 11Nah, ia tidak dikonfigurasikan, jadi apa? Mengapa kita memerlukan CI sama sekali? Apa itu CI? Ini adalah lebih kurang senarai soalan yang patut membimbangkan kita pada masa ini. Secara amnya, CI ialah proses berterusan untuk menggabungkan kod ke dalam pangkalan kod biasa dan menjalankan binaan projek sebelum itu. Binaan yang dipanggil (daripada binaan Inggeris). Setiap kali kami membina projek, kami memastikan projek itu telah disusun, semua ujiannya telah lulus dengan jayanya, ditambah selepas membina projek, anda boleh menambah autotest daripada penguji kepada CI yang dijalankan pada binaan khusus ini. Dengan cara ini, kami menjadi lebih yakin bahawa perubahan baharu berfungsi seperti yang kami jangkakan dan tidak memecahkan fungsi sebelumnya. CI juga bagus kerana ia bermula secara automatik selepas mengemas kini pangkalan kod. Iaitu, kami menolak perubahan kami ke dalam cawangan dan proses bermula - pemasangan, ujian, autoujian dan langkah lain. Jika mana-mana langkah ini gagal, binaan dianggap rosak dan tidak boleh digabungkan ke dalam cawangan utama. Inilah yang akan kami lakukan sekarang: kami akan menambah Tindakan GitHub, yang akan menjalankan kod kami selepas menolak. Tindakan GitHub sangat sesuai dengan Aliran GitHub kami, jadi kami akan menggunakannya untuk mengautomasikan kerja kami. Alat ini sangat berkuasa dan besar, tetapi buat masa ini kami hanya akan menggunakannya untuk menjalankan binaan dan menyemak sama ada ia dipasang mengikut keperluan. Untuk mendayakannya, cari butang Tindakan pada halaman repositori dan ikutinya: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 12Cari aliran kerja Integrasi Berterusan yang kami perlukan: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 13Klik Sediakan aliran kerja ini. Seterusnya, kami ditawarkan untuk menggunakan templat mereka: kami bersetuju sepenuhnya, mari kita jelaskan semuanya sedikit:
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn -B package --file pom.xml
Ini menunjukkan bahawa Tindakan GitHub dipanggil dalam dua kes:
  1. Apabila tolakan dibuat ke cawangan utama.
  2. Apabila permintaan tarik dibuat di cawangan utama.
Bahagian pekerjaan menerangkan langkah-langkah yang akan dilakukan. Kami hanya mempunyai satu langkah - membina. Ia menunjukkan bahawa projek kami akan dilancarkan di Ubuntu dengan arahan mvn -B package --file pom.xml . Inilah yang kami lakukan secara tempatan. Jika anda ingin mengubah sesuatu di sini, sila. Saya akan menggunakan templat ini, ia akan mencukupi untuk saya. Saya klik Mulakan komit , pilih buat cawangan baharu untuk mengkonfigurasi proses dan kemudian Cadangkan fail baharu . Tetapi proses binaan jatuh... "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 14Seperti yang anda lihat, Gagal selepas 14s - bina. Nampaknya sesuatu telah berlaku: mari kita teruskan ke perhimpunan dan lihat butirannya: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 15Ia mengatakan bahawa saya tidak dapat mencari memori sedemikian. kenapa? Ahhh, betul-betul, betul-betul! Kerana kami membuat perubahan dalam cawangan induk, tetapi tugas kami belum ada. Dan itulah sebabnya dia tidak menemui ingatan itu... Oleh itu, sekarang kita melakukan perkara berikut: kita menggabungkan data ini ke dalam induk, kemudian kita menggabungkan cawangan utama ke JRTB-0, dan kemudian semuanya akan berjalan lancar. Dalam permintaan tarik dengan perubahan tindakan github, klik Gabung permintaan tarik : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 16Dan ulangi Sahkan cantuman . Seterusnya, Github menggesa kami untuk memadamkan cawangan tempat kami bekerja. Kami tidak menolak dan memadam: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 17Seterusnya, saya tidak menemui dalam permintaan tarik dari SpringBoot bagaimana untuk menarik perubahan dari cawangan utama dari tapak web, jadi kami akan melakukannya secara manual melalui IDEA.

Langkah 1: Kemas kini cawangan induk kepada repositori tempatan.

Ideanya adalah untuk pergi ke cawangan induk, tekan ctrl + t dan kemas kini cawangan induk:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 18

Langkah 2: Gabungkan perubahan daripada cawangan induk kepada cawangan JRTB-0.

Mari pergi ke JRTB-0 dan gabungkan yang utama ke dalamnya."Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 19

Langkah 3: tolak perubahan.

Tekan ctrl + shift + k dan sahkan tolakan. Sekarang kami sedang menunggu binaan untuk lulus dan ia akan menjadi hijau!)) Tetapi ia merah lagi. Apa itu? Kami pergi ke log tindakan dan melihat bahawa kami tidak segerak dalam versi Java. Dalam GitHubActions ia adalah 8, tetapi kami menggunakan 11: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 20Kini terdapat dua pilihan: sama ada membetulkan tindakan, atau menurunkan versi kepada yang kelapan. Pilihan pertama, nampaknya saya, lebih baik dan lebih tepat. Kami membuat perubahan dalam komit berasingan: kami tidak akan berfungsi dengan Java 8, tetapi dengan Java 11. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 21Dan selepas itu, akhirnya, semuanya berjaya untuk kami, dan kami dapat menyediakan proses CI kami untuk projek itu. Perkara sedemikian perlu disediakan pada peringkat awal, supaya anda tidak perlu risau mengenainya kemudian. Kini anda dapat melihat bahawa binaan telah berlalu dan anda boleh bergabung tanpa rasa takut:"Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 22

Menyediakan kerja dengan cawangan dalam repositori

Anda juga boleh mengkonfigurasi perkara sedemikian dalam repositori sebagai peraturan apabila bekerja dengan cawangan. Saya mahu menjadikannya supaya cawangan utama tidak boleh ditolak secara langsung, tetapi hanya melalui permintaan tarik, dan saya mahu membuatnya supaya mustahil untuk menggabungkan permintaan tarik jika binaan gagal (iaitu, jika Tindakan GitHub gagal pada beberapa langkah). Untuk melakukan ini, cari butang Tetapan dan pilih Cawangan : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 23Pada masa ini tiada peraturan untuk cawangan, jadi mari tambahkan yang baharu melalui butang Tambah peraturan : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 24Terdapat banyak tetapan di sini, dan semua orang boleh melakukan sesuatu yang sesuai dengan mereka. keperluan. Agar binaan lulus dengan jayanya dalam permintaan tarik sebelum digabungkan, tambahkan kotak semak pada Memerlukan semakan status untuk lulus sebelum bergabung dan pilih status yang kami perlukan - bina. Itu sudah cukup buat masa ini: kemudian anda boleh mengemas kini stereng ini dan melihat perkara lain yang anda mahukan. Klik Buat untuk mencipta stereng ini. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 25Seterusnya, jika kami pergi ke permintaan tarik kami sekali lagi, kami dapat melihat bahawa semakan kami kini ditandakan diperlukan: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 26Mari semak halaman projek kami, yang memaparkan semua status tugas: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 27Anda boleh melihat dengan serta-merta tugasan yang sedang diusahakan. Lebih-lebih lagi, kerja itu telah pun dilakukan, dan tugas itu dalam status semakan kod.

Menutup JRTB-0

Memandangkan kami telah menyediakan permintaan tarik dan membuat CI untuknya, kami perlu melengkapkan peringkat terakhir: tutup tugas, alihkannya ke status yang betul, lihat perubahan dalam projek kami di papan. Permintaan tarik kami sedia untuk digabungkan ke dalam induk. Dalam permintaan tarik, klik butang Permintaan tarik Gabung : "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 28Selepas gabungan berjaya, anda boleh memadamkannya dan biasanya berbuat demikian. Saya tidak akan melakukan ini untuk memudahkan anda melihat perubahan antara cawangan/komit. Sebaik sahaja permintaan tarik digabungkan, ia secara automatik akan dilakukan dalam papan projek kami: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 29Langkah terakhir ialah menutup isu (isu) dengan pautan ke permintaan tarik di mana ia berlaku: "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 30Isu ini secara automatik akan selesai pada papan. "Java-проект от А до Я": Пишем проект. Добавляем SpringBoot и настраиваем CI процесс - 31Permulaan telah dibuat, tugas pertama selesai!

kesimpulan

Nampaknya kami telah mula bekerja dan menulis kod, tetapi tetapan masih diperlukan. Ya, ia mengambil masa, tetapi ia akan membayar seratus kali ganda apabila projek menjadi lebih besar dan lebih kompleks dan anda memerlukan jaminan bahawa anda tidak akan hanya memecahkan segala-galanya dengan satu komitmen. Permintaan tarik di mana semua ini berlaku tersedia di sini . Mungkin, apabila anda membaca, ia akan ditutup. Ia tidak menakutkan: semua maklumat yang diperlukan akan disimpan melalui pautan. Terima kasih semua kerana membaca, jumpa lagi. Lagi lagi!

Senarai semua bahan dalam siri ini adalah pada permulaan artikel ini.

Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION