JavaRush /Java Blog /Random-ID /Kami sedang menulis sebuah proyek. Tambahkan SpringBoot d...

Kami sedang menulis sebuah proyek. Tambahkan SpringBoot dan siapkan proses CI - "Proyek Java dari A hingga Z"

Dipublikasikan di grup Random-ID
Artikel dari seri tentang membuat proyek Java (tautan ke materi lain ada di akhir). Tujuannya adalah untuk menganalisis teknologi utama, hasilnya adalah penulisan bot telegram. Salam, para pembaca yang budiman. Seperti yang dijelaskan di bagian sebelumnya , kami akan berjalan sesuai rencana. Kami telah membuat proyek dan sekarang saatnya mengisinya dengan kode. Sekarang semua masalah akan ditambahkan sebagai komitmen terpisah. Saya akan menjelaskan semua yang diperlukan di sini. Jika saya melewatkan sesuatu atau kurang menjelaskannya, tanyakan di komentar, saya akan mencoba menjawab."Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 1

Kami menulis JRTB-0M

Dalam tugas ini kita perlu menambahkan kerangka SpringBoot kosong untuk pekerjaan selanjutnya. Kami akan melakukan ini dengan cara yang sama seperti yang kami lakukan di artikel tentang SpringBoot + Flyway . Unduh proyeknya , buka di IDEA dan buat cabang baru bernama JRTB-0 . Saya menjelaskan cara melakukan ini melalui sebuah ide di sini . Ini akan memudahkan kami melacak pekerjaan di masa mendatang. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 2Tahukah Anda bahwa cabang master sudah tidak ada lagi ? Sekarang disebut netral - utama . Jadi kita akan terbiasa. Meskipun sejujurnya, kami selalu dapat mengganti namanya kembali menjadi master. Kami pergi ke Spring Initializr dan membuat kerangka SpringBoot untuk bot kami. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 3Saat ini, versi termuda dari boot sprint yang ditawarkan adalah 2.3.7, ayo kita gunakan. Saya akan menjelaskan pengaturan berikut secara terpisah:
  • Proyek: Proyek Maven - kita sudah membahas Maven di sini dan di sini . Oleh karena itu, saya juga hanya akan menjelaskan apa yang tidak saya ungkapkan di artikel sebelumnya. Jika ada “titik putih” seperti itu, tentu saja)
  • Bahasa: Java - semuanya jelas di sini. Jika ada keinginan, kita bisa menulis ulang hal ini di Kotlin. Saya baru saja membeli buku Kotlin in Action, kita akan belajar Kotlin bersama))
  • Spring Boot: 2.3.7 - kami mengambil versi terkecil yang ditawarkan untuk menghilangkan masalah apa pun. Ini sudah merupakan versi boot yang sepenuhnya modern.
Metadata Proyek:
  • Grup: com.github.javarushcommunity - di sini kami memilih domain tempat grup repositori kami dihosting.
  • Artefak: javarush-telegrambot - deskripsi maksimum proyek.
  • Nama: Javarush TelegramBot - kami akan menulisnya secara lengkap di sini.
  • Deskripsi: Bot Telegram untuk Javarush dari komunitas ke komunitas - berikut adalah deskripsi proyek yang lebih detail.
  • Nama paket: com.github.javarushcommunity.jrtb - di sini Anda sudah dapat menggunakan singkatan nama proyek. Sekarang proyek akan dimulai dengan paket ini. Mengapa begitu banyak? Sehingga ketika kita menambahkan proyek lain ke classpath, proyek tersebut akan berada dalam paket yang berbeda. Masing-masing dengan caranya yang unik. Hal ini penting untuk menjaga prinsip OOP.
  • Kemasan : Toples standar kami)
  • Java: 11 - kita akan selangkah lebih maju. Saya rasa saya tidak akan menggunakan inovasi setelah Java kedelapan, tapi biarkan saja. Dia tidak meminta makanan)... keputusan ini akan memberi kita telur Paskah kecil di masa depan)
