Jenkins Shared Library: มองใกล้ขึ้น [2022]

เผยแพร่แล้ว: 2021-01-02

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

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

สารบัญ

Jenkins Shared Library คืออะไร?

เมื่อเราพูดว่า CI / CD เป็นสัญลักษณ์ เราจำเป็นต้องมีโมดูลาร์และนำมาใช้ใหม่ คุณต้องปฏิบัติตามหลักการดราย นั่นคือจุดที่ Library of Jenkins ที่ใช้ร่วมกัน พิสูจน์ ว่ามีประโยชน์

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

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

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

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

อ่าน: แนวคิดและหัวข้อโครงการเจนกินส์ที่น่าสนใจ

เริ่มใช้ไลบรารีที่ใช้ร่วมกัน

ไดเร็กทอรีที่ใช้ร่วมกันคือชุดของไฟล์เจ๋งๆ (DSL + Groovy) ไฟล์สุดเจ๋งทั้งหมดต้องอยู่ในที่เก็บ git ตัวอย่างนี้ใช้ Github เป็นที่เก็บ git https://github.com/devopscube/jenkins-shared-library คุณสามารถทำซ้ำที่เก็บนี้เพื่อรับโครงสร้างพื้นฐานไลบรารีที่ใช้ร่วมกัน

ฐานข้อมูลไลบรารีที่ใช้ร่วมกันมีโครงสร้างวอลุ่มต่อไปนี้:

ห้องสมุดร่วมเจนกินส์

| ____ วาร์ส

| ____ src

| ____ ทรัพยากร

Vars

มันมีรหัส WCL ทั้งหมดที่คุณสามารถโทรจากไปป์ไลน์ ประกอบด้วยไฟล์ไดเร็กทอรีทั้งหมดที่มีนามสกุล .groovy ไฟล์ .txt ยังรองรับการบันทึกรหัสไลบรารีที่แชร์ด้วย ตัวอย่างเช่น หาก คุณมีไฟล์ชื่อ maven-build Groovy จากนั้นคุณจะได้รับไฟล์ช่วยเหลือชื่อ maven-groovy.txt คุณสามารถเขียนเอกสารวิธีใช้เพื่อทำเครื่องหมายคุณสมบัติของไดเร็กทอรีที่แบ่งใช้ในไฟล์นี้ ไฟล์วิธีใช้สามารถดูได้จากหน้า <your-jenkins-url> / Pipeline Syntax / Global

Src

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

มีบางสถานการณ์ที่ฮาร์ดแวร์ DSL ที่ยอดเยี่ยมไม่ยืดหยุ่นพอที่จะทำหน้าที่บางอย่าง ในกรณีนี้ คุณสามารถเขียนฟังก์ชันร่องแบบกำหนดเองใน src และอ่านในโค้ดไลบรารีที่ใช้ร่วมกันได้

ทรัพยากร

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

ต้องอ่าน: เงินเดือนเจนกินส์ในอินเดีย

ห้องสมุดส่วนกลางที่ใช้ร่วมกัน

มีหลายที่ที่คุณสามารถตั้งค่าไดเร็กทอรีที่ใช้ร่วมกันได้ ขึ้นอยู่กับกรณีการใช้งานของคุณ Jenkins Management » การกำหนดค่าระบบ » Global Pipe Library คุณสามารถกำหนดค่าไดเร็กทอรีจำนวนเท่าใดก็ได้ตามที่คุณต้องการ

ไลบรารีเหล่านี้พร้อมใช้งานในระดับสากลเพื่อให้ทุกไปป์ไลน์ในระบบของคุณสามารถใช้ฟังก์ชันที่นำมาใช้ในไลบรารีเหล่านี้ได้

ห้องสมุดเหล่านี้ถือว่า "เชื่อถือได้" คุณสามารถใช้วิธีการใดก็ได้ใน Java, Groovy, API ภายในของ Jenkins, ส่วนขยาย Jenkins หรือไดเร็กทอรีบุคคลที่สาม ช่วยให้คุณระบุไลบรารีที่พับ API ที่ไม่ปลอดภัยลงในซองจดหมายระดับสูงได้อย่างแม่นยำ ซึ่งสามารถใช้ได้อย่างปลอดภัยจากไปป์ไลน์ใดๆ

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

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

ไลบรารีที่ใช้ร่วมกันระดับโฟลเดอร์

โฟลเดอร์ทั้งหมดที่สร้างขึ้นสามารถเชื่อมโยงกับไดเร็กทอรีที่ใช้ร่วมกันได้ กลไกนี้ช่วยให้คุณกำหนดช่วงไดเร็กทอรีเฉพาะสำหรับไพพ์ทั้งหมดภายในโวลุ่มหรือโฟลเดอร์ย่อย

ไดเร็กทอรีตามโฟลเดอร์ไม่ถือว่า "เชื่อถือได้" มันทำงานในกล่องทรายแบบร่องเหมือนท่อทั่วไป

ห้องสมุดที่แชร์อัตโนมัติ

ปลั๊กอินอื่นๆ อาจเพิ่มวิธีการระบุไลบรารีขณะเดินทาง ตัวอย่างเช่น "โฟลเดอร์องค์กร GitHub" เป็นปลั๊กอินต้นทางที่มีให้ในแหล่งที่มาของสาขา GitHub มันมีองค์ประกอบที่อนุญาตให้สคริปต์ใช้ไลบรารีที่ไม่น่าเชื่อถือ เช่น github.com/orgname/reponame ลบการกำหนดค่าเพิ่มเติมใดๆ ในกรณีนี้ ที่เก็บ GitHub ที่ระบุจะถูกโหลดจากสาขาหลักโดยใช้การตั้งค่าที่ไม่ระบุตัวตน

เพื่อตรวจสอบการเปลี่ยนแปลงในห้องสมุด

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

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

ขณะนี้ยังไม่มี Replay ของไลบรารีที่เชื่อถือได้ให้คุณ ไม่รองรับการเปลี่ยนไฟล์ทรัพยากรระหว่างเล่นซ้ำ

อ่านเพิ่มเติม: คำถามและคำตอบสัมภาษณ์เจนกินส์

บทสรุป

สิ่งสำคัญที่ควรจดจำมีดังนี้

  • คุณจะต้องใช้ Groovy ในการเขียนขั้นตอนหรือฟังก์ชันที่กำหนดเอง
  • ไม่จำเป็นต้องเขียนขั้นตอนไปป์ไลน์ที่คุณสามารถเรียกจากไปป์ไลน์ได้
  • คุณต้องสร้างไฟล์ในไดเร็กทอรี vars ของที่เก็บที่จะมีชื่อของขั้นตอนที่คุณกำหนดเอง
  • วิธีการเรียก def ควรนำมาใช้โดยพารามิเตอร์สำหรับขั้นตอนของคุณ
  • หากจำเป็นต้องเขียนโค้ด Groovy ทั่วไป คุณสามารถเพิ่มลงใน src ได้
  • คุณยังสามารถรวมไลบรารีที่ใช้ร่วมกันในเจนกินส์ผ่านการใช้หน้าจอระบบกำหนดค่า

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการมากกว่า 9 โครงการ และการมอบหมาย , สถานะศิษย์เก่า IIIT-B, โครงการหลักที่นำไปปฏิบัติได้จริง & ความช่วยเหลือด้านงานกับบริษัทชั้นนำ

หลักสูตรการพัฒนาซอฟต์แวร์ | ปรมาจารย์ Java, C, Python และอื่นๆ‎

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์