Jenkins บทช่วยสอนเกี่ยวกับ Pipeline: วิธีการสร้าง Jenkinsไฟล์ (ตัวอย่าง)

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 ท่อส่ง: กลุ่มของเหตุการณ์ที่เชื่อมโยงกัน โดยแต่ละเหตุการณ์ขึ้นอยู่กับเหตุการณ์ก่อนหน้า
  • ☑️ Jenkinsไฟล์: ไฟล์ข้อความในภาษาเฉพาะโดเมนที่เก็บขั้นตอนทั้งหมดของไปป์ไลน์
  • สองรูปแบบไวยากรณ์: การเขียนโปรแกรมแบบประกาศ (Declarative) นำเสนอโครงสร้างลำดับชั้นที่ตายตัว ในขณะที่การเขียนโปรแกรมแบบสคริปต์ (Scripted) จะแลกเปลี่ยนโครงสร้างสำหรับ... Groovy ควบคุม
  • 🧪 สี่คำ: ชื่อไปป์ไลน์ โหนด ขั้นตอน และระยะ ใช้ในการกำหนดกระบวนการทำงาน เครื่องจักร เฟส และงาน
  • 🛠️ เส้นทางการตั้งค่า: ติดตั้งปลั๊กอิน Build Pipeline เพิ่มมุมมอง Pipeline เชื่อมโยงงานต่างๆ แล้วเรียกใช้งาน
  • 📌 การปฏิบัติ: จัดวางงานที่เกี่ยวข้องกับวัสดุไว้ในบล็อกโหนด งานที่ไม่เกี่ยวข้องกับการตั้งค่าไว้ในขั้นตอนการทำงาน และห่อหุ้มอินพุตด้วยการกำหนดเวลาหมดอายุ

Jenkins ไปป์ไลน์ถูกกำหนดให้เป็นโค้ดใน Jenkinsเนื้อไม่มีมัน

ความหมายของ Jenkins ท่อส่ง?

Jenkins Pipeline คือชุดปลั๊กอินที่สนับสนุนการบูรณาการและการใช้งาน ไปป์ไลน์การส่งมอบอย่างต่อเนื่องเป็นเซิร์ฟเวอร์อัตโนมัติที่ขยายได้สำหรับการสร้างไปป์ไลน์การส่งมอบแบบง่ายและซับซ้อนโดยใช้โค้ดผ่านภาษาเฉพาะของไปป์ไลน์ (Pipeline DSL) ไปป์ไลน์คือกลุ่มของเหตุการณ์ที่เชื่อมโยงกันตามลำดับ

ไปป์ไลน์การจัดส่งแบบต่อเนื่องคืออะไร? มันทำงานอย่างไร?

ใน Jenkins ในไปป์ไลน์ ทุกงานหรือเหตุการณ์จะมีส่วนเกี่ยวข้องกับเหตุการณ์อย่างน้อยหนึ่งเหตุการณ์ขึ้นไป ดังแสดงในแผนภาพด้านล่าง

ขั้นตอนการส่งมอบอย่างต่อเนื่อง (Continuous Delivery Pipeline) ประกอบด้วย การสร้าง การปรับใช้ การทดสอบ และการเผยแพร่ Jenkins
การทำงานของ Jenkins ไปป์ไลน์การส่งมอบอย่างต่อเนื่อง

ภาพด้านบนแสดงถึงไปป์ไลน์การส่งมอบอย่างต่อเนื่องใน Jenkinsประกอบด้วยสถานะต่างๆ ได้แก่ สร้าง (build), ปรับใช้ (deploy), ทดสอบ (test) และเผยแพร่ (release) แต่ละสถานะจะมีเหตุการณ์ของตัวเอง ซึ่งจะเกิดขึ้นตามลำดับ

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

อะไรคือ a Jenkinsไฟล์?

Jenkins สามารถกำหนดไปป์ไลน์ได้ในไฟล์ข้อความที่เรียกว่า Jenkinsไฟล์นี้แสดงขั้นตอนการทำงานของไปป์ไลน์ในรูปแบบโค้ดโดยใช้ภาษาเฉพาะโดเมน (DSL) และเก็บทุกขั้นตอนที่จำเป็นในการรันไปป์ไลน์

ประโยชน์ของการใช้ Jenkinsไฟล์มีดังนี้:

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

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

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying'
            }
        }
    }
}

การบันทึกไฟล์ไว้ที่ไดเร็กทอรีหลักของที่เก็บโค้ด จะเป็นการสร้างเวอร์ชันใหม่ให้กับไปป์ไลน์พร้อมกับโค้ดนั้น

ไวยากรณ์ของไปป์ไลน์แบบประกาศเทียบกับแบบสคริปต์

มีสองประเภทเป็น Jenkins ไวยากรณ์ของไปป์ไลน์ที่ใช้สำหรับการกำหนดค่าของคุณ Jenkinsไฟล์.

  1. ประกาศ
  2. สคริปต์

ประกาศ