Kami tidak akan menambahkan dependensi apa pun untuk saat ini. Kami tidak membutuhkan ini untuk tugas ini. Setelah mengisi semua ini, kita mendapatkan (ini link ke proyek yang dihasilkan): "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 4Setelah mengisi, klik GENERATE dan tambahkan semua internal di arsip ke proyek kita. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 5Tambahkan file ke proyek. Hasilnya, kami memiliki aplikasi. Untuk memeriksa apakah sudah dirakit sama sekali, buka terminal dan tulis: $ mvn paket bersih"Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 6 Jika Anda memiliki yang sama seperti dari sini, semuanya baik-baik saja: proyek sudah dirakit, dan jarnik sudah siap di folder target. Pada titik ini, tugas dalam deskripsi sudah siap. Sederhana saja, bukan? Oleh karena itu, kami berkomitmen dan mendorong ke cabang kami: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 7Kami menambahkan nama tugas kami di awal deskripsi komit, sehingga nantinya akan jelas dalam kerangka tugas mana pekerjaan itu dilakukan. Klik Komit dan Dorong ... "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 8Sekali lagi kami meninjau dan memeriksa apa sebenarnya yang ingin kami Dorong dari repositori lokal ke repositori jarak jauh dan, pastikan semuanya baik-baik saja, klik Dorong . Apa langkah kita selanjutnya? Menurut semua aturan (yang dapat dibaca di artikel ini , di bagian tentang alur GitHub), Anda perlu membuat permintaan tarik untuk cabang utama dan menunggu seseorang dari tim meninjau kodenya. Karena saya sendirian, saya akan secara resmi membuat permintaan penarikan dan meninjau semuanya lagi. Saya membuka halaman repositori, dan Github sudah mengetahui bahwa kami memiliki tambahan dan penawaran untuk membuat permintaan tarik: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 9Tidak ada hambatan bagi patriot (c) - kami membuatnya seperti yang disarankan. Kita atur label yang sama, project seperti pada tugas yang sedang kita kerjakan, dan isi deskripsinya: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 10Klik Create pull request .

Menyiapkan proses CI

Kami pergi ke permintaan tarik yang dibuat: di bawah ini kami melihat bahwa kami tidak memiliki Integrasi Berkelanjutan yang dikonfigurasi (selanjutnya - CI). "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 11Yah, itu tidak dikonfigurasi, lalu kenapa? Mengapa kita membutuhkan CI? Apa sih CI itu? Kira-kira begitulah daftar pertanyaan yang patut menjadi perhatian kita saat ini. Secara umum, CI adalah proses berkelanjutan yang menggabungkan kode ke dalam basis kode umum dan menjalankan pembangunan proyek sebelumnya. Yang disebut build (dari bahasa Inggris build). Setiap kali kami membangun sebuah proyek, kami memastikan bahwa proyek tersebut telah dikompilasi, semua pengujiannya telah berhasil lulus, ditambah lagi setelah membangun proyek, Anda dapat menambahkan pengujian otomatis dari penguji ke CI yang dijalankan pada build khusus ini. Dengan cara ini, kami menjadi lebih yakin bahwa perubahan baru berfungsi sesuai harapan dan tidak merusak fungsi sebelumnya. CI juga bagus karena dimulai secara otomatis setelah memperbarui basis kode. Artinya, kami memasukkan perubahan kami ke cabang dan proses dimulai - perakitan, pengujian, pengujian otomatis, dan langkah lainnya. Jika salah satu langkah ini gagal, build dianggap rusak dan tidak dapat digabungkan ke cabang utama. Inilah yang akan kita lakukan sekarang: kita akan menambahkan GitHub Actions, yang akan menjalankan kode kita setelah push. GitHub Actions sangat cocok dengan Alur GitHub kami, jadi kami akan menggunakannya untuk mengotomatiskan pekerjaan kami. Alat ini sangat kuat dan besar, namun untuk saat ini kami hanya akan menggunakannya untuk menjalankan build dan memeriksa apakah sudah dirakit sesuai kebutuhan. Untuk mengaktifkannya, temukan tombol Tindakan di halaman repositori dan ikuti: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 12Temukan alur kerja Integrasi Berkelanjutan yang kita perlukan: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 13Klik Siapkan alur kerja ini. Selanjutnya, kami ditawari untuk menggunakan template mereka: kami sepenuhnya setuju, mari kita perjelas 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
Hal ini menunjukkan bahwa GitHub Action dipanggil dalam dua kasus:
  1. Ketika dorongan dilakukan ke cabang utama.
  2. Ketika permintaan tarik dibuat di cabang utama.
