0Pricing
C++ Academy · บทเรียน

การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++

ตั้งค่า GitHub Actions CI สำหรับโปรเจกต์ C++ พร้อมการสร้างหลายแพลตฟอร์ม

การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++ เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องผสานรวมอย่างต่อเนื่อง

การผสานรวมอย่างต่อเนื่องจะเรียกใช้การทดสอบของคุณโดยอัตโนมัติในทุกการคอมมิต ช่วยตรวจพบการทำงานที่เสียหายได้ตั้งแต่เนิ่น ๆ บังคับใช้คุณภาพ และช่วยให้มนุษย์ไม่ต้องตรวจสอบด้วยตนเอง

การทำงานของ GitHub

ระบบการผสานรวมอย่างต่อเนื่องที่ได้รับความนิยมสูงสุดสำหรับโอเพนซอร์ส กำหนดกระบวนการทำงานในไฟล์ YAML ภายใต้ .github/workflows/

# .github/workflows/build.yml
name: Build and Test
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Configure
        run: cmake -B build
      - name: Build
        run: cmake --build build
      - name: Test
        run: ctest --test-dir build

การสร้างสำหรับหลายแพลตฟอร์ม

เรียกใช้บน Linux, macOS และ Windows พร้อมกันด้วยเมทริกซ์

strategy:
  matrix:
    os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}

คอมไพเลอร์หลายชนิด

ทดสอบกับคอมไพเลอร์หลายชนิด (GCC, Clang, MSVC) และมาตรฐานหลายแบบ (C++17, C++20) การสร้างด้วยเมทริกซ์ช่วยตรวจพบปัญหาด้านการรองรับข้ามแพลตฟอร์ม

การสร้างด้วยเครื่องมือตรวจสอบ

เพิ่มงานที่สร้างด้วย AddressSanitizer และ ThreadSanitizer การทดสอบจะทำงานช้าลง แต่ช่วยตรวจพบข้อผิดพลาดจริง

การแคชสิ่งที่ต้องพึ่งพา

แคชผลลัพธ์การสร้างและการติดตั้งสิ่งที่ต้องพึ่งพาเพื่อเร่งการทำงานของการผสานรวมอย่างต่อเนื่อง

- uses: actions/cache@v4
  with:
    path: build/_deps
    key: ${{ runner.os }}-deps-${{ hashFiles('CMakeLists.txt') }}

ความครอบคลุมของโค้ด

สร้างด้วย --coverage (gcc) หรือ -fprofile-instr-generate -fcoverage-mapping (clang) อัปโหลดไปยัง Codecov หรือ Coveralls เพื่อติดตามแนวโน้ม

การวิเคราะห์แบบสถิติในการผสานรวมอย่างต่อเนื่อง

เรียกใช้ clang-tidy และ cppcheck ในทุก PR ทำให้การสร้างล้มเหลวเมื่อมีคำเตือนใหม่

การบังคับใช้รูปแบบ

ใช้ clang-format พร้อมไฟล์ .clang-format ที่ครอบคลุมทั้งโครงการ การผสานรวมอย่างต่อเนื่องจะปฏิเสธโค้ดที่ไม่ได้จัดรูปแบบ

- name: Check format
  run: clang-format --dry-run --Werror src/*.cpp

GitLab CI

สำหรับการติดตั้งระบบบนเซิร์ฟเวอร์ของตนเอง GitLab CI มีลักษณะคล้ายกัน กำหนด .gitlab-ci.yml ด้วยขั้นตอนและงานต่าง ๆ

Jenkins, CircleCI, BuildKite

ตัวเลือกอื่นสำหรับการผสานรวมอย่างต่อเนื่อง:

  • Jenkins — ติดตั้งบนเซิร์ฟเวอร์ของตนเองและยืดหยุ่นมาก
  • CircleCI — บริการคลาวด์ที่มีความสามารถสูงและผสานรวมกับ Docker
  • BuildKite — แบบผสม (ระนาบควบคุมอยู่บนคลาวด์ ส่วนตัวเรียกใช้งานอยู่กับคุณ)

รุ่นเผยแพร่และแท็ก

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

on:
  push:
    tags: ['v*']

แนวทางปฏิบัติที่ดีสำหรับการผสานรวมอย่างต่อเนื่อง

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

ตรวจสอบอย่างรวดเร็ว

คุณลักษณะใดของการผสานรวมอย่างต่อเนื่องที่ช่วยให้ทดสอบกับคอมไพเลอร์และระบบปฏิบัติการหลายชนิดพร้อมกัน

สรุปทบทวน

ตั้งค่าการผสานรวมอย่างต่อเนื่องสำหรับทุกโครงการด้วย GitHub Actions, GitLab หรือระบบที่ติดตั้งบนเซิร์ฟเวอร์ของตนเอง สร้างด้วยเมทริกซ์ข้ามคอมไพเลอร์และระบบปฏิบัติการ เรียกใช้การทดสอบ เครื่องมือตรวจสอบ การวิเคราะห์แบบสถิติ และการตรวจสอบรูปแบบในทุก PR แคชอย่างเต็มที่ ให้ล้มเหลวโดยเร็ว และเผยแพร่รุ่นเมื่อมีการติดแท็ก

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

บทเรียน “การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++”

ตั้งค่า GitHub Actions CI สำหรับโปรเจกต์ C++ พร้อมการสร้างหลายแพลตฟอร์ม คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. เครื่องมือวิเคราะห์แบบสถิต: clang-tidy และ cppcheck
  2. Sanitizers: Address Thread UB Sanitizer
  3. การฟัซด้วย libFuzzer
  4. การผสานรวมอย่างต่อเนื่องสำหรับโปรเจกต์ C++
← กลับไปที่ C++ Academy