Jenkins Git Integration - มีประโยชน์สำหรับ DevOps Professional ทุกคน



บล็อกนี้กล่าวถึงการรวม Git กับ Jenkins นอกจากนี้ยังกล่าวถึงข้อดีของการรวม Git กับ Jenkins พร้อมกับการสาธิต

ไม่สมบูรณ์อย่างแน่นอนหากไม่มีเจนกินส์ Jenkins และ Git เป็นการผสมผสานที่ยอดเยี่ยม ดังนั้นในบทความนี้ฉันจะพูดถึง Jenkins Git Integration และข้อดีของมัน คำแนะนำที่เราจะกล่าวถึงมีดังนี้:

ดังนั้นให้เราเริ่มต้นด้วยหัวข้อแรกของเรา





Git คืออะไร - ทำไมต้อง Git เข้ามามีอยู่จริง?

เราทุกคนรู้ดีว่า“ ความจำเป็นคือแม่ของสิ่งประดิษฐ์ทั้งหมด” ในทำนองเดียวกัน Git เกิดขึ้นเพื่อตอบสนองความจำเป็นบางอย่างที่นักพัฒนาต้องเผชิญก่อน Git ดังนั้นให้เราย้อนกลับไปเพื่อเรียนรู้ทั้งหมดเกี่ยวกับ Version Control Systems (VCS) และ Git เกิดขึ้นได้อย่างไร

การควบคุมเวอร์ชัน คือการจัดการการเปลี่ยนแปลงเอกสารโปรแกรมคอมพิวเตอร์เว็บไซต์ขนาดใหญ่และการรวบรวมข้อมูลอื่น ๆ



VCS มีสองประเภท:

VCS แบบรวมศูนย์

ระบบควบคุมเวอร์ชันส่วนกลาง (CVCS) ใช้เซิร์ฟเวอร์ส่วนกลางเพื่อจัดเก็บไฟล์ทั้งหมดและเปิดใช้งานการทำงานร่วมกันในทีม ทำงานบนที่เก็บเดียวซึ่งผู้ใช้สามารถเข้าถึงเซิร์ฟเวอร์ส่วนกลางได้โดยตรง

โปรดดูแผนภาพด้านล่างเพื่อรับแนวคิดที่ดีขึ้นเกี่ยวกับ CVCS:

ที่เก็บในแผนภาพด้านบนระบุเซิร์ฟเวอร์ส่วนกลางที่อาจเป็นแบบโลคัลหรือรีโมตซึ่งเชื่อมต่อโดยตรงกับเวิร์กสเตชันของโปรแกรมเมอร์แต่ละเครื่อง

โปรแกรมเมอร์ทุกคนสามารถแยกหรือ อัพเดต เวิร์กสเตชันของพวกเขาที่มีข้อมูลอยู่ในที่เก็บ นอกจากนี้ยังสามารถเปลี่ยนแปลงข้อมูลหรือ กระทำ ไปยังที่เก็บ ทุกการดำเนินการจะดำเนินการโดยตรงบนที่เก็บ

แม้ว่าจะดูค่อนข้างสะดวกในการดูแลที่เก็บข้อมูลเดียว แต่ก็มีข้อเสียที่สำคัญบางประการ บางส่วน ได้แก่ :

  • ไม่มีในพื้นที่หมายความว่าคุณจำเป็นต้องเชื่อมต่อกับเครือข่ายเพื่อดำเนินการใด ๆ

  • เนื่องจากทุกอย่างถูกรวมไว้ที่ส่วนกลางไม่ว่าในกรณีใดก็ตามที่เซิร์ฟเวอร์ส่วนกลางเกิดขัดข้องหรือเสียหายจะส่งผลให้สูญเสียข้อมูลทั้งหมดของโครงการ

นี่คือจุดที่ VCS แบบกระจายช่วยแก้ปัญหาได้

VCS แบบกระจาย

ระบบเหล่านี้ไม่จำเป็นต้องพึ่งพาเซิร์ฟเวอร์ส่วนกลางในการจัดเก็บไฟล์โครงการทุกเวอร์ชันใน VCS แบบกระจายผู้ร่วมให้ข้อมูลทุกคนจะมีสำเนาภายในเครื่องหรือ 'โคลน' ของที่เก็บหลัก ที่นี่ทุกคนจะมีที่เก็บในเครื่องของตนเองซึ่งมีไฟล์และข้อมูลเมตาทั้งหมดที่มีอยู่ในที่เก็บหลัก

