วิธีการสร้างท่อส่งเจนกินส์ครั้งแรกของคุณ?

คำแนะนำทีละขั้นตอนในการสร้างท่อส่งเจนกินส์


ทำไมต้อง Jenkins Pipeline?

การส่งมอบอย่างต่อเนื่อง (CD) เป็นส่วนสำคัญของวัฏจักร DevOps.

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

ใน DevOps การรวมอย่างต่อเนื่องและการจัดส่งอย่างต่อเนื่อง (CI / CD) นั้นทำได้ผ่านทางท่อส่งเจนกินส์ การใช้ Jenkins Pipeline สำหรับซีดีช่วยในการส่งมอบซอฟต์แวร์ที่มีการเปิดตัวที่รวดเร็วและบ่อยครั้ง สิ่งนี้จะช่วยในการรวมคำติชมในทุกรุ่นถัดไป.

Jenkins Pipeline คืออะไร?

Jenkins Pipeline เป็นการรวมกันของงานเพื่อส่งมอบซอฟต์แวร์อย่างต่อเนื่องโดยใช้ Jenkins.

ฉันถือว่าคุณรู้ว่าเจนกินส์คืออะไร ถ้าไม่เช่นนั้นตรวจสอบสิ่งนี้ หลักสูตร Udemy ที่จะเชี่ยวชาญ Jenkins.

ไปป์ไลน์เจนกินส์ประกอบด้วยหลายรัฐหรือหลายขั้นตอนและพวกเขาจะถูกดำเนินการในลำดับหนึ่งหลังจากที่อื่น ๆ JenkinsFile เป็นไฟล์ข้อความธรรมดาที่ใช้ในการสร้างไปป์ไลน์เป็นรหัสใน Jenkins มันมีรหัสใน Groovy Domain Specific Language (DSL) ซึ่งง่ายต่อการเขียนและมนุษย์อ่านได้.

ไม่ว่าคุณจะสามารถรัน JenkinsFile แยกกันหรือคุณสามารถเรียกใช้ไพพ์ไลน์จาก Jenkins Web UI ได้เช่นกัน มีสองวิธีที่คุณสามารถสร้างไปป์ไลน์โดยใช้เจนกินส์.

  • Declarative – วิธีใหม่ในการสร้าง Jenkins Pipeline ที่นี่คุณเขียนรหัส groovy ที่มีบล็อก“ ไปป์ไลน์” ซึ่งถูกตรวจสอบใน SCM (การจัดการรหัสที่มา)
  • Scripted – วิธีการเขียนโค้ด groovy โดยที่โค้ดนั้นถูกกำหนดไว้ในบล็อค“ node”.

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

สร้างท่อส่งเจนกินส์

นี่คือลักษณะการไหลของไปป์ไลน์เจนกินส์ซึ่งประกอบด้วยหลายขั้นตอนระหว่างผู้พัฒนาที่สร้างซอฟต์แวร์ (การเข้ารหัส) และซอฟต์แวร์ที่ส่งมอบในการผลิต.

เจนกินส์ไปป์ไลน์

มาสร้างท่อส่งที่เปิดเผย.

บนแผงควบคุมของ Jenkins คลิกที่รายการใหม่ จากนั้นป้อนชื่อรายการเช่น ‘ท่อส่งแรก’ แล้วเลือกโครงการ ‘ท่อส่ง’ จากนั้นคลิกที่ตกลง.

รายการใหม่ - Jenkins Pipeline

คลิกที่แท็บ Pipeline ดังแสดงในภาพด้านล่างแล้วใส่รหัส JenkinsFile (Groovy Code) ที่นี่.

รหัสเจนกินส์ไฟล์

