C++ 프로젝트의 지속적 통합
다중 플랫폼 빌드를 포함하는 C++ 프로젝트용 GitHub Actions CI를 설정합니다.
C++ 프로젝트의 지속적 통합은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
CI를 사용하는 이유
지속적 통합은 모든 커밋에서 테스트를 자동으로 실행합니다. 문제를 조기에 발견하고 품질을 보장하며 수동 검사를 수행해야 하는 부담을 줄여 줍니다.
GitHub Actions
오픈 소스에서 가장 널리 사용되는 CI입니다. .github/workflows/ 아래의 YAML 파일에 작업 흐름을 정의하십시오.
# .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를 사용하여 빌드하는 작업을 추가하십시오. 테스트는 느려지지만 실제 버그를 찾아낼 수 있습니다.
종속성 캐싱
빌드 결과물과 종속성 설치 항목을 캐시하여 CI 실행 속도를 높이십시오.
- 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에 업로드하십시오.
CI에서 정적 분석
모든 PR에서 clang-tidy와 cppcheck를 실행하십시오. 새로운 경고가 발생하면 빌드를 실패하게 하십시오.
형식 적용
프로젝트 전체에 적용되는 .clang-format과 함께 clang-format을 사용하십시오. CI가 형식이 지정되지 않은 코드를 거부하도록 하십시오.
- name: Check format
run: clang-format --dry-run --Werror src/*.cppGitLab CI
직접 호스팅하는 환경에서는 GitLab CI가 비슷한 역할을 합니다. 단계와 작업을 포함하여 .gitlab-ci.yml을 정의하십시오.
Jenkins, CircleCI, BuildKite
다른 CI 선택지는 다음과 같습니다.
- Jenkins — 직접 호스팅하며 매우 유연합니다
- CircleCI — 강력한 클라우드 기능과 Docker 통합을 제공합니다
- BuildKite — 하이브리드 방식입니다(클라우드 제어 영역과 사용자의 실행기)
릴리스와 태그
버전 태그를 기준으로 패키징 및 게시를 실행하십시오. 여러 플랫폼용 바이너리를 빌드하고 GitHub 릴리스에 첨부한 다음 패키지 관리자에 게시하십시오.
on:
push:
tags: ['v*']CI 모범 사례
캐싱, 병렬화 및 빌드 분할을 사용하여 CI 실행을 10분 이내로 빠르게 유지하십시오. 명확한 오류 메시지와 로그로 연결되는 링크를 제공하여 실패 원인을 바로 조치할 수 있게 하십시오.
빠른 확인
여러 컴파일러와 운영 체제를 병렬로 테스트할 수 있게 해 주는 CI 기능은 무엇입니까?
복습
모든 프로젝트에 GitHub Actions, GitLab 또는 직접 호스팅 방식으로 CI를 설정하십시오. 컴파일러와 운영 체제 전반에서 행렬 빌드를 수행하십시오. 모든 PR에서 테스트, 살균기, 정적 분석 및 형식 검사를 실행하십시오. 적극적으로 캐시하고 빠르게 실패하도록 하며 태그가 생성되면 릴리스를 게시하십시오.
자주 묻는 질문
“C++ 프로젝트의 지속적 통합” 강의는 무료인가요?
네 — “C++ 프로젝트의 지속적 통합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“C++ 프로젝트의 지속적 통합”에서 뭘 배우나요?
다중 플랫폼 빌드를 포함하는 C++ 프로젝트용 GitHub Actions CI를 설정합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“C++ 프로젝트의 지속적 통합” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 정적 분석 도구: clang-tidy, cppcheck
- Sanitizer: Address, Thread, UB Sanitizer
- libFuzzer로 퍼징하기
- C++ 프로젝트의 지속적 통합