0Pricing
C++ Academy · レッスン

C++プロジェクトの継続的インテグレーション

マルチプラットフォームビルドに対応するC++プロジェクト用GitHub Actions CIを設定します。

「C++プロジェクトの継続的インテグレーション」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応の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/*.cpp

GitLab CI

自前でホスティングする環境では、GitLab CI がよく似た選択肢になります。ステージとジョブを含む .gitlab-ci.yml を定義します。

Jenkins、CircleCI、BuildKite

その他の CI の選択肢:

  • Jenkins — 自前でホスティングでき、非常に柔軟
  • CircleCI — クラウドサービスが充実し、Docker と統合可能
  • BuildKite — ハイブリッド構成(クラウドの制御プレーンと自前のランナー)

リリースとタグ

バージョンタグをきっかけにパッケージ化と公開を実行します。複数のプラットフォーム向けにバイナリをビルドし、GitHub Releases に添付して、パッケージマネージャーにプッシュします。

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

CI のベストプラクティス

キャッシュ、並列化、ビルドの分割によって、CI の実行を 10 分以内に保ちます。明確なエラーメッセージとログへの直接リンクを用意し、失敗時に対処しやすくします。

確認問題

複数のコンパイラーとオペレーティングシステムに対して並列にテストできる CI の機能はどれですか。

まとめ

すべてのプロジェクトに CI を設定します。GitHub Actions、GitLab、自前のホスティング環境などを利用できます。コンパイラーと OS をまたいだマトリックスビルドを行います。すべての PR でテスト、サニタイザー、静的解析、フォーマットチェックを実行します。積極的にキャッシュを使い、迅速に失敗させ、タグをきっかけにリリースを公開します。

よくある質問

「C++プロジェクトの継続的インテグレーション」レッスンは無料ですか?

はい。「C++プロジェクトの継続的インテグレーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「C++プロジェクトの継続的インテグレーション」で何を学びますか?

マルチプラットフォームビルドに対応するC++プロジェクト用GitHub Actions CIを設定します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「C++プロジェクトの継続的インテグレーション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 静的解析ツール:clang-tidy、cppcheck
  2. Sanitizer:Address、Thread、UB Sanitizer
  3. libFuzzerによるファジング
  4. C++プロジェクトの継続的インテグレーション
← C++ Academyに戻る