คุณจะเข้าใจได้ดีขึ้นโดยอ้างอิงจากแผนภาพด้านล่าง:

ดังที่คุณเห็นในแผนภาพด้านบนโปรแกรมเมอร์ทุกคนจะดูแลที่เก็บในเครื่องของตัวเองซึ่งจริงๆแล้วคือสำเนาหรือโคลนของที่เก็บกลางในฮาร์ดไดรฟ์ พวกเขาสามารถคอมมิตและอัปเดตที่เก็บในเครื่องโดยไม่มีการรบกวนใด ๆ

พวกเขาสามารถอัปเดตที่เก็บในเครื่องด้วยข้อมูลใหม่จากเซิร์ฟเวอร์กลางโดยการดำเนินการที่เรียกว่า“ ดึง ” และส่งผลต่อการเปลี่ยนแปลงที่เก็บข้อมูลหลักโดยการดำเนินการที่เรียกว่า“ ผลักดัน ” จากที่เก็บในเครื่อง

ตอนนี้ให้เราลองทำความรู้จักกับคำจำกัดความของ Git

  • Git เป็นเครื่องมือควบคุมเวอร์ชันแบบกระจายที่สนับสนุนเวิร์กโฟลว์ที่ไม่ใช่เชิงเส้นแบบกระจายโดยให้การประกันข้อมูลสำหรับการพัฒนาซอฟต์แวร์ที่มีคุณภาพ เครื่องมือเช่น Git ช่วยให้สามารถสื่อสารระหว่างทีมพัฒนาและทีมปฏิบัติการได้

  • โดยปกติเมื่อคุณพัฒนาโครงการขนาดใหญ่คุณจะมีผู้ทำงานร่วมกันจำนวนมาก ดังนั้นจึงเป็นเรื่องสำคัญมากที่จะต้องมีการสื่อสารระหว่างผู้ทำงานร่วมกันในขณะที่ทำการเปลี่ยนแปลงในโครงการ

  • คอมมิตข้อความใน Git มีบทบาทสำคัญมากในการสื่อสารระหว่างทีม นอกเหนือจากการสื่อสารเหตุผลที่สำคัญที่สุดในการใช้ Git ก็คือคุณต้องมีโค้ดเวอร์ชันที่เสถียรอยู่กับคุณเสมอ

  • ดังนั้น Git จึงมีบทบาทสำคัญในการประสบความสำเร็จใน DevOps

Jenkins คืออะไร?

Jenkins เป็นเครื่องมืออัตโนมัติแบบโอเพนซอร์สที่เขียนด้วย Java พร้อมปลั๊กอินที่สร้างขึ้นเพื่อวัตถุประสงค์ในการผสานรวมอย่างต่อเนื่อง Jenkins ใช้ในการสร้างและทดสอบโครงการซอฟต์แวร์ของคุณอย่างต่อเนื่องทำให้นักพัฒนาสามารถรวมการเปลี่ยนแปลงเข้ากับโครงการได้ง่ายขึ้นและทำให้ผู้ใช้รับงานสร้างใหม่ได้ง่ายขึ้น นอกจากนี้ยังช่วยให้คุณสามารถส่งมอบซอฟต์แวร์ของคุณได้อย่างต่อเนื่องโดยผสานรวมกับเทคโนโลยีการทดสอบและการปรับใช้จำนวนมาก

ด้วย Jenkins องค์กรต่างๆสามารถเร่งกระบวนการพัฒนาซอฟต์แวร์ผ่านระบบอัตโนมัติ Jenkins ผสานรวมกระบวนการวงจรชีวิตของการพัฒนาทุกประเภทรวมถึงการสร้างเอกสารการทดสอบแพ็คเกจขั้นตอนการปรับใช้การวิเคราะห์แบบคงที่และอื่น ๆ อีกมากมาย

Jenkins ประสบความสำเร็จในการผสานรวมอย่างต่อเนื่องด้วยความช่วยเหลือของปลั๊กอิน ปลั๊กอินอนุญาตให้รวมขั้นตอน DevOps ต่างๆ หากคุณต้องการรวมเครื่องมือบางอย่างคุณต้องติดตั้งปลั๊กอินสำหรับเครื่องมือนั้น ตัวอย่างเช่น Git, โครงการ Maven 2, Amazon EC2, ผู้เผยแพร่ HTML เป็นต้น

