diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 9a63fb2..9f6ec27 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -9,69 +9,77 @@ on: branches: [ "jira/TBBAS-1840-ci-win" ] jobs: - # build_linux: - # runs-on: ${{ matrix.os }} - # timeout-minutes: 180 - - # strategy: - # # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. - # fail-fast: false - - # matrix: - # os: [ubuntu-latest] - # build_type: [Release] - # c_compiler: [gcc, clang] - # include: - # - os: ubuntu-latest - # c_compiler: gcc - # cpp_compiler: g++ - # - os: ubuntu-latest - # c_compiler: clang - # cpp_compiler: clang++ - - # steps: - # - name: Install basic dependencies - # run: | - # sudo apt-get update - # sudo apt-get install -y libpcap-dev - - # - uses: actions/checkout@v4 + build_linux: + runs-on: ${{ matrix.os }} + timeout-minutes: 180 - # - name: Install SSH key - # uses: shimataro/ssh-key-action@v2 - # with: - # key: ${{ secrets.SSH_KEY }} - # known_hosts: ${{ secrets.KNOWN_HOSTS }} - # if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) - - # - name: Set reusable strings - # # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. - # id: strings - # shell: bash - # run: | - # echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - - # - name: Configure CMake - # # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. - # # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - # run: > - # cmake -B ${{ steps.strings.outputs.build-output-dir }} - # -DASAM_CMP_ENABLE_EXAMPLE=OFF - # -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} - # -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} - # -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - # -S ${{ github.workspace }} - - # - name: Build - # # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). - # run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} - - # - name: Test - # working-directory: ${{ steps.strings.outputs.build-output-dir }} - # # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). - # # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - # run: ctest --build-config ${{ matrix.build_type }} + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + + matrix: + os: [ubuntu-latest] + build_type: [Release] + c_compiler: [gcc, clang] + include: + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + + steps: + - name: Install basic dependencies + run: | + sudo apt-get update + sudo apt-get install -y libpcap-dev + + - uses: actions/checkout@v4 + + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DASAM_CMP_ENABLE_EXAMPLE=OFF + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest --build-config ${{ matrix.build_type }} + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: Unit Test Results + path: ${{ steps.strings.outputs.build-output-dir }}/Testing/Temporary/LastTest.log + retention-days: 7 + build_windows: runs-on: ${{ matrix.os }} timeout-minutes: 180 @@ -125,7 +133,7 @@ jobs: working-directory: ${{ steps.strings.outputs.build-output-dir }} # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest --build-config ${{ matrix.build_type }} -VV --debug + run: ctest --build-config ${{ matrix.build_type }} - name: Upload test results if: always()