Bagian pekerjaan menjelaskan langkah-langkah yang akan dilakukan. Kami hanya memiliki satu langkah - membangun. Ini menunjukkan bahwa proyek kita akan diluncurkan di Ubuntu dengan perintah mvn -B package --file pom.xml . Inilah yang kami lakukan secara lokal. Jika Anda ingin mengubah sesuatu di sini, silakan. Saya akan menggunakan template ini, itu sudah cukup bagi saya. Saya klik Mulai komit , pilih buat cabang baru untuk mengkonfigurasi proses dan kemudian Usulkan file baru . Namun proses pembangunannya gagal... "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 14Seperti yang Anda lihat, Gagal setelah 14 detik - bangun. Sepertinya sesuatu telah terjadi: mari kita beralih ke perakitan dan melihat detailnya: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 15Dikatakan bahwa saya tidak dapat menemukan memori seperti itu. Mengapa? Ahhh, tepat sekali! Karena kita sudah membuat perubahan pada cabang master, namun tugas kita belum sampai. Dan itulah mengapa dia tidak menemukan memorinya... Oleh karena itu, sekarang kita lakukan hal berikut: kita menggabungkan data ini ke dalam master, lalu kita menggabungkan cabang utama ke dalam JRTB-0, dan kemudian semuanya akan berjalan dengan baik. Dalam permintaan tarik dengan perubahan tindakan github, klik Gabungkan permintaan tarik : "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 16Dan ulangi Konfirmasi penggabungan . Selanjutnya, Github meminta kita untuk menghapus cabang tempat kita bekerja. Kami tidak menolak dan menghapus: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 17Selanjutnya, saya tidak menemukan dalam permintaan tarik dari SpringBoot cara menarik perubahan dari cabang utama dari situs web, jadi kami akan melakukannya secara manual melalui IDEA.

Langkah 1: Perbarui cabang master ke repositori lokal.

Idenya adalah pergi ke cabang master, tekan ctrl + t dan perbarui cabang master:"Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 18

Langkah 2: Gabungkan perubahan dari cabang master ke cabang JRTB-0.

Ayo pergi ke JRTB-0 dan gabungkan yang utama ke dalamnya."Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 19

Langkah 3: dorong perubahan.

Tekan ctrl + shift + k dan konfirmasikan dorongan. Sekarang kita tunggu buildnya lewat dan warnanya hijau!)) Tapi warnanya merah lagi. Apa itu? Kami masuk ke log tindakan dan melihat bahwa kami tidak sinkron dalam versi Java. Di GitHubActions nilainya 8, tetapi kami menggunakan 11: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 20Sekarang ada dua opsi: memperbaiki tindakan, atau menurunkan versi ke versi kedelapan. Opsi pertama, menurut saya, lebih baik dan tepat. Kami membuat perubahan dalam komitmen terpisah: kami tidak akan bekerja dengan Java 8, tetapi dengan Java 11. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Menambahkan SpringBoot dan menyiapkan proses CI - 21Dan setelah itu, akhirnya, semuanya berjalan baik bagi kami, dan kami dapat menyiapkan proses CI untuk proyek tersebut. Hal-hal seperti itu perlu diatur sejak awal, agar Anda tidak perlu khawatir di kemudian hari. Sekarang Anda dapat melihat bahwa pembangunan telah berlalu dan Anda dapat menggabungkannya tanpa rasa takut:"Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 22