ไปป์ไลน์
ตัวแทนใด ๆ
ขั้นตอนที่ {
เวที (‘สร้าง’) {
ขั้นตอน {
echo ‘สวัสดี GeekFlare การเริ่มสร้างแอป ‘
}
}
เวที (‘ทดสอบ’) {
ขั้นตอน {
อินพุต (‘คุณต้องการดำเนินการต่อหรือไม่’)
}
}
เวที (‘ปรับใช้’) {
ขนาน
สเตจ (‘เริ่มการปรับใช้’) {
ขั้นตอน {
เสียงสะท้อน "เริ่มการปรับใช้ .."
}
}
สเตจ (‘ปรับใช้ทันที’) {
ตัวแทน {
นักเทียบท่า {
reuseNode จริง
ภาพ ‘nginx’
}
}

ขั้นตอน {
เสียงสะท้อน "สร้างนักเทียบท่าแล้ว"
}
}
}
}
เวที (‘Prod’) {
ขั้นตอน {
เสียงสะท้อน "แอพคือ Prod Ready"
}

}
}
}

ผมขออธิบายบล็อกข้างต้น.

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

รหัส Groovy ด้านบนฉันใช้สำหรับ JenkinsFile ตัวแทนใด ๆ ที่มีอยู่กำลังได้รับมอบหมายไปป์ไลน์ จากนั้นฉันก็กำหนดขั้นตอนการสร้างและดำเนินการขั้นตอนการสะท้อนง่าย ๆ จากนั้นฉันกำหนดขั้นตอนการทดสอบโดยที่ขั้นตอนถามว่าคุณต้องการดำเนินการต่อหรือไม่ หลังจากนั้นฉันได้สร้างขั้นตอนการปรับใช้ซึ่งมีอีกสองขั้นตอนในการทำงานแบบขนาน Deploy start stage มีขั้นตอนด้วยคำสั่ง echo และขณะนี้การปรับใช้มีขั้นตอนที่ดึงอิมเมจ docker ของ Nginx บนโหนด ในที่สุดก็มีเวที Prod ที่มีขั้นตอนเสียงก้องง่าย ๆ.

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

เมื่อคุณมีรหัสในแท็บ Pipeline คลิกที่ Apply and Save สุดท้ายคลิกที่ Build Now เพื่อเริ่มสร้าง Jenkins Pipeline ที่คุณเพิ่งสร้างขึ้น.

สร้างทันที

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

เจนกิ้นส์สร้าง 27

ตอนนี้คลิกที่บิลด์ # 27 แล้วคลิกที่เอาต์พุตคอนโซลเพื่อตรวจสอบว่าเกิดอะไรขึ้นในแบ็คเอนด์เมื่อมันรัน.

เจนกินส์สร้าง

นี่คือลักษณะที่เอาต์พุตจะมีลักษณะลงท้ายด้วยข้อความ SUCCESS.

เอาต์พุตคอนโซลที่สำเร็จ

เริ่มโดยผู้ใช้ geekflare
ทำงานในระดับความทนทาน: MAX_SURVIVABILITY
[ไปป์ไลน์] เริ่มต้นของไปป์ไลน์
[Pipeline] โหนด
ทำงานบน Jenkins ใน / var / lib / jenkins / workspace / First Pipeline
[ท่อส่ง] {
[ท่อส่ง] เวที
[ท่อส่ง] {(สร้าง)
[ท่อส่ง] เสียงสะท้อน
สวัสดี GeekFlare เริ่มสร้างแอพ.
[ท่อส่ง]}
[Pipeline] // stage
[ท่อส่ง] เวที
[ท่อส่ง] {(ทดสอบ)
[ท่อส่ง] อินพุต
คุณต้องการที่จะดำเนินการต่อไป?
ดำเนินการต่อหรือยกเลิก
อนุมัติโดย geekflare
[ท่อส่ง]}
[Pipeline] // stage
[ท่อส่ง] เวที
[ท่อส่ง] {(ปรับใช้)
[ท่อส่ง] ขนาน
[ท่อส่ง] {(สาขา: เริ่มใช้งาน)
[ท่อส่ง] {(สาขา: ปรับใช้ทันที)
[ท่อส่ง] เวที
[ไปป์ไลน์] {(เริ่มการนำไปใช้งาน)
[ท่อส่ง] เวที
[ไปป์ไลน์] {(ปรับใช้ทันที)
[Pipeline] getContext
[ท่อส่ง] คือยูนิกซ์
[ไปป์] sh
[ท่อส่ง] สะท้อน
เริ่มการปรับใช้ ..
[ท่อส่ง]}
+ นักเทียบท่าตรวจสอบ -f Nginx
[Pipeline] // stage
[ท่อส่ง]}

ข้อผิดพลาด: ไม่มีวัตถุดังกล่าว: nginx
[ท่อส่ง] คือยูนิกซ์
[ไปป์] sh
+ นักเทียบท่าดึง nginx
ใช้แท็กเริ่มต้น: ล่าสุด
ล่าสุด: การดึงจาก library / nginx
8d691f585fa8: การดึงเลเยอร์ fs
5b07f4e08ad0: การดึงเลเยอร์ fs
abc291867bca: การดึงเลเยอร์ fs
abc291867bca: การตรวจสอบผลรวมตรวจสอบ
abc291867bca: ดาวน์โหลดเสร็จสมบูรณ์
5b07f4e08ad0: การตรวจสอบผลรวมตรวจสอบ
5b07f4e08ad0: ดาวน์โหลดเสร็จสมบูรณ์
8d691f585fa8: การตรวจสอบผลรวมตรวจสอบ
8d691f585fa8: ดาวน์โหลดเสร็จสมบูรณ์
8d691f585fa8: ดึงเสร็จแล้ว
5b07f4e08ad0: ดึงเสร็จแล้ว
abc291867bca: ดึงสมบูรณ์
สรุปข้อมูล: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
สถานะ: ดาวน์โหลดรูปภาพที่ใหม่กว่าสำหรับ nginx: ล่าสุด
[Pipeline] withDockerContainer
เจนกินส์ดูเหมือนจะไม่ได้ทำงานอยู่ภายในภาชนะ
$ นักเทียบท่าวิ่ง -t -d -u 125: 131 -w "/ var / lib / jenkins / workspace / First Pipeline" -โวลต์ "/ var / lib / jenkins / พื้นที่ทำงาน / First Pipeline: / var / lib / jenkins / พื้นที่ทำงาน / First Pipeline: rw, z" -โวลต์ "/ var / lib / เจนกินส์ / พื้นที่ทำงาน / แรก [email protected]: / var / lib / เจนกินส์ / พื้นที่ทำงาน / แรก [email protected]: RW, Z" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** แมว nginx
$ นักเทียบท่าด้านบน 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, comm
[ท่อส่ง] {
[ท่อส่ง] สะท้อน
สร้างนักเทียบท่าแล้ว
[ท่อส่ง]}
$ นักเทียบท่าหยุด –time = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ นักเทียบท่า rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[ท่อส่ง]}
[Pipeline] // stage
[ท่อส่ง]}
[ท่อส่ง] // ขนาน
[ท่อส่ง]}
[Pipeline] // stage
[ท่อส่ง] เวที
[ท่อส่ง] {(Prod)
[ท่อส่ง] เสียงสะท้อน
แอพคือ Prod Ready
[ท่อส่ง]}
[Pipeline] // stage
[ท่อส่ง]}
[ไปป์ไลน์] // โหนด
[ท่อส่ง] สิ้นสุดท่อส่งก๊าซ
เสร็จสิ้น: สำเร็จ

Jenkins Pipeline ข้างต้นได้สร้างรูปภาพนักเทียบท่าของ Nginx คุณสามารถตรวจสอบได้โดยเรียกใช้คำสั่งด้านล่าง คุณสามารถดูอิมเมจของ Nginx docker ได้เช่นกัน.

[email protected]: ~ $ ภาพนักเทียบท่า ls
ขนาดของ ID ที่สร้างซ้ำของแท็ก RepOSITORY
nginx ล่าสุด 540a289bab6c 2 สัปดาห์ที่ผ่านมา 126MB
httpd ล่าสุด 7d85cc3b2d80 2 เดือนที่ผ่านมา 154MB
redis ล่าสุด f7302e4ab3a8 2 เดือนที่ผ่านมา 98.2MB
geekflare_mongodb ล่าสุด 095d17727ca0 3 เดือนที่ผ่านมา 325MB

ข้อสรุป

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map