การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ
เรียกใช้เฉพาะเวิร์กโฟลว์และงานที่ได้รับผลกระทบจากการเปลี่ยนแปลง ด้วยตัวกรองเส้นทาง การตรวจจับการเปลี่ยนแปลง และเมทริกซ์แบบมีเงื่อนไขในคลังโค้ดหลายโปรเจกต์และการตั้งค่าหลายคลัง
การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาการสร้างโดยเปล่าประโยชน์
ในโมโนรีโพ การเปลี่ยนแปลงเอกสารไม่ควรทำให้ต้องสร้างและนำระบบแบ็กเอนด์ ฟรอนต์เอนด์ และแอปมือถือไปใช้งานใหม่
การสร้างแบบเลือกเฉพาะส่วนจะทำงานเฉพาะส่วนของไปป์ไลน์ที่ได้รับผลกระทบจากการเปลี่ยนแปลง ช่วยประหยัดเวลาและนาทีการทำงานของตัวรันเนอร์
ตัวกรองเส้นทางบนทริกเกอร์
แนวทางที่ง่ายที่สุดคือใช้ตัวกรอง paths บนทริกเกอร์ เวิร์กโฟลว์จะทำงานเมื่อไฟล์ที่ตรงกับรูปแบบมีการเปลี่ยนแปลงเท่านั้น
on:
push:
paths:
- 'services/api/**'การไม่รวมเส้นทาง
คุณสามารถทำในทางกลับกันด้วย paths-ignore โดยให้เวิร์กโฟลว์ทำงานกับทุกอย่าง ยกเว้นเส้นทางที่ระบุ
เหมาะสำหรับข้าม CI เมื่อมีการเปลี่ยนแปลงเฉพาะเอกสาร
on:
push:
paths-ignore:
- 'docs/**'
- '**.md'ข้อจำกัดของตัวกรองทริกเกอร์
ตัวกรองระดับทริกเกอร์จะตัดสินใจว่าเวิร์กโฟลว์ทั้งหมดจะทำงานหรือไม่ แต่ในโมโนรีโพ คุณมักต้องการให้เวิร์กโฟลว์หนึ่งรายการตัดสินใจว่างานใดควรทำงาน
สำหรับกรณีนี้ ให้ตรวจหาการเปลี่ยนแปลงภายในเวิร์กโฟลว์ แล้วเลือกแขนงตามผลลัพธ์
แอ็กชันตรวจหาการเปลี่ยนแปลง
แอ็กชัน dorny/paths-filter จะตรวจสอบส่วนต่างและส่งออกค่าบูลีนสำหรับกลุ่มเส้นทางแต่ละกลุ่มที่ตั้งชื่อไว้
งานถัดไปจะอ่านค่าผลลัพธ์เหล่านี้เพื่อตัดสินใจว่าจะทำงานหรือไม่
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
api:
- 'services/api/**'
web:
- 'services/web/**'กำหนดเงื่อนไขให้งานทำงานตามการเปลี่ยนแปลง
งานตรวจจับจะแสดงผลลัพธ์ออกมา ส่วนงานถัดไปจะใช้ if ร่วมกับบริบท needs เพื่อทำงานตามเงื่อนไข
build-api:
needs: detect
if: needs.detect.outputs.api == 'true'
runs-on: ubuntu-latest
steps:
- run: ./build-api.shเชื่อมต่อผลลัพธ์
งานตรวจจับต้องประกาศ outputs เพื่อส่งต่อผลลัพธ์ของตัวกรอง ให้ งานอื่นอ่านค่าได้
detect:
runs-on: ubuntu-latest
outputs:
api: ${{ steps.changes.outputs.api }}
web: ${{ steps.changes.outputs.web }}เมทริกซ์แบบไดนามิก
สำหรับบริการจำนวนมาก คุณสามารถสร้างเมทริกซ์แบบไดนามิกจากเส้นทางที่เปลี่ยนแปลง เพื่อให้มีเฉพาะบริการที่เปลี่ยนแปลงเท่านั้นที่เข้าสู่เมทริกซ์
สร้างรายการ JSON ในงานหนึ่ง แล้วส่งเข้าเมทริกซ์ของงานถัดไป
strategy:
matrix:
service: ${{ fromJSON(needs.detect.outputs.list) }}Git Diff สำหรับการตรวจจับ
คุณยังสามารถตรวจหาการเปลี่ยนแปลงด้วย git ดิบได้ โดยเปรียบเทียบคอมมิตปัจจุบันกับฐาน เพื่อแสดงรายการไดเรกทอรีที่เปลี่ยนแปลง
git diff --name-only origin/main...HEAD | cut -d/ -f1-2 | sort -uการตรวจสอบที่จำเป็นและการข้ามงาน
โปรดระวัง: หากข้ามการตรวจสอบสถานะที่จำเป็นเพราะไม่มีการเปลี่ยนแปลง การป้องกันสาขาอาจบล็อกการรวมโค้ด โดยรอการตรวจสอบนั้น
วิธีแก้คือเพิ่มงานประตูสุดท้ายที่สำเร็จเสมอ และกำหนดให้เป็นการตรวจสอบที่จำเป็นเพียงรายการเดียว เพื่อสรุปงานที่ทำตามเงื่อนไข
gate:
needs: [build-api, build-web]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo 'all required jobs resolved'แคชแยกตามแพ็กเกจ
การสร้างแบบเลือกเฉพาะส่วนทำงานร่วมกับแคชแยกตามแพ็กเกจได้ดี กำหนดคีย์แคชจากไฟล์ล็อกของแต่ละบริการ เพื่อไม่ให้การเปลี่ยนแปลงที่ไม่เกี่ยวข้องทำให้แคชใช้ไม่ได้
เมื่อใช้ร่วมกัน ทั้งสองแนวทางช่วยให้ไปป์ไลน์ของโมโนรีโพรวดเร็ว แม้รีโพจะขยายใหญ่ขึ้น
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับการสร้างแบบเลือกเฉพาะส่วน
สรุปทบทวน
คุณได้เรียนรู้การสร้างเฉพาะสิ่งที่เปลี่ยนแปลง
pathsและpaths-ignoreใช้กำหนดเงื่อนไขให้เวิร์กโฟลว์ทั้งหมด- แอ็กชันตรวจหาการเปลี่ยนแปลงจะส่งออกค่าบูลีนแยกตามเส้นทาง
- งานใช้
if+needsเพื่อทำงานตามเงื่อนไข และสามารถสร้างเมทริกซ์แบบไดนามิกได้ - เพิ่มงานประตูด้วย
always()เพื่อให้เข้ากันได้กับการตรวจสอบที่จำเป็น
การสร้างแบบเลือกเฉพาะส่วนช่วยให้ CI/CD ของโมโนรีโพรวดเร็วและประหยัด
คำถามที่พบบ่อย
บทเรียน “การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ”
เรียกใช้เฉพาะเวิร์กโฟลว์และงานที่ได้รับผลกระทบจากการเปลี่ยนแปลง ด้วยตัวกรองเส้นทาง การตรวจจับการเปลี่ยนแปลง และเมทริกซ์แบบมีเงื่อนไขในคลังโค้ดหลายโปรเจกต์และการตั้งค่าหลายคลัง คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CI/CD with GitHub Actions & DevOps Pipelines บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม
ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- CI/CD สำหรับคลังโค้ดแบบรวม
- เวิร์กโฟลว์ข้ามคลังโค้ด
- การจัดการเวิร์กโฟลว์แบบรวมศูนย์
- การกรองเส้นทางและการสร้างแบบเลือกเฉพาะ