แท็ก html สำหรับตัวแบ่งบรรทัด

ข้อดีของ Jenkins ได้แก่ :

  • เป็นเครื่องมือโอเพ่นซอร์สพร้อมการสนับสนุนจากชุมชนที่ดีเยี่ยม

  • ติดตั้งง่ายเกินไป

  • มีปลั๊กอินมากกว่า 1,000 รายการเพื่อให้งานของคุณง่ายขึ้น หากไม่มีปลั๊กอินคุณสามารถเขียนโค้ดและแชร์กับชุมชนได้

  • ไม่เสียค่าใช้จ่าย

  • มันถูกสร้างขึ้นด้วย Java และด้วยเหตุนี้จึงพกพาไปยังแพลตฟอร์มหลัก ๆ ทั้งหมด

ตอนนี้คุณรู้แล้วว่า Jenkins เอาชนะข้อบกพร่อง SDLC แบบดั้งเดิมได้อย่างไร ตารางด้านล่างแสดงการเปรียบเทียบระหว่าง“ Before และ After Jenkins”

ก่อนเจนกินส์หลังจากเจนกินส์
ซอร์สโค้ดทั้งหมดถูกสร้างขึ้นแล้วทดสอบ การค้นหาและแก้ไขข้อบกพร่องในกรณีที่การสร้างและการทดสอบล้มเหลวเป็นเรื่องยากและใช้เวลานานซึ่งจะทำให้กระบวนการส่งมอบซอฟต์แวร์ช้าลงทุกคอมมิตที่ทำในซอร์สโค้ดถูกสร้างและทดสอบ ดังนั้นแทนที่จะตรวจสอบผู้พัฒนาซอร์สโค้ดทั้งหมดจะต้องมุ่งเน้นไปที่การคอมมิตเฉพาะเท่านั้น สิ่งนี้นำไปสู่การออกซอฟต์แวร์ใหม่บ่อยครั้ง
ผู้พัฒนาต้องรอผลการทดสอบนักพัฒนาจะทราบผลการทดสอบของทุกการกระทำในซอร์สโค้ดในระหว่างการรัน
กระบวนการทั้งหมดเป็นแบบแมนนวลคุณต้องทำเท่านั้นทำการเปลี่ยนแปลงซอร์สโค้ดและเจนกินส์จะดำเนินการส่วนที่เหลือให้คุณโดยอัตโนมัติ

ทำไม Jenkins และ Git ถึงใช้ร่วมกัน?

ตามที่กล่าวไว้ก่อนหน้านี้ ไป เป็นผู้จัดการควบคุมแหล่งที่มา นั่นคือที่ที่คุณเก็บซอร์สโค้ดของคุณเพื่อติดตามการเปลี่ยนแปลงโค้ดทั้งหมดที่เกิดขึ้นเมื่อเวลาผ่านไปและเพื่อกำหนดเวอร์ชันพื้นฐานเมื่อพร้อมสำหรับการเผยแพร่

เจนกินส์ ในทางกลับกันเป็นโซลูชันการผสานรวมอย่างต่อเนื่อง มีการวางแผนเพื่อทำให้งานส่วนใหญ่ที่นักพัฒนาต้องทำโดยอัตโนมัติในขณะที่พัฒนาแอปพลิเคชันใหม่ (การตรวจสอบคุณภาพโค้ดการสร้างการเก็บถาวรของสิ่งประดิษฐ์ของบิวด์การทดสอบการรวมการปรับใช้กับสภาพแวดล้อมต่างๆ ฯลฯ ) หากไม่มีโซลูชัน CI นักพัฒนา ต้องใช้เวลามากในการทำงานที่ไม่ได้ประสิทธิผลซ้ำ ๆ เหล่านี้

ข้อดี:

  • Git และ Jenkins ต่างก็มีพลังมาก แต่ด้วยพลังอันยิ่งใหญ่ทำให้เกิดความรับผิดชอบที่ยิ่งใหญ่ เป็นเรื่องปกติที่จะปรับจำนวน ภาวะแทรกซ้อนในท่อสร้าง เพียงเพราะคุณทำได้
  • ในขณะที่ Jenkins มีกลเม็ดที่เป็นระเบียบมากมายในแขนเสื้อของเขามันเป็นเรื่องง่ายที่จะใช้ประโยชน์จากคุณสมบัติของ Git เนื่องจากทำให้การจัดการรุ่นและ การติดตามข้อผิดพลาดง่ายขึ้นอย่างมาก ล่วงเวลา.
  • เราสามารถทำได้โดยระมัดระวังเกี่ยวกับเวอร์ชันของโค้ดที่เราสร้างและติดแท็กอย่างเหมาะสม สิ่งนี้ช่วยให้ ข้อมูลที่เกี่ยวข้องกับการเปิดตัวใกล้เคียงกับรหัส ตรงข้ามกับการพึ่งพา Jenkins build numbers หรือ monikers อื่น ๆ
  • การปกป้องสาขา Git ลดความเสี่ยงจากความผิดพลาดของมนุษย์ และการทำงานอัตโนมัติให้มากที่สุดจะช่วยลดความถี่ที่เราต้องรบกวน (หรือรอ) มนุษย์เหล่านั้น

ตัวอย่าง:

ให้เรานำตัวอย่างคุณลักษณะใหม่ในแอปพลิเคชันบนเว็บ นักพัฒนาจะได้รับการระบุและมอบหมายให้กับงานเขารับโค้ดเบสที่มีอยู่จากการควบคุมแหล่งที่มา - พูดว่า Git ทำการเปลี่ยนแปลงดำเนินการทดสอบหน่วยรับรองคุณภาพโค้ดด้วยตนเองและตรวจสอบโค้ดใหม่กลับไปที่ Git

วิธีใช้ python ใน anaconda

จากนั้นเขาจะต้องสร้างโค้ดปรับใช้ในอินสแตนซ์การรวมเรียกใช้การทดสอบการรวมและเมื่อการเปลี่ยนแปลงเป็นที่น่าพอใจแล้วให้ยื่นคำขอสำหรับการปรับใช้การผลิต ตอนนี้ถ้าเรามีมินเนี่ยนที่จะดูแลส่วนการทดสอบการสร้างการตรวจสอบคุณภาพและการปรับใช้งานนี้นักพัฒนาที่ไม่ดีสามารถให้ความสำคัญกับสิ่งที่เขาถนัดได้ดีกว่านั่นคือการนำไปใช้และปรับปรุงตรรกะของฟีเจอร์

มินเนี่ยนตัวนี้คือเจนกินส์ มันทำหน้าที่เป็นออเคสเตรเตอร์เพื่อรันกิจกรรมเหล่านี้ทั้งหมดเมื่อการเปลี่ยนแปลงถูกตรวจสอบในการควบคุมแหล่งที่มา (Git) ดังนั้นจึงให้ข้อเสนอแนะอย่างรวดเร็วแก่นักพัฒนาว่าการเปลี่ยนแปลงที่เขาทำนั้นดีเพียงพอสำหรับการปรับใช้งานจริงหรือไม่มันเป็นโอเพ่นซอร์สที่ยืดหยุ่นมากและมีปลั๊กอินมากมายที่สามารถทำเกือบทุกอย่างที่คุณต้องการ

การสาธิต

ที่นี่เราจะดูวิธีรวม Git กับ Jenkins มี 5 ขั้นตอนที่คุณต้องปฏิบัติตาม:

1. สร้างโปรแกรมตัวอย่าง:

คุณสามารถสร้างโปรแกรมตัวอย่างที่คุณต้องการเช่น Java หรือ Python หรือโปรแกรมอื่น ๆ ที่นี่เราจะเขียนง่ายๆ โปรแกรม Python ที่พิมพ์สวัสดีชาวโลก!

2. สร้างงาน Jenkins:

  • ก่อนอื่นคุณต้องทำ เริ่ม Jenkins โดยใช้พรอมต์คำสั่ง

  • ก่อนอื่นคุณต้องไปที่ตำแหน่ง Jenkins ในระบบของคุณและใช้คำสั่ง java -jar jenkins.war

  • หลังจากเรียกใช้คำสั่งนี้แล้วให้เปิดเว็บเบราว์เซอร์และไปที่โฮมเพจของ Jenkins โดยใช้ลิงก์ localhost: 8080 . นี่คือหมายเลขพอร์ตเริ่มต้น

  • เปิดหน้าแรกของ Jenkins โดย ป้อนชื่อผู้ใช้และรหัสผ่าน

  • สำหรับการสร้างโครงการคลิกที่ ไอเท็มใหม่ และเข้าสู่ ชื่อโครงการ และเลือก โครงการฟรีสไตล์ . คลิกตกลง

