CI #926
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Workflow to run against the corresponding QuantLib release, | |
# testing if the build and tests are working fine | |
# Note: In addition to pushes/pull requests, this workflow | |
# can also be executed manually, and the repositories / branches | |
# for QuantLib and XAD can be provided in this case. | |
name: CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
ql_repo: | |
description: Quantlib repository in <owner>/<repo> format | |
required: true | |
default: lballabio/QuantLib | |
ql_branch: | |
description: Branch or tag for QuantLib repository | |
required: true | |
default: master | |
xad_repo: | |
description: XAD repository in <owner>/<repo> format | |
required: true | |
default: auto-differentiation/xad | |
xad_branch: | |
description: Branch or tag for XAD repository | |
required: true | |
default: main | |
schedule: | |
- cron: '02 5 * * *' # 5:02 every day | |
env: | |
ql_repo: ${{ github.event.inputs.ql_repo || 'lballabio/QuantLib' }} | |
ql_branch: ${{ github.event.inputs.ql_branch || 'master' }} | |
xad_repo: ${{ github.event.inputs.xad_repo || 'auto-differentiation/xad' }} | |
xad_branch: ${{ github.event.inputs.xad_branch || 'main' }} | |
jobs: | |
xad-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
disable_aad: ["ON", "OFF"] | |
cxx: ["17", "20"] | |
runs-on: ubuntu-latest | |
container: ghcr.io/lballabio/quantlib-devenv:rolling | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.ql_repo }} | |
ref: ${{ env.ql_branch }} | |
path: QuantLib | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.xad_repo }} | |
ref: ${{ env.xad_branch }} | |
path: xad | |
- uses: actions/checkout@v4 | |
with: | |
path: QuantLib-Risks-Cpp | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: linux-${{ matrix.disable_aad }} | |
max-size: 650M | |
- name: Setup | |
run: | | |
apt-get update \ | |
&& apt install -y ccache ninja-build | |
- name: Configure | |
run: | | |
rm -rf ${{ github.workspace }}/install | |
cd QuantLib | |
mkdir build | |
cd build | |
cmake -G Ninja -DBOOST_ROOT=/usr \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx }} \ | |
-DQLRISKS_DISABLE_AAD=${{ matrix.disable_aad }} \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DQL_EXTERNAL_SUBDIRECTORIES="$(pwd)/../../xad;$(pwd)/../../QuantLib-Risks-Cpp" \ | |
-DQL_EXTRA_LINK_LIBRARIES=QuantLib-Risks \ | |
-DQL_NULL_AS_FUNCTIONS=ON \ | |
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../install \ | |
.. | |
- name: Compile | |
run: | | |
cd QuantLib/build | |
cmake --build . | |
- name: Test QuantLib | |
run: | | |
cd QuantLib/build | |
./test-suite/quantlib-test-suite --log_level=message | |
- name: Test QuantLib-Risks | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
cd QuantLib/build | |
./QuantLib-Risks-Cpp/test-suite/quantlib-risks-test-suite --log_level=message | |
- name: Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
cd QuantLib/build | |
cmake --install . | |
- name: Test Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
mkdir installtest | |
cp QuantLib-Risks-Cpp/Examples/AdjointSwap/AdjointSwapXAD.cpp installtest | |
cd installtest | |
echo "cmake_minimum_required(VERSION 3.15.2)" > CMakeLists.txt | |
echo "project(QlTest LANGUAGES CXX)" >> CMakeLists.txt | |
echo "find_package(QuantLib-Risks REQUIRED)" >> CMakeLists.txt | |
echo "add_executable(AdjointSwapXAD AdjointSwapXAD.cpp)" >> CMakeLists.txt | |
echo "target_link_libraries(AdjointSwapXAD PRIVATE QuantLib::QuantLib)" >> CMakeLists.txt | |
echo "target_compile_features(AdjointSwapXAD PUBLIC cxx_std_17)" >> CMakeLists.txt | |
mkdir build | |
cd build | |
cmake -G Ninja -DBOOST_ROOT=/usr \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_PREFIX_PATH=$(pwd)/../../install \ | |
.. | |
cmake --build . | |
./AdjointSwapXAD | |
xad-win: | |
strategy: | |
fail-fast: false | |
matrix: | |
disable_aad: ["ON", "OFF"] | |
cxx: ["17", "20"] | |
runs-on: windows-2022 | |
env: | |
vsvarsall: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.ql_repo }} | |
ref: ${{ env.ql_branch }} | |
path: QuantLib | |
- uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.xad_repo }} | |
ref: ${{ env.xad_branch }} | |
path: xad | |
- uses: actions/checkout@v3 | |
with: | |
path: QuantLib-Risks-Cpp | |
- name: sccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: windows-${{ matrix.disable_aad }} | |
variant: sccache | |
max-size: 650M | |
- name: Setup | |
run: | | |
choco install -y ninja | |
$Url = "https://downloads.sourceforge.net/project/boost/boost-binaries/1.84.0/boost_1_84_0-msvc-14.3-64.exe" | |
(New-Object System.Net.WebClient).DownloadFile($Url, "$RUNNER_TEMP\boost.exe") | |
Start-Process -Wait -FilePath "$RUNNER_TEMP\boost.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES","/DIR=C:\local\boost" | |
- name: Configure | |
env: | |
BOOST_ROOT: C:\local\boost | |
shell: cmd | |
run: | | |
cd QuantLib | |
mkdir build | |
cd build | |
call "${{ env.vsvarsall }}" amd64 | |
cmake .. -G Ninja -DQLRISKS_DISABLE_AAD=${{ matrix.disable_aad }} ^ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx }} ^ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache ^ | |
-DCMAKE_BUILD_TYPE=Release ^ | |
-DQL_EXTERNAL_SUBDIRECTORIES="${{ github.workspace }}/xad;${{ github.workspace }}/QuantLib-Risks-Cpp" ^ | |
-DQL_EXTRA_LINK_LIBRARIES=QuantLib-Risks ^ | |
-DQL_NULL_AS_FUNCTIONS=ON ^ | |
-DXAD_STATIC_MSVC_RUNTIME=ON ^ | |
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install | |
- name: Build | |
shell: cmd | |
run: | | |
cd QuantLib\build | |
call "${{ env.vsvarsall }}" amd64 | |
cmake --build . | |
- name: Test QuantLib | |
shell: cmd | |
run: | | |
cd QuantLib\build | |
call "${{ env.vsvarsall }}" amd64 | |
.\test-suite\quantlib-test-suite --log_level=message | |
- name: Test QuantLib-Risks | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
shell: cmd | |
run: | | |
cd QuantLib\build | |
call "${{ env.vsvarsall }}" amd64 | |
.\QuantLib-Risks-Cpp\test-suite\quantlib-risks-test-suite --log_level=message | |
- name: Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
cd QuantLib/build | |
cmake --install . | |
- name: Test Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
env: | |
BOOST_ROOT: C:\local\boost | |
shell: cmd | |
run: | | |
mkdir installtest | |
copy QuantLib-Risks-Cpp\Examples\AdjointSwap\AdjointSwapXAD.cpp installtest | |
cd installtest | |
echo cmake_minimum_required(VERSION 3.15.2) > CMakeLists.txt | |
echo project(QlTest LANGUAGES CXX) >> CMakeLists.txt | |
echo find_package(QuantLib-Risks REQUIRED) >> CMakeLists.txt | |
echo add_executable(AdjointSwapXAD AdjointSwapXAD.cpp) >> CMakeLists.txt | |
echo target_link_libraries(AdjointSwapXAD PRIVATE QuantLib::QuantLib) >> CMakeLists.txt | |
echo set_target_properties(AdjointSwapXAD PROPERTIES MSVC_RUNTIME_LIBRARY MultiThreaded) >> CMakeLists.txt | |
echo target_compile_features(AdjointSwapXAD PUBLIC cxx_std_17) >> CMakeLists.txt | |
mkdir build | |
cd build | |
call "${{ env.vsvarsall }}" amd64 | |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${{ github.workspace }}/install .. | |
cmake --build . | |
AdjointSwapXAD.exe | |
xad-macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
disable_aad: ["ON", "OFF"] | |
cxx: ["17", "20"] | |
runs-on: macos-13 | |
env: | |
CXXFLAGS: -stdlib=libc++ -mmacosx-version-min=10.9 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.ql_repo }} | |
ref: ${{ env.ql_branch }} | |
path: QuantLib | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.xad_repo }} | |
ref: ${{ env.xad_branch }} | |
path: xad | |
- uses: actions/checkout@v4 | |
with: | |
path: QuantLib-Risks-Cpp | |
- name: Setup | |
run: | | |
brew install boost | |
brew install ninja | |
brew install ccache | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: macos-${{ matrix.disable_aad }} | |
max-size: 650M | |
- name: Configure | |
run: | | |
cd QuantLib | |
mkdir build | |
cd build | |
cmake -G Ninja -DBOOST_ROOT=/usr \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx }} \ | |
-DQLRISKS_DISABLE_AAD=${{ matrix.disable_aad }} \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DQL_EXTERNAL_SUBDIRECTORIES="${{ github.workspace }}/xad;${{ github.workspace }}/QuantLib-Risks-Cpp" \ | |
-DQL_EXTRA_LINK_LIBRARIES=QuantLib-Risks \ | |
-DQL_NULL_AS_FUNCTIONS=ON \ | |
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \ | |
.. | |
- name: Compile | |
run: | | |
cd QuantLib/build | |
cmake --build . | |
- name: Test QuantLib | |
run: | | |
cd QuantLib/build | |
./test-suite/quantlib-test-suite --log_level=message | |
- name: Test QuantLib-Risks | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
cd QuantLib/build | |
./QuantLib-Risks-Cpp/test-suite/quantlib-risks-test-suite --log_level=message | |
- name: Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
cd QuantLib/build | |
cmake --install . | |
- name: Test Install | |
if: ${{ matrix.disable_aad == 'OFF' }} | |
run: | | |
mkdir installtest | |
cp QuantLib-Risks-Cpp/Examples/AdjointSwap/AdjointSwapXAD.cpp installtest | |
cd installtest | |
echo "cmake_minimum_required(VERSION 3.15.2)" > CMakeLists.txt | |
echo "project(QlTest LANGUAGES CXX)" >> CMakeLists.txt | |
echo "find_package(QuantLib-Risks REQUIRED)" >> CMakeLists.txt | |
echo "add_executable(AdjointSwapXAD AdjointSwapXAD.cpp)" >> CMakeLists.txt | |
echo "target_link_libraries(AdjointSwapXAD PRIVATE QuantLib::QuantLib)" >> CMakeLists.txt | |
echo "target_compile_features(AdjointSwapXAD PUBLIC cxx_std_17)" >> CMakeLists.txt | |
mkdir build | |
cd build | |
cmake -G Ninja -DBOOST_ROOT=/usr \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/install \ | |
.. | |
cmake --build . | |
./AdjointSwapXAD | |
xad-linux-std-classes: | |
strategy: | |
fail-fast: false | |
runs-on: ubuntu-latest | |
container: ghcr.io/lballabio/quantlib-devenv:rolling | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.ql_repo }} | |
ref: ${{ env.ql_branch }} | |
path: QuantLib | |
- uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.xad_repo }} | |
ref: ${{ env.xad_branch }} | |
path: xad | |
- uses: actions/checkout@v4 | |
with: | |
path: QuantLib-Risks-Cpp | |
- name: Setup | |
run: | | |
apt-get update \ | |
&& apt install -y ccache ninja-build \ | |
- name: ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: linux-std-classes | |
max-size: 650M | |
- name: Configure | |
run: | | |
cd QuantLib | |
mkdir build | |
cd build | |
cmake -G Ninja -DBOOST_ROOT=/usr \ | |
-DQL_USE_STD_CLASSES=ON \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DQL_EXTERNAL_SUBDIRECTORIES="$(pwd)/../../xad;$(pwd)/../../QuantLib-Risks-Cpp" \ | |
-DQL_EXTRA_LINK_LIBRARIES=QuantLib-Risks \ | |
-DQL_NULL_AS_FUNCTIONS=ON \ | |
.. | |
- name: Compile | |
run: | | |
cd QuantLib/build | |
cmake --build . | |
- name: Test QuantLib | |
run: | | |
cd QuantLib/build | |
./test-suite/quantlib-test-suite --log_level=message | |
- name: Test QuantLib-Risks | |
run: | | |
cd QuantLib/build | |
./QuantLib-Risks-Cpp/test-suite/quantlib-risks-test-suite --log_level=message |