Skip to content

Commit

Permalink
Add CMake CI
Browse files Browse the repository at this point in the history
- Based on Docker for environment and Make for orchestration
- Add amd64 docker cmake based build workflows
  • Loading branch information
Mizux committed Oct 24, 2024
1 parent 603b963 commit 5e13797
Show file tree
Hide file tree
Showing 17 changed files with 853 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Project Files unneeded by docker
ci/cache
ci/docker
.coin-or
.git
.gitignore
.github
.dockerignore
.clang-format
AUTHORS
INSTALL
install-sh
missing
README.md

build/

# Editor directories and files
*.user
*.swp
45 changes: 45 additions & 0 deletions .github/workflows/amd64_docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Docker

on: [push, pull_request, workflow_dispatch]

jobs:
docker:
strategy:
matrix:
distro: [
almalinux,
alpine,
archlinux,
debian,
fedora,
opensuse,
rockylinux,
ubuntu
]
fail-fast: false
name: amd64 • ${{ matrix.distro }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check docker
run: |
docker info
docker buildx ls
- name: Build env image
run: make --directory=ci amd64_${{ matrix.distro }}_env
- name: Build devel project
run: make --directory=ci amd64_${{ matrix.distro }}_devel
- name: Build project
run: make --directory=ci amd64_${{ matrix.distro }}_build
- name: Test project
run: make --directory=ci amd64_${{ matrix.distro }}_test

- name: Build install env image
run: make --directory=ci amd64_${{ matrix.distro }}_install_env
- name: Build install devel project
run: make --directory=ci amd64_${{ matrix.distro }}_install_devel
- name: Build install project
run: make --directory=ci amd64_${{ matrix.distro }}_install_build
- name: Test install project
run: make --directory=ci amd64_${{ matrix.distro }}_install_test
51 changes: 51 additions & 0 deletions .github/workflows/amd64_linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux

on: [push, pull_request, workflow_dispatch]

# Building using the github runner environement directly.
jobs:
native:
strategy:
matrix:
cmake: [
{generator: "Unix Makefiles", config: "Release"},
{generator: "Ninja", config: "Release"},
{generator: "Ninja Multi-Config", config: "Release"},
]
fail-fast: false
name: Linux • ${{ matrix.cmake.generator }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Ninja
run: |
sudo apt-get update
sudo apt-get install ninja-build
- name: Check cmake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{ matrix.cmake.generator }}"
-DCMAKE_BUILD_TYPE="$BUILD_TYPE"
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config ${{ matrix.cmake.config }}
--target test
-v
- name: Install
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target install
-v
46 changes: 46 additions & 0 deletions .github/workflows/amd64_macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS

on: [push, pull_request, workflow_dispatch]

# Building using the github runner environement directly.
jobs:
native:
strategy:
matrix:
cmake: [
{generator: "Xcode", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: install},
{generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
fail-fast: false
name: MacOS • ${{ matrix.cmake.generator }}
runs-on: macos-13 # last macos intel based runner
steps:
- uses: actions/checkout@v4
- name: Check cmake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{ matrix.cmake.generator }}"
-DCMAKE_BUILD_TYPE=${{ matrix.cmake.config }}
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.build_target }}
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.test_target }}
-v
- name: Install
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.install_target }}
-v
50 changes: 50 additions & 0 deletions .github/workflows/amd64_windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows

on: [push, pull_request, workflow_dispatch]

# Building using the github runner environement directly.
jobs:
native:
strategy:
matrix:
cmake: [
{generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{generator: "Visual Studio 17 2022", config: Debug, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} (${{ matrix.cmake.config }})
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v4
- name: Check cmake
run: |
cmake --version
cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{ matrix.cmake.generator }}"
-DCMAKE_CONFIGURATION_TYPES=${{ matrix.cmake.config }}
-DBUILD_DEPS=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.build_target }}
-v -j2
- name: Test
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.test_target }}
-v
- name: Install
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.install_target }}
-v
46 changes: 46 additions & 0 deletions .github/workflows/arm64_macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS

on: [push, pull_request, workflow_dispatch]

# Building using the github runner environement directly.
jobs:
native:
strategy:
matrix:
cmake: [
{generator: "Xcode", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: install},
{generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
fail-fast: false
name: MacOS • ${{ matrix.cmake.generator }}
runs-on: macos-latest # macos M1 based runner
steps:
- uses: actions/checkout@v4
- name: Check cmake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{ matrix.cmake.generator }}"
-DCMAKE_BUILD_TYPE=${{ matrix.cmake.config }}
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.build_target }}
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.test_target }}
-v
- name: Install
run: >
cmake --build build
--config ${{ matrix.cmake.config }}
--target ${{ matrix.cmake.install_target }}
-v
Loading

0 comments on commit 5e13797

Please sign in to comment.