-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve ci #6
Improve ci #6
Changes from all commits
433db6c
adb77a5
6e2fc28
3164c88
faffdcc
c3101c7
22deef3
0553aa5
02ab26c
a443220
6d1f4fb
e251e56
acb1916
0e20636
72b6c4b
b13471c
8c771f4
e6185ab
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,97 @@ | ||
# Copyright © 2024 Bret Brown | ||
# SPDX-License-Identifier: MIT | ||
|
||
name: Test | ||
name: Test Multi-Platform | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
paths: | ||
- "src/**" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please remove: If you intend to merge this change. |
||
- "test/**" | ||
- "CMakeLists.txt" | ||
pull_request: | ||
branches: [ main ] | ||
paths: | ||
- "src/**" | ||
- "test/**" | ||
- "CMakeLists.txt" | ||
|
||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
build: | ||
runs-on: ${{ matrix.os }} | ||
|
||
strategy: | ||
fail-fast: false | ||
|
||
matrix: | ||
cfg: | ||
- { id: ubuntu-gcc-werror, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_FLAGS='-Werror=all -Werror=extra'"} | ||
- { id: ubuntu-gcc-aubsan, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_FLAGS=-fsanitize=address -fsanitize=undefined"} | ||
- { id: ubuntu-gcc-tsan, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_FLAGS=-fsanitize=thread"} | ||
- { id: ubuntu-gcc-static, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: ""} | ||
- { id: ubuntu-gcc-static-cxx98, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_STANDARD=98 -DCMAKE_CXX_STANDARD_REQUIRED=on"} | ||
- { id: ubuntu-gcc-static-cxx11, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=on"} | ||
- { id: ubuntu-gcc-static-cxx14, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=on"} | ||
- { id: ubuntu-gcc-static-cxx17, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=on"} | ||
- { id: ubuntu-gcc-static-cxx20, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_STANDARD_REQUIRED=on"} | ||
- { id: ubuntu-gcc-dynamic, platform: ubuntu, cc: gcc, cpp: g++, cmake_args: "-DBUILD_SHARED_LIBS=on"} | ||
- { id: ubuntu-clang-static, platform: ubuntu, cc: clang, cpp: clang++, cmake_args: ""} | ||
- { id: ubuntu-clang-dynamic, platform: ubuntu, cc: clang, cpp: clang++, cmake_args: "-DBUILD_SHARED_LIBS=on"} | ||
# Disabling Rocky until it catches up on CMake versions or a way to sideload newer version of CMake | ||
# is identified. | ||
# - { id: rockylinux-gcc-static, platform: rockylinux, cc: gcc, cpp: g++, cmake_args: ""} | ||
# - { id: rockylinux-clang-static, platform: rockylinux, cc: clang, cpp: clang++, cmake_args: ""} | ||
include: | ||
- os: windows-latest | ||
build_type: Release | ||
cmake_args: "" | ||
preset: msvc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-Werror=all -Werror=extra'" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-fsanitize=address -fsanitize=undefined'" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-fsanitize=thread'" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=98 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DBUILD_SHARED_LIBS=on" | ||
preset: gcc-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-Werror=all -Werror=extra'" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-fsanitize=address -fsanitize=undefined'" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_FLAGS='-fsanitize=thread'" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=98 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_STANDARD_REQUIRED=on" | ||
preset: clang-debug | ||
- os: ubuntu-latest | ||
cmake_args: "-DBUILD_SHARED_LIBS=on" | ||
preset: clang-debug | ||
- os: macos-latest | ||
cmake_args: "" | ||
preset: clang-debug | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
# GitHub runners have updated the Ubuntu Linux Kernel to use strong ASLR, | ||
# but LLVM is not configured for this change, and thus the address | ||
# sanitizer breaks. | ||
# | ||
# The next image is supposed to fix this, so if the Ubuntu image has been | ||
# updated, this work around is no longer required. | ||
- name: get runner image version | ||
id: runner-image-version | ||
run: | | ||
echo "image-version=$(echo $ImageVersion)" >> "$GITHUB_OUTPUT" | ||
working-directory: . | ||
- name: modify number of bits to use for ASLR entropy | ||
if: ${{ steps.runner-image-version.outputs.ImageVersion }} == '20240310.1.0' | ||
run: | | ||
sudo sysctl -a | grep vm.mmap.rnd | ||
sudo sysctl -w vm.mmap_rnd_bits=28 | ||
working-directory: . | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
- name: Build and push | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: . | ||
push: false | ||
load: true | ||
tags: ${{ matrix.cfg.id }} | ||
file: .ci/docker/${{ matrix.cfg.platform }}.Dockerfile | ||
build-args: | | ||
cc=${{ matrix.cfg.cc }} | ||
cxx=${{ matrix.cfg.cpp }} | ||
cmake_args=${{ matrix.cfg.cmake_args }} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
- name: Run tests | ||
run: | | ||
docker run ${{ matrix.cfg.id }} ctest --test-dir build | ||
- uses: actions/checkout@v3 | ||
- uses: seanmiddleditch/gha-setup-ninja@master | ||
|
||
- name: Setup MSVC | ||
if: startsWith(matrix.os, 'windows') | ||
uses: TheMrMilchmann/setup-msvc-dev@v3 | ||
with: | ||
arch: x64 | ||
|
||
- name: Configure CMake | ||
run: cmake --preset ${{ matrix.preset }} -DBUILD_TESTING=on ${{ matrix.cmake_args }} | ||
|
||
- name: Build | ||
run: cmake --build --preset ${{ matrix.preset }} | ||
|
||
- name: Test | ||
run: ctest --preset ${{ matrix.preset }} |
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,105 @@ | ||||||||
{ | ||||||||
"version": 3, | ||||||||
"configurePresets": [ | ||||||||
{ | ||||||||
"name": "gcc-base", | ||||||||
"hidden": true, | ||||||||
"generator": "Ninja", | ||||||||
"binaryDir": "${sourceDir}/build/${presetName}", | ||||||||
"cacheVariables": { | ||||||||
"CMAKE_BUILD_TYPE": "Debug", | ||||||||
"CMAKE_C_COMPILER": "gcc", | ||||||||
"CMAKE_CXX_COMPILER": "g++", | ||||||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON" | ||||||||
} | ||||||||
}, | ||||||||
{ | ||||||||
"name": "clang-base", | ||||||||
"hidden": true, | ||||||||
"generator": "Ninja", | ||||||||
"binaryDir": "${sourceDir}/build/${presetName}", | ||||||||
"cacheVariables": { | ||||||||
"CMAKE_BUILD_TYPE": "Debug", | ||||||||
"CMAKE_C_COMPILER": "clang", | ||||||||
"CMAKE_CXX_COMPILER": "clang++", | ||||||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON" | ||||||||
} | ||||||||
}, | ||||||||
{ | ||||||||
"name": "msvc-base", | ||||||||
"hidden": true, | ||||||||
"generator": "Ninja", | ||||||||
"binaryDir": "${sourceDir}/build/${presetName}", | ||||||||
"cacheVariables": { | ||||||||
"CMAKE_BUILD_TYPE": "Debug", | ||||||||
"CMAKE_C_COMPILER": "cl", | ||||||||
"CMAKE_CXX_COMPILER": "cl", | ||||||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON" | ||||||||
} | ||||||||
}, | ||||||||
{ | ||||||||
"name": "gcc-debug", | ||||||||
"displayName": "gcc-debug", | ||||||||
"inherits": "gcc-base" | ||||||||
}, | ||||||||
{ | ||||||||
"name": "clang-debug", | ||||||||
"displayName": "clang-debug", | ||||||||
"inherits": "clang-base" | ||||||||
}, | ||||||||
{ | ||||||||
"name": "msvc-debug", | ||||||||
"displayName": "msvc-debug", | ||||||||
"inherits": "msvc-base" | ||||||||
} | ||||||||
], | ||||||||
"buildPresets": [ | ||||||||
{ | ||||||||
"name": "gcc-debug", | ||||||||
"configurePreset": "gcc-debug" | ||||||||
}, | ||||||||
{ | ||||||||
"name": "clang-debug", | ||||||||
"configurePreset": "clang-debug" | ||||||||
}, | ||||||||
{ | ||||||||
"name": "msvc-debug", | ||||||||
"configurePreset": "msvc-debug" | ||||||||
} | ||||||||
], | ||||||||
"testPresets": [ | ||||||||
{ | ||||||||
"name": "gcc-debug", | ||||||||
"configurePreset": "gcc-debug", | ||||||||
"output": { | ||||||||
"outputOnFailure": true | ||||||||
}, | ||||||||
"execution": { | ||||||||
"noTestsAction": "error", | ||||||||
"stopOnFailure": true | ||||||||
} | ||||||||
}, | ||||||||
{ | ||||||||
"name": "clang-debug", | ||||||||
"configurePreset": "clang-debug", | ||||||||
"output": { | ||||||||
"outputOnFailure": true | ||||||||
}, | ||||||||
"execution": { | ||||||||
"noTestsAction": "error", | ||||||||
"stopOnFailure": true | ||||||||
} | ||||||||
}, | ||||||||
{ | ||||||||
"name": "msvc-debug", | ||||||||
"configurePreset": "msvc-debug", | ||||||||
"output": { | ||||||||
"outputOnFailure": true | ||||||||
}, | ||||||||
"execution": { | ||||||||
"noTestsAction": "error", | ||||||||
"stopOnFailure": true | ||||||||
} | ||||||||
} | ||||||||
] | ||||||||
} | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do you want to remove these lines? I think we should keep them.
btw, @camio , should we add a mention for YAML files into https://github.com/beman-project/beman/blob/main/docs/beman-standard.md#file-contents?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds like a promising idea. Would you be willing to create a PR or issue for it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. I will do it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Merged bemanproject/beman#44