บทความจากซีรีส์เกี่ยวกับการสร้างโปรเจ็กต์ Java (ลิงก์ไปยังเนื้อหาอื่นอยู่ท้ายสุด) เป้าหมายคือการวิเคราะห์เทคโนโลยีที่สำคัญ ผลลัพธ์คือการเขียนบอทโทรเลข สวัสดีผู้อ่านที่รัก ตามที่อธิบายไว้ใน ส่วน ที่แล้วเราจะไปตามแผน เราได้สร้างโปรเจ็กต์แล้ว และถึงเวลากรอกโค้ดแล้ว ตอนนี้ปัญหาทั้งหมดจะถูกเพิ่มเป็นคอมมิตแยกกัน ฉันจะอธิบายทุกสิ่งที่จำเป็นที่นี่ หากฉันพลาดบางสิ่งบางอย่างหรืออธิบายไม่ชัดเจนเพียงพอ ถามในความคิดเห็น ฉันจะพยายามตอบ
เราเขียน JRTB-0M
ในงานนี้ เราจำเป็นต้องเพิ่มเฟรมเวิร์ก SpringBoot ว่างๆ สำหรับงานในอนาคต เราจะทำสิ่งนี้ในลักษณะเดียวกับที่เราทำในบทความเกี่ยวกับ SpringBoot + Flyway ดาวน์โหลดโปรเจ็กต์เปิดใน IDEA และสร้างสาขาใหม่ชื่อJRTB- 0 ฉันอธิบายวิธีการทำ สิ่งนี้ผ่านแนวคิดที่นี่ ซึ่งจะทำให้เราติดตามงานในอนาคตได้ง่ายขึ้น คุณรู้อยู่แล้วว่าไม่มี สาขา หลัก อีกต่อไปแล้ว ? ตอนนี้เรียกว่าเป็นกลาง - หลัก . ดังนั้นเราจึงคุ้นเคยกับมัน แม้ว่าพูดตามตรงแล้ว เราสามารถเปลี่ยนชื่อกลับเป็นมาสเตอร์ได้เสมอ เราไปที่Spring Initializrและสร้างเฟรมเวิร์ก SpringBoot สำหรับบอทของเรา ในขณะนี้ boot sprint เวอร์ชันที่อายุน้อยที่สุดที่มีให้คือ 2.3.7 มาดูกันดีกว่า ฉันจะอธิบายการตั้งค่าต่อไปนี้แยกกัน:- โครงการ: โครงการ Maven - เราได้พูดคุยเรื่อง Maven แล้วที่นี่และที่นี่ ดังนั้นฉันจะอธิบายเพิ่มเติมเฉพาะสิ่งที่ฉันไม่ได้เปิดเผยในบทความก่อนหน้านี้เท่านั้น ถ้ามี “จุดขาว” แบบนี้แน่นอน)
- ภาษา: Java - ทุกอย่างชัดเจนที่นี่ หากมีความปรารถนาเราสามารถเขียนเรื่องนี้ใหม่ใน Kotlin ได้ ฉันเพิ่งซื้อหนังสือ Kotlin in Action ให้ตัวเอง เราจะเรียนรู้ Kotlin ด้วยกัน))
- Spring Boot: 2.3.7 - เราใช้เวอร์ชันที่เล็กที่สุดที่นำเสนอเพื่อขจัดปัญหาต่างๆ นี่เป็นการบูตเวอร์ชันที่ทันสมัยโดยสมบูรณ์อยู่แล้ว
- กลุ่ม: com.github.javarushcommunity - ที่นี่เราเลือกโดเมนที่โฮสต์กลุ่มพื้นที่เก็บข้อมูลของเรา
- สิ่งประดิษฐ์: javarush-telegrambot - คำอธิบายสูงสุดของโครงการ
- ชื่อ: Javarush TelegramBot - เราจะเขียนแบบเต็มที่นี่
- คำอธิบาย: Telegram bot สำหรับ Javarush จากชุมชนสู่ชุมชน - นี่คือคำอธิบายโดยละเอียดเพิ่มเติมของโครงการ
- ชื่อแพ็คเกจ: com.github.javarushcommunity.jrtb - ที่นี่คุณสามารถใช้ตัวย่อสำหรับชื่อโปรเจ็กต์ได้แล้ว ตอนนี้โครงการจะเริ่มด้วยแพ็คเกจนี้ ทำไมมากมาย? ดังนั้นเมื่อเราเพิ่มโปรเจ็กต์อื่นให้กับ classpath โปรเจ็กต์เหล่านั้นจะอยู่ในแพ็คเกจที่แตกต่างกัน แต่ละคนมีเอกลักษณ์ของตัวเอง นี่เป็นสิ่งสำคัญในการรักษาหลักการ OOP
- บรรจุภัณฑ์: Jarเป็นมาตรฐานของเรา)
- Java: 11 - เราจะนำหน้าไปหนึ่งก้าว ฉันไม่คิดว่าฉันจะใช้นวัตกรรมหลังจาก Java ที่แปด แต่ปล่อยให้มันเป็นไป เขาไม่ขออาหาร)...การตัดสินใจครั้งนี้จะทำให้เรามีไข่อีสเตอร์ตัวเล็ก ๆ ให้เราในอนาคต)
การตั้งค่ากระบวนการ CI
ไปที่คำขอดึงที่สร้างขึ้น: ด้านล่างเราจะเห็นว่าเราไม่มี การกำหนด ค่าการรวมอย่างต่อเนื่อง (ต่อไปนี้ - CI) มันไม่ได้กำหนดค่าแล้วไงล่ะ? ทำไมเราถึงต้องการ CI เลย? CI คืออะไรกันแน่? นี่คือรายการคำถามโดยประมาณที่เรากังวลในขณะนี้ โดยทั่วไปCIเป็นกระบวนการต่อเนื่องในการรวมโค้ดเข้ากับฐานโค้ดทั่วไปและรันบิลด์ของโปรเจ็กต์ก่อนหน้านั้น สิ่งที่เรียกว่าบิลด์ (จากบิลด์ภาษาอังกฤษ) ทุกครั้งที่เราสร้างโปรเจ็กต์ เราตรวจสอบให้แน่ใจว่าโปรเจ็กต์ได้รับการคอมไพล์แล้ว การทดสอบทั้งหมดผ่านการทดสอบเรียบร้อยแล้ว นอกจากนี้ หลังจากสร้างโปรเจ็กต์แล้ว คุณสามารถเพิ่มการทดสอบอัตโนมัติจากผู้ทดสอบไปยัง CI ที่รันบนบิลด์เฉพาะนี้ได้ ด้วยวิธีนี้ เราจะมั่นใจมากขึ้นว่าการเปลี่ยนแปลงใหม่ทำงานได้ตามที่เราคาดหวัง และไม่ทำให้ฟังก์ชันการทำงานก่อนหน้านี้เสียหาย CI ก็ดีเช่นกันเพราะมันเริ่มต้นโดยอัตโนมัติหลังจากอัปเดตฐานโค้ด นั่นคือเราได้ผลักดันการเปลี่ยนแปลงของเราไปที่สาขาและกระบวนการก็เริ่มต้นขึ้น - การประกอบ การทดสอบ การทดสอบอัตโนมัติ และขั้นตอนอื่นๆ หากขั้นตอนใดๆ เหล่านี้ล้มเหลว ระบบจะถือว่าบิลด์ใช้งานไม่ได้และไม่สามารถรวมเข้ากับสาขาหลักได้ นี่คือสิ่งที่เราจะทำตอนนี้: เราจะเพิ่ม GitHub Actions ซึ่งจะเรียกใช้โค้ดของเราหลังจากการพุช GitHub Actions เข้ากันได้อย่างลงตัวกับ GitHub Flow ของเรา ดังนั้นเราจะใช้มันเพื่อทำให้งานของเราเป็นแบบอัตโนมัติ เครื่องมือนี้ทรงพลังและมีขนาดใหญ่มาก แต่สำหรับตอนนี้เราจะใช้มันเพื่อรันบิลด์และตรวจสอบว่าประกอบแล้วตามความจำเป็นเท่านั้น หากต้องการเปิดใช้งาน ให้ค้นหา ปุ่ม การดำเนินการ บนหน้าพื้นที่เก็บข้อมูล แล้วปฏิบัติตาม: ค้นหาเวิร์กโฟลว์การรวมอย่างต่อเนื่องที่เราต้องการ: คลิกตั้งค่าเวิร์กโฟลว์นี้ ต่อไปเราเสนอให้ใช้เทมเพลต: เราเห็นด้วยอย่างยิ่ง ขอชี้แจงทุกอย่างให้กระจ่างหน่อย:# 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
สิ่งนี้บ่งชี้ว่า GitHub Action ถูกเรียกในสองกรณี:
- เมื่อทำการผลักไปยังสาขาหลัก
- เมื่อมีการสร้างคำขอดึงในสาขาหลัก
GO TO FULL VERSION