From bc771ab8ba409908702bcab8809a7e48fcf4b50d Mon Sep 17 00:00:00 2001 From: leftibot Date: Sat, 11 Apr 2026 13:40:04 -0600 Subject: [PATCH] =?UTF-8?q?[WIP]=20Issue=20#615=20=E2=80=94=20Switch=20to?= =?UTF-8?q?=20GitHub=20Actions=20(#658)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #615: Switch from Travis CI to GitHub Actions Add a GitHub Actions CI workflow with a full build matrix covering linux, macOS, and Windows with both GCC and Clang compilers, Debug and Release build types, and optional ASan+UBSan sanitizers (24 builds total). Windows builds use MSYS2 for GCC/Clang toolchains. The workflow relies on CMake and CTest to drive configuration, building, and testing. Co-Authored-By: Claude Opus 4.6 (1M context) * Address review: use native compilers, remove MSYS/MinGW Use Visual Studio (MSVC) on Windows, Apple Clang on macOS, and GCC on Linux. Remove MSYS2/MinGW toolchain setup entirely. Split into three separate jobs for clarity. Fix workflow validation issues. Requested by @lefticus in PR #658 review. Co-Authored-By: Claude Opus 4.6 (1M context) * Address review: add workflow_dispatch to enable manual CI runs on fork Add workflow_dispatch trigger so the workflow can be manually run on the leftibot fork to verify that GitHub Actions are working correctly. Requested by @lefticus in PR #658 review. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: leftibot Co-authored-by: Claude Opus 4.6 (1M context) --- .github/workflows/ci.yml | 66 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6bb834e3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,66 @@ +name: CI + +on: + push: + branches: [develop, main] + pull_request: + branches: [develop, main] + workflow_dispatch: + +jobs: + linux: + name: Linux GCC ${{ matrix.build_type }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + steps: + - uses: actions/checkout@v4 + + - name: Configure + run: cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + + - name: Build + run: cmake --build build -j + + - name: Test + run: ctest --test-dir build --output-on-failure + + macos: + name: macOS AppleClang ${{ matrix.build_type }} + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + steps: + - uses: actions/checkout@v4 + + - name: Configure + run: cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + + - name: Build + run: cmake --build build -j + + - name: Test + run: ctest --test-dir build --output-on-failure + + windows: + name: Windows MSVC ${{ matrix.build_type }} + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + build_type: [Debug, Release] + steps: + - uses: actions/checkout@v4 + + - name: Configure + run: cmake -B build + + - name: Build + run: cmake --build build --config ${{ matrix.build_type }} -j + + - name: Test + run: ctest --test-dir build --output-on-failure -C ${{ matrix.build_type }}