From c033606c774a2eb181b778ad701d5b69c2eec6ae Mon Sep 17 00:00:00 2001 From: dpasukhi Date: Thu, 9 Jan 2025 22:37:07 +0000 Subject: [PATCH] Testing - Ubuntu build validation #251 Add GitHub Actions workflow for Ubuntu build validation --- .../workflows/build-multiconfig-ubuntu.yml | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 .github/workflows/build-multiconfig-ubuntu.yml diff --git a/.github/workflows/build-multiconfig-ubuntu.yml b/.github/workflows/build-multiconfig-ubuntu.yml new file mode 100644 index 0000000000..c85508c148 --- /dev/null +++ b/.github/workflows/build-multiconfig-ubuntu.yml @@ -0,0 +1,182 @@ +# This workflow validates the build on the latest Ubuntu version (24.04) using multiple configurations. +# It is triggered on pushes to the master branch. +# The workflow includes steps to install dependencies, configure, build, and clean up the project for different configurations. + +name: Ubuntu build validation + +on: + pull_request: + branches: + - '**' + push: + branches: + - 'master' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + main_job: + name: Latest ubuntu validation + runs-on: ubuntu-24.04 + + strategy: + matrix: + config: + - { + name: "GCC", + cc: "gcc", + cxx: "g++" + } + - { + name: "Clang", + cc: "clang", + cxx: "clang++" + } + + steps: + - name: Checkout repository + uses: actions/checkout@v4.1.7 + + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y tcl-dev tk-dev cmake clang gcc g++ make libbtbb-dev libx11-dev libglu1-mesa-dev tcllib tcl-thread tcl libvtk9-dev libopenvr-dev libdraco-dev libfreeimage-dev libegl1-mesa-dev libgles2-mesa-dev libfreetype-dev libjemalloc-dev + + - name: Install rapidjson + run: | + wget https://github.com/Tencent/rapidjson/archive/858451e5b7d1c56cf8f6d58f88cf958351837e53.zip -O rapidjson.zip + unzip rapidjson.zip + + - name: Configure basic + run: | + mkdir -p build + cd build + cmake -G "Unix Makefiles" \ + -D CMAKE_C_COMPILER=${{ matrix.compiler }} \ + -D CMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }} \ + -D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ + -D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. + + - name: Build basic + run: | + cd build + cmake --build . -- -j + + - name: Clear up after build + run: | + rm -rf build + + - name: Configure full shared + run: | + mkdir -p build + cd build + cmake -G "Unix Makefiles" \ + -D CMAKE_C_COMPILER=${{ matrix.compiler }} \ + -D CMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }} \ + -D BUILD_USE_PCH=OFF \ + -D BUILD_INCLUDE_SYMLINK=ON \ + -D BUILD_OPT_PROFILE=Production \ + -D BUILD_LIBRARY_TYPE=Shared \ + -D USE_TK=ON \ + -D CMAKE_BUILD_TYPE=Debug \ + -D USE_MMGR_TYPE=JEMALLOC \ + -D INSTALL_DIR=${{ github.workspace }}/install \ + -D 3RDPARTY_RAPIDJSON_DIR=${{ github.workspace }}/rapidjson-858451e5b7d1c56cf8f6d58f88cf958351837e53 \ + -D USE_FREETYPE=ON \ + -D USE_DRACO=ON \ + -D USE_FFMPEG=OFF \ + -D USE_FREEIMAGE=ON \ + -D USE_GLES2=ON \ + -D USE_OPENVR=ON \ + -D USE_VTK=ON \ + -D USE_TBB=ON \ + -D USE_RAPIDJSON=ON \ + -D USE_OPENGL=ON \ + -D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ + -D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. + + - name: Build full shared + run: | + cd build + cmake --build . --target install --config Debug -- -j + + - name: Clear up after build + run: | + rm -rf build + rm -rf ${{ github.workspace }}/install + + - name: Configure full static + run: | + mkdir -p build + cd build + cmake -G "Unix Makefiles" \ + -D CMAKE_C_COMPILER=${{ matrix.compiler }} \ + -D CMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }} \ + -D BUILD_USE_PCH=OFF \ + -D BUILD_INCLUDE_SYMLINK=ON \ + -D BUILD_OPT_PROFILE=Production \ + -D BUILD_LIBRARY_TYPE=Static \ + -D USE_TK=ON \ + -D CMAKE_BUILD_TYPE=Debug \ + -D USE_MMGR_TYPE=JEMALLOC \ + -D INSTALL_DIR=${{ github.workspace }}/install \ + -D 3RDPARTY_RAPIDJSON_DIR=${{ github.workspace }}/rapidjson-858451e5b7d1c56cf8f6d58f88cf958351837e53 \ + -D USE_FREETYPE=ON \ + -D USE_DRACO=ON \ + -D USE_FFMPEG=OFF \ + -D USE_FREEIMAGE=ON \ + -D USE_GLES2=ON \ + -D USE_OPENVR=ON \ + -D USE_VTK=ON \ + -D USE_TBB=ON \ + -D USE_RAPIDJSON=ON \ + -D USE_OPENGL=ON \ + -D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \ + -D CMAKE_C_FLAGS="-Werror -Wall -Wextra" .. + + - name: Build full static + run: | + cd build + cmake --build . --target install --config Debug -- -j + + - name: Clear up after build + run: | + rm -rf build + rm -rf ${{ github.workspace }}/install + + - name: Configure full with DEBUG define + run: | + mkdir -p build + cd build + cmake -G "Unix Makefiles" \ + -D CMAKE_C_COMPILER=${{ matrix.compiler }} \ + -D CMAKE_CXX_COMPILER=${{ matrix.cxx_compiler }} \ + -D BUILD_WITH_DEBUG=ON \ + -D BUILD_USE_PCH=OFF \ + -D BUILD_INCLUDE_SYMLINK=ON \ + -D BUILD_OPT_PROFILE=Production \ + -D BUILD_LIBRARY_TYPE=Shared \ + -D USE_TK=ON \ + -D CMAKE_BUILD_TYPE=Debug \ + -D INSTALL_DIR=${{ github.workspace }}/install \ + -D 3RDPARTY_RAPIDJSON_DIR=${{ github.workspace }}/rapidjson-858451e5b7d1c56cf8f6d58f88cf958351837e53 \ + -D USE_FREETYPE=ON \ + -D USE_DRACO=ON \ + -D USE_FFMPEG=OFF \ + -D USE_FREEIMAGE=ON \ + -D USE_GLES2=ON \ + -D USE_OPENVR=ON \ + -D USE_VTK=ON \ + -D USE_TBB=ON \ + -D USE_RAPIDJSON=ON \ + -D USE_OPENGL=ON .. + + - name: Build full with DEBUG define + run: | + cd build + cmake --build . --target install --config Debug -- -j + + - name: Clear up after build + run: | + rm -rf build + rm -rf ${{ github.workspace }}/install