Menyiapkan pekerjaan dengan cabang di repositori

Anda juga dapat mengonfigurasi hal-hal seperti itu di repositori sebagai aturan saat bekerja dengan cabang. Saya ingin membuatnya agar cabang utama tidak dapat didorong secara langsung, tetapi hanya melalui permintaan tarik, dan saya ingin membuatnya sehingga tidak mungkin untuk menggabungkan permintaan tarik jika pembangunan gagal (yaitu, jika Tindakan GitHub gagal di beberapa langkah). Untuk melakukan ini, cari tombol Pengaturan dan pilih Cabang : "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 23Saat ini tidak ada aturan untuk cabang, jadi mari tambahkan yang baru melalui tombol Tambahkan aturan : "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Menambahkan SpringBoot dan menyiapkan proses CI - 24Ada banyak pengaturan di sini, dan setiap orang dapat melakukan sesuatu sesuai keinginan mereka. kebutuhan. Agar build berhasil lolos dalam permintaan tarik sebelum penggabungan, tambahkan kotak centang untuk Memerlukan pemeriksaan status untuk lulus sebelum penggabungan dan pilih status yang kita perlukan - build. Cukup untuk saat ini: lalu Anda dapat memperbarui roda kemudi ini dan melihat apa lagi yang Anda inginkan. Klik Buat untuk membuat roda kemudi ini. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Menambahkan SpringBoot dan menyiapkan proses CI - 25Selanjutnya, jika kita kembali ke permintaan penarikan, kita dapat melihat bahwa pemeriksaan kita sekarang ditandai sebagai diperlukan: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 26Mari kita periksa halaman proyek kita, yang menampilkan semua status tugas: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 27Anda dapat langsung melihat tugas apa yang sedang dikerjakan. Selain itu, pekerjaan telah selesai, dan tugas tersebut sedang dalam status peninjauan kode.

Menutup JRTB-0

Sekarang kita telah menyiapkan pull request dan membuat CI untuknya, kita perlu menyelesaikan tahap terakhir: menutup tugas, memindahkannya ke status yang benar, melihat perubahan pada proyek kita di papan. Pull request kita siap digabungkan ke dalam master. Dalam permintaan tarik, klik tombol Gabungkan permintaan tarik : "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 28Setelah penggabungan berhasil, Anda dapat menghapusnya, dan biasanya melakukannya. Saya tidak akan melakukan ini untuk memudahkan Anda melihat perubahan antar cabang/komit. Segera setelah permintaan tarik digabungkan, secara otomatis akan selesai di papan proyek kami: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Tambahkan SpringBoot dan konfigurasikan proses CI - 29Langkah terakhir adalah menutup masalah (masalah) dengan tautan ke permintaan tarik di mana ia berada: "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Menambahkan SpringBoot dan menyiapkan proses CI - 30Masalah ini secara otomatis akan selesai pada papan. "Proyek Java dari A sampai Z": Kami sedang menulis sebuah proyek.  Menambahkan SpringBoot dan menyiapkan proses CI - 31Permulaan telah dibuat, tugas pertama selesai!

kesimpulan

Tampaknya kita sudah mulai bekerja dan menulis kode, tetapi pengaturan masih diperlukan. Ya, ini membutuhkan waktu, tetapi akan membuahkan hasil seratus kali lipat ketika proyek menjadi lebih besar dan lebih kompleks dan Anda memerlukan jaminan bahwa Anda tidak akan merusak semuanya hanya dengan satu komitmen. Permintaan tarik tempat semua ini terjadi tersedia di sini . Mungkin saat Anda membacanya, itu sudah ditutup. Ini tidak menakutkan: semua informasi yang diperlukan akan disimpan melalui tautan. Terima kasih sudah membaca, sampai jumpa lagi. Lebih-lebih lagi!

Daftar semua materi dalam seri ini ada di awal artikel ini.

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