3. เพิ่มโปรแกรมนี้ใน Github:

  • เปิด git bash ในระบบของคุณ นำทาง ไปยังตำแหน่งของโปรแกรมของคุณ เริ่มต้นที่เก็บว่างโดยใช้คำสั่ง เริ่มต้นคอมไพล์ .

  • ใช้คำสั่ง คอมไพล์เพิ่ม เพื่อเพิ่มไฟล์ไปยังพื้นที่จัดเตรียมจากไดเร็กทอรีการทำงาน

  • ตอนนี้เพิ่มไฟล์ลงในที่เก็บโลคัลโดยใช้คำสั่ง คอมมิต git -m“ เพิ่มไฟล์ demo.py” .

  • ตอนนี้คุณต้อง ผลักดัน ไฟล์นี้ไปยังที่เก็บระยะไกล สำหรับการทำเช่นนั้นให้ไปที่บัญชี GitHub ของคุณและสร้างที่เก็บสาธารณะใหม่ ตอนนี้คัดลอกตำแหน่งของที่เก็บนี้แล้วไปที่ git bash terminal พิมพ์คำสั่งที่นี่ git remote add origin . เนื่องจากตอนนี้คุณได้เชื่อมต่อกับที่เก็บระยะไกลแล้วตอนนี้คุณสามารถพุชโค้ดของคุณไปที่นั่นโดยใช้คำสั่ง git push -u ต้นแบบต้นทาง ในการตรวจสอบสิ่งนี้ให้ไปที่บัญชี GitHub และรีเฟรชหน้า คุณจะเห็นไฟล์เพิ่มที่นั่น

4. เพิ่ม Git Plugin ใน Jenkins:

  • ในหน้าแรกของ Jenkins ไปที่ จัดการ Jenkins .

  • คลิกถัดไปที่ จัดการปลั๊กอิน . ที่นี่ตรวจสอบปลั๊กอิน Git ในส่วนที่ติดตั้ง หากไม่มีให้ค้นหาในส่วนที่มีอยู่และดาวน์โหลด

5. กำหนดค่างานของ Jenkins เพื่อเรียกใช้งานบิลด์:

  • ไปที่โปรเจ็กต์ใน Jenkins ที่เราสร้างในขั้นตอนที่ 2 ที่นี่ในส่วนการจัดการซอร์สโค้ด เลือกคอมไพล์ และป้อนลิงก์ของที่เก็บสาธารณะที่คุณสร้างในขั้นตอนที่ 3 ถัดไปใน สร้างส่วนทริกเกอร์ , คลิกที่ ตัวเลือก Poll SCM . ในส่วนกำหนดการคุณต้องป้อนเครื่องหมายดอกจันห้าตัวคั่นด้วยช่องว่าง นี่ไม่ใช่อะไรนอกจากไวยากรณ์ cron สำหรับงานของคุณ ซึ่งหมายความว่าเจนกินส์จะตรวจสอบการเปลี่ยนแปลงใด ๆ ในซอร์สโค้ดทุกนาทีและหากมีการเปลี่ยนแปลงใด ๆ มันจะทริกเกอร์การสร้างเจนกินส์

  • คลิกที่ สมัคร แล้วต่อไป บันทึก . ถัดไปในโฮมเพจโครงการของคุณคลิกที่ สร้างเลย . สิ่งนี้จะเรียกใช้โปรเจ็กต์และในเอาต์พุตคอนโซลคุณสามารถเห็นโปรแกรมของคุณแสดงสถานะของงานเจนกินส์ของคุณ หากทุกอย่างเรียบร้อยก็จะแสดงเป็น ประสบความสำเร็จ .

ดังนั้นนี่คือวิธีการรวม Jenkins Git ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความนี้เกี่ยวกับ Jenkins Git Integration ฉันหวังว่าคุณจะสนุกกับบทความนี้

ตอนนี้คุณเข้าใจอะไรแล้ว การรวม Jenkins Git คือตรวจสอบสิ่งนี้ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรม Edureka DevOps Certification ช่วยให้ผู้เรียนเข้าใจ DevOps คืออะไรและได้รับความเชี่ยวชาญในกระบวนการและเครื่องมือต่างๆของ DevOps เช่น Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack และ GIT สำหรับการทำหลายขั้นตอนใน SDLC โดยอัตโนมัติ

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป