JavaRush /จาวาบล็อก /Random-TH /การบูรณาการอย่างต่อเนื่อง
Nikita Koliadin
ระดับ
Днепр

การบูรณาการอย่างต่อเนื่อง

เผยแพร่ในกลุ่ม
สวัสดีเพื่อนร่วมงาน! เบื่อกับการบังคับให้คอมพิวเตอร์สร้างโปรเจ็กต์อย่างต่อเนื่องใช่ไหม? บทความนี้เหมาะสำหรับคุณ! บูรณาการอย่างต่อเนื่อง - 1ในบทความนี้ ฉันจะพยายามนำเสนอเนื้อหาเกี่ยวกับการบูรณาการอย่างต่อเนื่องโดยกระชับและชัดเจน (ต่อไปนี้จะเรียกว่า CI) ฉันจะตอบคำถามง่ายๆ เช่น"มันคืออะไร" "ทำไม" และทำไม?" และผมจะยกตัวอย่างโครงการทดสอบ บทความนี้มีไว้สำหรับผู้ใช้ ที่ มีประสบการณ์ซึ่งอย่างน้อยก็คุ้นเคยกับBuild System: Mavenรู้วิธีใช้Gitและรู้วิธีผลักดันโปรเจ็กต์ไปยังGitHub

“บูรณาการอย่างต่อเนื่องคืออะไร”

มาดูสิ่งที่ Wikiบอกเราเกี่ยวกับคำถามนี้: การบูรณาการอย่างต่อเนื่อง (CI, English Continuous Integration) คือแนวทางปฏิบัติในการพัฒนาซอฟต์แวร์ที่ประกอบด้วยการรวมสำเนาการทำงานเข้ากับสาขาการพัฒนาหลักทั่วไปหลายครั้งต่อวันและดำเนินการสร้างอัตโนมัติบ่อยครั้งของโครงการในช่วงต้น การตรวจจับข้อบกพร่องที่อาจเกิดขึ้นและแนวทางแก้ไขปัญหาการรวมระบบ น่ากลัวใช่มั้ยล่ะ? ลองอธิบายคำนี้ด้วยคำง่ายๆ กัน: การบูรณาการอย่างต่อเนื่องคือระบบสำหรับการสร้างและการทดสอบซอฟต์แวร์อัตโนมัติด้วยการกำหนดค่าบางอย่างบนเครื่องบางเครื่องเพื่อตรวจจับจุดบกพร่องและความไม่เข้ากัน โอเค ไม่มีปัญหา เราคิดออกแล้ว แต่เกิดคำถามเชิงตรรกะต่อไปนี้:

ทำไมเราต้องมี CI?

สมมติว่าคุณกำลังเขียนโปรเจ็กต์ขนาดใหญ่ และจำเป็นต้องเพิ่ม/เปลี่ยนแปลงฟังก์ชันการทำงาน คุณเขียน เขียนการทดสอบ เปิดใช้งานได้สำเร็จ และดูเหมือนว่าทุกอย่างจะเรียบร้อยดี แต่ก็ไม่ มีสถานการณ์ที่การเปลี่ยนแปลงในฟังก์ชันหนึ่งส่งผลต่ออีกฟังก์ชันหนึ่ง อีกหนึ่งฟังก์ชันในฟังก์ชันที่สาม และต่อๆ ไป จนกว่าข้อบกพร่องจะหลุดลอยไปที่ไหนสักแห่งและมีข้อผิดพลาดเกิดขึ้น ใช่ คุณสามารถพูดได้ว่านี่น่าจะเป็นโครงการที่ออกแบบมาไม่ดี และคุณอาจจะพูดถูก แต่ถ้าไม่เป็นเช่นนั้น และการเชื่อมต่อเหล่านี้ควรจะอยู่ที่นั่นจริงๆ แล้วถ้าคุณเขียนและสร้างโปรเจ็กต์มากกว่าหนึ่งครั้ง ซึ่งมักจะเป็นเช่นนั้นล่ะ? คุณได้ทดสอบฟังก์ชันการทำงานที่เพิ่งเขียนใหม่ และผลลัพธ์ก็ให้ผลลัพธ์ที่เป็นบวก คุณตัดสินใจอย่างรวดเร็ว จากนั้นก็ผลักดันไปที่ไหนสักแห่งและคิดอยู่แล้วว่าคุณจะสูบซิการ์ที่บ้านพร้อมดื่มวิสกี้ราคาแพงไปด้วยได้อย่างไร แต่ไม่ใช่ อนิจจา เพื่อนร่วมงานของคุณหรือเจ้านาย ไม่ว่าใครก็ตามที่บอกว่าเพราะการกระทำของคุณ ทำให้บิลด์ทั้งหมดพัง คุณพูดด้วยความงุนงงว่าคุณเป็นโปรแกรมเมอร์คุณได้ทดสอบทุกอย่างแล้ว แต่บ่อยครั้งที่ไม่มีเวลาที่จะทดสอบทั้งโปรเจ็กต์อย่างต่อเนื่อง และคุณทดสอบเฉพาะส่วนของโค้ดที่คุณทำการเปลี่ยนแปลงเท่านั้น ไม่ใช่ทั้งแอสเซมบลีโดยรวม นี่คือจุดที่ CI มาช่วยเหลือเรา ในการพุชไปยังทรัพยากรใดๆ แต่ละครั้ง CI จะสร้างโปรเจ็กต์ของคุณตั้งแต่เริ่มต้น รัน การทดสอบ ทั้งหมดและเฉพาะในกรณีที่การทดสอบทั้งหมดผ่านและสร้างโปรเจ็กต์แล้ว บิวด์จะได้รับสถานะผ่าน มิฉะนั้นคุณจะมีโอกาสที่จะกลับมาและดูว่าเกิดอะไรขึ้น ถึงเวลาถามคำถามว่า"ทำไมถึงเป็นเช่นนี้" และดูการใช้งานซอฟต์แวร์ ตัวอย่าง ตามที่ฉันได้กล่าวไปแล้ว บทความนี้มีไว้สำหรับผู้ที่คุ้นเคยกับ Maven และ Git ดังนั้นฉันหวังว่าคุณจะรู้ว่าฉันทำอะไรและอย่างไรนอกเหนือจากการตั้งค่า CI ฯลฯ
  1. ขั้นแรก เรามาสร้างโปรเจ็กต์ทดสอบ Maven ง่ายๆ และสร้างคลาสในนั้นที่พิมพ์ว่า "Hello World!" และดำเนินการง่ายๆ และมาเขียนการทดสอบที่ง่ายที่สุดสำหรับคลาสนี้กัน

    ด้วยเหตุนี้ เราจึงควรมีโครงสร้างโครงการดั้งเดิม:

    บูรณาการอย่างต่อเนื่อง - 2

    แหล่งที่มาทั้งหมดจะอยู่ใน GitHub ของฉัน ไม่สำคัญว่าคุณเขียนอะไรใน Main และจะมีการทดสอบอะไรบ้าง

  2. เราผลักดันโครงการของเราไปที่ GitHub

  3. ตอนนี้ส่วนที่สนุกมา จาก CI ฉันเลือกTravis CIเนื่องจากความพร้อมใช้งานและความน่าเชื่อถือ Travis ใช้ GitHub เพื่อโฮสต์ซอร์สโค้ด

    ไปที่ เว็บไซต์ Travis CIและเข้าสู่ระบบผ่าน GitHub ในโปรไฟล์เราเชื่อมต่อโครงการของเรา:

    บูรณาการอย่างต่อเนื่อง - 3

    ทุกอย่างพร้อมสำหรับการประกอบทุกครั้งที่กด แต่คำถามคือ จะประกอบอย่างไร ?

  4. เรากลับไปสู่ ​​IDEA ที่เรารักและสร้าง ไฟล์ .travis.yml

    ไฟล์นี้รับผิดชอบการกำหนดค่าบิลด์ Travis มาดูการตั้งค่ายอดนิยมกัน:

    • คุณต้องระบุภาษาที่ใช้ในโครงการ
    • ระบุเส้นทางไปยังไดเร็กทอรีเพื่อทำให้ build เร็วขึ้น
    • ระบุวิธีการแจ้งการประกอบสำเร็จหรือไม่สำเร็จ

    นี่คือลักษณะของการกำหนดค่า 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