การปรับแต่งประสิทธิภาพไปป์ไลน์
ระบุคอขวดและใช้เทคนิคขั้นสูงเพื่อเพิ่มความเร็วการทำงานและลดการใช้ทรัพยากรของเวิร์กโฟลว์ GitHub Actions
การปรับแต่งประสิทธิภาพไปป์ไลน์ เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
เพิ่มความเร็วของไปป์ไลน์
ยินดีต้อนรับสู่การปรับแต่งประสิทธิภาพไปป์ไลน์! ในการพัฒนาสมัยใหม่ ไปป์ไลน์ CI/CD ที่รวดเร็วมีความสำคัญอย่างยิ่งต่อการรับผลตอบกลับอย่างรวดเร็วและการใช้ทรัพยากรอย่างมีประสิทธิภาพ
ไปป์ไลน์ที่ทำงานช้าทำให้เสียทั้งเวลาและค่าใช้จ่าย บทเรียนนี้จะสอนเทคนิคขั้นสูงในการระบุจุดคอขวดและเพิ่มความเร็วให้เวิร์กโฟลว์ GitHub Actions ของคุณอย่างมาก
ค้นหาจุดคอขวดในเวิร์กโฟลว์
ก่อนปรับให้เหมาะสม คุณต้องทราบก่อนว่า *อะไร* ควรปรับให้เหมาะสม GitHub Actions มีเครื่องมือที่ยอดเยี่ยมสำหรับระบุขั้นตอนหรืองานที่ทำงานช้า
- ส่วนติดต่อผู้ใช้ GitHub: ดูบันทึกการทำงานของเวิร์กโฟลว์ มุมมองไทม์ไลน์จะแสดงอย่างชัดเจนว่างานและขั้นตอนแต่ละรายการใช้เวลานานเท่าใด
- สรุปงาน: มองหาขั้นตอนที่ใช้เวลานานผิดปกติ
- บันทึกการทำงาน: บันทึกโดยละเอียดอาจเผยให้เห็นคำสั่งหรือกระบวนการเฉพาะที่ใช้เวลามากที่สุด
ให้มุ่งเน้นที่ขั้นตอนที่ใช้เวลานานที่สุดอย่างสม่ำเสมอ
ทำงานอิสระหลายงานแบบขนาน
หากส่วนต่าง ๆ ของเวิร์กโฟลว์ไม่ได้ขึ้นต่อกัน ให้เรียกใช้พร้อมกันเลย! นี่เป็นวิธีที่เรียบง่ายแต่ทรงพลังในการลดเวลาการทำงานโดยรวม
กำหนดงานระดับบนสุดหลายรายการในเวิร์กโฟลว์ GitHub Actions จะเรียกใช้งานเหล่านั้นแบบขนานโดยค่าเริ่มต้น ตราบใดที่คุณไม่ได้ระบุการขึ้นต่อกันด้วย needs ระหว่างงาน
name: Parallel Jobs Example
on: [push]
jobs:
build-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Frontend
run: echo "Building frontend..."
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Backend
run: echo "Building backend..."
ปรับการดำเนินการ Checkout ให้เหมาะสม
การดำเนินการ actions/checkout จะดึงโค้ดจากคลังของคุณ สำหรับคลังขนาดใหญ่หรือคลังที่มีประวัติจำนวนมาก การดำเนินการนี้อาจใช้เวลานาน คุณสามารถปรับให้เหมาะสมได้ดังนี้:
- การโคลนแบบตื้น: ใช้
fetch-depth: 1เพื่อดึงเฉพาะการคอมมิตล่าสุด ซึ่งช่วยประหยัดเวลาได้มากสำหรับงาน CI/CD ส่วนใหญ่ - การ Checkout แบบเลือกบางส่วน: หากคุณต้องการเพียงไฟล์บางส่วน ให้พิจารณาใช้การ Checkout แบบเลือกบางส่วน (แม้โดยทั่วไปจะตั้งค่าได้ซับซ้อนกว่า)
หลีกเลี่ยง fetch-depth: 0 เว้นแต่จำเป็นอย่างยิ่ง เนื่องจากจะดาวน์โหลดประวัติทั้งหมด
name: Optimized Checkout
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1 # Only fetch the latest commit
- name: Run Build
run: echo "Code checked out and building..."
ลดขนาดอาร์ติแฟกต์ของการสร้าง
หากเวิร์กโฟลว์ของคุณอัปโหลดหรือดาวน์โหลดอาร์ติแฟกต์ (เช่น ไบนารีที่คอมไพล์แล้วหรือรายงานการทดสอบ) ขนาดของอาร์ติแฟกต์จะส่งผลโดยตรงต่อประสิทธิภาพ
หากต้องการเพิ่มความเร็ว:
- รวมเฉพาะไฟล์ที่จำเป็น: อย่าอัปโหลดไดเรกทอรีชั่วคราวจากการสร้างหรือบันทึกที่คุณไม่ต้องการ
- บีบอัดอาร์ติแฟกต์: หากเป็นไปได้ ให้บีบอัดอาร์ติแฟกต์ขนาดใหญ่ก่อนอัปโหลด การดำเนินการ
actions/upload-artifactจะจัดการบีบอัดให้โดยอัตโนมัติ แต่ควรตรวจสอบให้แน่ใจว่าไฟล์ต้นฉบับมีเฉพาะส่วนที่จำเป็น
กรองเส้นทางเพื่อประสิทธิภาพ
การเปลี่ยนแปลงโค้ดทุกครั้งไม่จำเป็นต้องเรียกใช้งานทุกงาน ใช้การกรองเส้นทางเพื่อเรียกใช้งานเฉพาะเมื่อมีการแก้ไขไฟล์ที่เกี่ยวข้อง
วิธีนี้มีประโยชน์อย่างยิ่งในคลังขนาดใหญ่ ซึ่งการเปลี่ยนแปลงเอกสารไม่ควรเรียกใช้การสร้างส่วนแบ็กเอนด์ทั้งหมด
ระบุ paths หรือ paths-ignore ภายในทริกเกอร์ on ของเวิร์กโฟลว์
name: Path Filter Example
on:
push:
paths:
- 'frontend/**'
- 'shared/**'
jobs:
build-frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Frontend
run: echo "Frontend files changed, building..."
ตัวรันที่เร็วขึ้นและการจัดสรรทรัพยากร
เครื่องเสมือน (ตัวรัน) ที่ใช้เรียกใช้เวิร์กโฟลว์มีหลายขนาดและหลายประเภท สำหรับงานที่ใช้ CPU หนัก ตัวรันที่มีประสิทธิภาพสูงกว่าสามารถลดเวลาการทำงานได้อย่างมาก
- ตัวรันที่ GitHub โฮสต์ซึ่งมีขนาดใหญ่ขึ้น: GitHub มีตัวรันขนาดใหญ่ (เช่น
ubuntu-latest-xlarge) สำหรับภาระงานที่ต้องการทรัพยากรมากขึ้น - ตัวรันที่โฮสต์เอง: หากคุณมีความต้องการด้านฮาร์ดแวร์เฉพาะ หรืออยากลดเวลาแฝงของเครือข่ายไปยังทรัพยากรภายใน ตัวรันที่โฮสต์เองสามารถปรับให้เหมาะกับข้อกำหนดเฉพาะของคุณได้
กลยุทธ์การแคชขั้นสูง
การแคชสิ่งที่ต้องพึ่งพา (เช่น แพ็กเกจ npm หรืออาร์ติแฟกต์ Maven) เป็นสิ่งจำเป็น คุณสามารถยกระดับจากการแคชพื้นฐานได้ด้วยเคล็ดลับต่อไปนี้:
- คีย์แคชแบบละเอียด: ใช้คีย์แคชที่เจาะจงมากขึ้นเพื่อหลีกเลี่ยงการไม่พบแคชโดยไม่จำเป็น ตัวอย่างเช่น รวมค่าแฮชของไฟล์ล็อกที่ระบุและ OS
- แคชหลายรายการ: อย่ารวมทุกอย่างไว้ในแคชขนาดใหญ่รายการเดียว แยกแคชตามประเภทของสิ่งที่ต้องพึ่งพา (เช่น node_modules และแพ็กเกจ pip) เพื่อเพิ่มอัตราการพบแคช
- คีย์สำหรับกู้คืน: ใช้
restore-keysเพื่อทดลองใช้คีย์แคชหลายรายการหากไม่พบคีย์หลัก ซึ่งเพิ่มโอกาสในการพบข้อมูลบางส่วน
name: Advanced Caching
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Node Modules
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: | # Try less specific keys if primary misses
${{ runner.os }}-node-
- name: Install Dependencies
run: npm ci
ปรับเวิร์กโฟลว์นี้ให้เหมาะสม
ลองพิจารณาเวิร์กโฟลว์ที่สร้างทั้งโค้ดส่วนหน้าและส่วนแบ็กเอนด์ ปัจจุบันเวิร์กโฟลว์ทำงานตามลำดับ และการ Checkout จะดึงประวัติทั้งหมด การเปลี่ยนแปลงสองข้อใดที่จะช่วยเพิ่มประสิทธิภาพได้อย่างมาก
name: Inefficient Workflow
on: [push]
jobs:
build-all:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Frontend Deps
run: npm install
- name: Build Frontend
run: npm run build
- name: Install Backend Deps
run: pip install -r requirements.txt
- name: Build Backend
run: python setup.py build
ทบทวน: ปรับแต่งเพื่อความเร็ว
คุณได้เรียนรู้เทคนิคอันทรงพลังในการปรับเวิร์กโฟลว์ GitHub Actions ให้เหมาะสมแล้ว!
- ระบุจุดคอขวด: ใช้ส่วนติดต่อผู้ใช้ GitHub และบันทึก
- ทำงานหลายงานแบบขนาน: เรียกใช้งานอิสระพร้อมกัน
- ปรับ Checkout ให้เหมาะสม: ใช้การโคลนแบบตื้น
- ลดอาร์ติแฟกต์: รักษาขนาดการอัปโหลดและดาวน์โหลดให้เล็ก
- การกรองเส้นทาง: เรียกใช้งานเฉพาะเมื่อไฟล์ที่เกี่ยวข้องมีการเปลี่ยนแปลง
- ตัวรันที่เร็วขึ้น: เลือกทรัพยากรของตัวรันให้เหมาะสม
- การแคชขั้นสูง: ใช้คีย์แบบละเอียดและแคชหลายรายการ
การนำกลยุทธ์เหล่านี้ไปใช้จะช่วยให้ไปป์ไลน์ของคุณเร็วขึ้น มีประสิทธิภาพมากขึ้น และประหยัดเวลาและทรัพยากรอันมีค่า
คำถามที่พบบ่อย
บทเรียน “การปรับแต่งประสิทธิภาพไปป์ไลน์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การปรับแต่งประสิทธิภาพไปป์ไลน์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การปรับแต่งประสิทธิภาพไปป์ไลน์”
ระบุคอขวดและใช้เทคนิคขั้นสูงเพื่อเพิ่มความเร็วการทำงานและลดการใช้ทรัพยากรของเวิร์กโฟลว์ GitHub Actions คุณปฏิบัติ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การปรับแต่งประสิทธิภาพไปป์ไลน์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม
ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวชี้วัด DORA และสุขภาพของ CI/CD
- การปรับแต่งประสิทธิภาพไปป์ไลน์
- แนวโน้มอนาคตของระบบอัตโนมัติใน DevOps
- การปรับต้นทุน CI/CD และประสิทธิภาพของตัวรัน