ไวยากรณ์ของไปป์ไลน์แบบประกาศ (Declarative pipeline syntax) เป็นวิธีที่ง่ายกว่าที่คิด เพราะมันปฏิบัติตามลำดับชั้นที่กำหนดไว้ล่วงหน้า และยังควบคุมทุกแง่มุมของการดำเนินการไปป์ไลน์ได้อย่างตรงไปตรงมา

สคริปต์

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

⚠️ หมายเหตุ Jenkins ตอนนี้เรียกว่า เจ้านาย ตัวควบคุม.

ทำไมต้องใช้ Jenkins ท่อส่ง?

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

นี่คือเหตุผลที่คุณควรใช้ Jenkins ท่อส่ง:

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

Jenkins ท่อ Concepts

คำศัพท์สี่คำนี้ปรากฏซ้ำในทุกๆ Jenkinsไฟล์:

เทอมDescriptไอออน
ท่อไปป์ไลน์คือชุดคำสั่งที่เขียนในรูปแบบโค้ด ซึ่งครอบคลุมกระบวนการสร้างทั้งหมดสำหรับการส่งมอบอย่างต่อเนื่อง (Continuous Delivery) ด้วยไปป์ไลน์ คุณสามารถสร้าง ทดสอบ และส่งมอบแอปพลิเคชันได้
โหนดเครื่องจักรซึ่ง Jenkins คำสั่ง `runs` เรียกว่า `node` บล็อก `node` ส่วนใหญ่ใช้ในไวยากรณ์ของไปป์ไลน์แบบสคริปต์
ระยะบล็อกขั้นตอนประกอบด้วยขั้นตอนต่างๆ กระบวนการสร้าง ทดสอบ และปรับใช้ จะมารวมกันในแต่ละขั้นตอน ซึ่งเป็นสิ่งที่แสดงให้เห็นในมุมมองไปป์ไลน์ด้วย
ขั้นตอนงานเดียวที่ดำเนินการตามกระบวนการเฉพาะในเวลาที่กำหนด ไปป์ไลน์คือชุดของขั้นตอนต่างๆ

ติดตั้งปลั๊กอิน Build Pipeline ใน Jenkins

ปลั๊กอิน Build Pipeline สร้างมุมมองไปป์ไลน์ของงานขาเข้าและขาออก และเพิ่มทริกเกอร์สำหรับการแทรกแซงด้วยตนเอง

ติดตั้งตามขั้นตอนต่อไปนี้:

ขั้นตอน 1) คุณสามารถค้นหาการตั้งค่าสำหรับปลั๊กอินได้ที่... จัดการ Jenkins > จัดการปลั๊กอิน, แสดงด้านล่าง.

⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: ปัจจุบัน Jenkins เผยแพร่ป้ายกำกับหน้าจอนี้ จัดการ Jenkins → ปลั๊กอินแท็บต่างๆ ทำงานตามที่อธิบายไว้ในที่นี้

หน้าจัดการปลั๊กอินใน Jenkins ตำแหน่งที่การตั้งค่าปลั๊กอิน Build Pipeline อยู่

หากคุณได้ติดตั้งปลั๊กอินแล้ว ปลั๊กอินจะแสดงอยู่ใต้แท็บที่ติดตั้ง

แท็บที่ติดตั้งของ Jenkins ตัวจัดการปลั๊กอินที่แสดงรายการปลั๊กอินไปป์ไลน์การสร้าง

ขั้นตอน 2) หากยังไม่ได้ติดตั้งปลั๊กอิน จะปรากฏอยู่ในแท็บ "พร้อมใช้งาน"

เมื่อติดตั้งปลั๊กอินแล้ว:

วิธีการสร้าง Jenkins ท่อ

เมื่อคุณเข้าสู่ระบบ Jenkins หน้าปัด:

ขั้นตอน 1) คลิกที่ปุ่ม “+” ทางด้านซ้ายมือของคุณ Jenkins แดชบอร์ดสำหรับสร้างไปป์ไลน์

ปุ่มบวกบน Jenkins แดชบอร์ดใช้สำหรับเพิ่มมุมมองใหม่

ขั้นตอน 2) กรอกข้อมูลในกล่องโต้ตอบมุมมองใหม่:

  1. ตั้งชื่อให้กับมุมมองไปป์ไลน์นี้ เราจะเรียกมันว่า “Guruใช้ "99 Pipeline" สำหรับการสาธิตนี้
  2. เลือก "สร้างมุมมองไปป์ไลน์" ในตัวเลือก
  3. คลิกตกลงตามที่แสดงด้านล่าง

หน้าต่างแสดงมุมมองใหม่ โดยป้อนชื่อมุมมองไปป์ไลน์ และเลือก "สร้างมุมมองไปป์ไลน์"

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

คลิกที่ปุ่ม "ใช้" แล้วคลิก "ตกลง"

สร้างหน้าการกำหนดค่ามุมมองไปป์ไลน์ด้วยการตั้งค่าเริ่มต้นและเลือกงานแรก

จากนั้นตัวอย่างมุมมองขั้นตอนการผลิตของสินค้าของคุณจะปรากฏขึ้น:

ตัวอย่าง Jenkins สร้างมุมมองไปป์ไลน์สำหรับ Guruรายการท่อส่ง 99 รายการ

เรียกใช้งานสร้างไปป์ไลน์

ขั้นตอน 1) เริ่มจากการเชื่อมโยงงานก่อน: เปิดงานแรกของคุณแล้วคลิกที่กำหนดค่า

กำหนดค่าลิงก์ในครั้งแรก Jenkins งานที่เคยเริ่มต้นการเชื่อมโยงงาน

ขั้นตอน 2) ตอนนี้ ในส่วน Build Triggers ให้เลือกตัวเลือก Build after other projects are built

ส่วน Build Triggers โดยเลือกตัวเลือก Build after other projects are built

ปัจจุบันมีห่วงโซ่สำหรับงานทั้งหมดของคุณแล้ว

ขั้นตอน 3) ติดตั้งปลั๊กอิน Build Pipeline view หากยังไม่ได้ติดตั้ง

ขั้นตอน 4) เกี่ยวกับ Jenkins บนแดชบอร์ด สร้างมุมมองโดยใช้ปุ่ม "+" เลือกตัวเลือก สร้างมุมมองไปป์ไลน์ แล้วคลิก ตกลง

หน้าต่างโต้ตอบมุมมองใหม่ โดยเลือกตัวเลือก "มุมมอง Build Pipeline"

ขั้นตอน 5) ภายใต้การตั้งค่ามุมมอง Pipeline ให้ค้นหา Pipeline Flow

ภายใต้หัวข้อการไหลของไปป์ไลน์ ให้เลือกงานเริ่มต้นที่จะเรียกใช้ ซึ่งเป็นงานที่เชื่อมโยงกับงานอื่นๆ ในขั้นตอนที่ 1 และ 2

การตั้งค่าการไหลของท่อด้วย Guru99 โครงการที่ 1 ได้รับเลือกให้เป็นงานเริ่มต้น

Guru99 โครงการที่ 1 ถูกเลือกให้เป็นงานเริ่มต้น ดังนั้นงานที่เชื่อมโยงกันจะทำงานทีละงาน

ขณะที่ท่อส่งกำลังทำงาน สัญลักษณ์สีแดงและสีเขียวจะแสดงสถานะ: สีแดงหมายถึงล้มเหลว สีเขียวหมายถึงสำเร็จ

ในตัวอย่างนี้ ปุ่มเป็นสีเขียว แสดงว่ากระบวนการทำงานสำเร็จ

ปุ่มสถานะสีเขียวแสดงว่าสำเร็จ Jenkins การทำงานของไปป์ไลน์

เล่น Jenkins ท่อ

คลิกที่ปุ่ม Run เพื่อเรียกใช้งาน Jenkins ขั้นตอนการทำงานจะออกมาประมาณนี้:

ปุ่ม Run บน Jenkins สร้างมุมมองไปป์ไลน์

ตัวอย่างข้างต้นสร้างโปรแกรม "helloworld.java" อย่างง่ายๆ แต่โครงการจริงนั้นมีกระบวนการทำงานที่ซับซ้อนกว่ามาก ดังที่เห็นได้จากภาพรวมด้านล่าง

เสร็จ Jenkins มุมมองของไปป์ไลน์การสร้างที่แสดงงานทั้งหมดที่เชื่อมโยงกันตามลำดับ

⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: ปลั๊กอิน Build Pipeline view เป็นวิธีการเดิมในการแสดงภาพงานแบบ freestyle ที่เชื่อมโยงกัน แนวทางปฏิบัติในปัจจุบันกำหนดขั้นตอนเดียวกันนี้ในรูปแบบอื่น Jenkinsไฟล์สีน้ำเงิน Ocean ไม่ได้รับการปรับปรุงอีกต่อไปแล้ว

แนวปฏิบัติที่ดีที่สุดโดยใช้ Jenkins ท่อ

เจ็ดนิสัยสำคัญที่จะช่วยให้ระบบท่อส่งข้อมูลสามารถบำรุงรักษาได้:

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

คำถามที่พบบ่อย

มันจะสแกนที่เก็บข้อมูล ค้นหาทุกสาขาที่มี Jenkinsสร้างไฟล์และสร้างงานสำหรับแต่ละไฟล์ พฤติกรรมของสาขาจะขึ้นอยู่กับตัวแปร BRANCH_NAME ในไฟล์นั้น

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

โปรแกรมจะทำงานต่อหลังจากขั้นตอนต่างๆ เสร็จสิ้น ไม่ว่าผลลัพธ์จะเป็นอย่างไรก็ตาม เงื่อนไขต่างๆ เช่น เสมอ สำเร็จ ล้มเหลว และไม่เสถียร จะช่วยให้ไฟล์เดียวเผยแพร่รายงาน จัดเก็บสิ่งประดิษฐ์ และแจ้งเตือนทีมโดยไม่ต้องทำซ้ำ

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

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

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

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

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

สรุปโพสต์นี้ด้วย: