0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · บทเรียน

การปรับแต่งประสิทธิภาพไปป์ไลน์

ระบุคอขวดและใช้เทคนิคขั้นสูงเพื่อเพิ่มความเร็วการทำงานและลดการใช้ทรัพยากรของเวิร์กโฟลว์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวชี้วัด DORA และสุขภาพของ CI/CD
  2. การปรับแต่งประสิทธิภาพไปป์ไลน์
  3. แนวโน้มอนาคตของระบบอัตโนมัติใน DevOps
  4. การปรับต้นทุน CI/CD และประสิทธิภาพของตัวรัน
← กลับไปที่ CI/CD with GitHub Actions & DevOps Pipelines