1.9.2 #527
Workflow file for this run
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
name: Deploy | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
release: | |
types: [published] | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: Release | |
AQT_VERSION: '==3.1.*' | |
QT_VERSION: '6.7.1' | |
jobs: | |
# send-slack-notification: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: send slack message | |
# uses: docker://technosophos/slack-notify | |
# env: | |
# SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
# SLACK_MESSAGE: "Building QtMeshEditor in GitHub Actions - works! :D" | |
#################################################################### | |
# Windows Deploy | |
#################################################################### | |
build-n-cache-assimp-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Cache Assimp | |
id: cache-assimp-windows | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-windows | |
with: | |
# It is caching the folder that also contains source and building files, maybe in the future it would be nice cache only the includes and dll | |
path: | | |
C:/PROGRA~2/Assimp | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-assimp-windows.outputs.cache-hit != 'true' | |
name: Set up MinGW | |
uses: e-t-l/setup-mingw@patch-1 #egor-tensin/setup-mingw@v2 | |
with: | |
platform: x64 | |
- if: steps.cache-assimp-windows.outputs.cache-hit != 'true' | |
name: Check out Assimp repo | |
uses: actions/checkout@master | |
with: | |
repository: assimp/assimp | |
path: ${{github.workspace}}/assimp | |
- if: steps.cache-assimp-windows.outputs.cache-hit != 'true' | |
name: Build Assimp repo | |
env: | |
CMAKE_GENERATOR: "MinGW Makefiles" | |
run: | | |
cd ${{github.workspace}}/assimp | |
cmake -S . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_GENERATOR="MinGW Makefiles" -DASSIMP_WARNINGS_AS_ERRORS=OFF | |
mingw32-make install -j8 | |
xcopy /I "C:/PROGRA~2/Assimp" "${{github.workspace}}/assimp-build" | |
shell: cmd | |
build-n-cache-ogre-windows: | |
needs: build-n-cache-assimp-windows | |
runs-on: windows-latest | |
steps: | |
- name: Cache Assimp | |
id: cache-assimp-windows | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-windows | |
with: | |
path: | | |
C:/PROGRA~2/Assimp | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Cache Ogre | |
id: cache-ogre-windows | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-windows | |
with: | |
path: ${{github.workspace}}/ogre-build/SDK | |
# Need to delete manually if needed to rebuild. Until I find a better solution for detecting changes in the ogre repo. | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-ogre-windows.outputs.cache-hit != 'true' | |
name: Install Doxygen | |
shell: cmd | |
run: | | |
curl -L -o doxygen-installer.exe "https://www.doxygen.nl/files/doxygen-1.9.7-setup.exe" | |
doxygen-installer.exe /VERYSILENT | |
- if: steps.cache-ogre-windows.outputs.cache-hit != 'true' | |
name: Check out ogre repo | |
uses: actions/checkout@master | |
with: | |
repository: OGRECave/ogre | |
path: ${{github.workspace}}/ogre | |
- if: steps.cache-ogre-windows.outputs.cache-hit != 'true' | |
name: Set up MinGW | |
uses: e-t-l/setup-mingw@patch-1 #egor-tensin/setup-mingw@v2 | |
with: | |
platform: x64 | |
- if: steps.cache-ogre-windows.outputs.cache-hit != 'true' | |
name: Build Ogre3D | |
shell: cmd | |
env: | |
CMAKE_GENERATOR: "MinGW Makefiles" | |
ASSIMP_DIR: "C:/Program Files (x86)/Assimp/lib/cmake/assimp-5.2/" | |
run: | | |
cd ${{github.workspace}}/ogre | |
cmake -B ${{github.workspace}}/ogre-build -S . -DDOXYGEN_EXECUTABLE="C:\Program Files\doxygen\bin\doxygen.exe" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_STANDARD=17 -DOGRE_BUILD_PLUGIN_ASSIMP=ON -DOGRE_BUILD_PLUGIN_PCZ=ON -DOGRE_BUILD_PLUGIN_DOT_SCENE=ON -DOGRE_BUILD_RENDERSYSTEM_GL=ON -DOGRE_BUILD_RENDERSYSTEM_GL3PLUS=ON -DOGRE_BUILD_RENDERSYSTEM_GLES2=OFF -DOGRE_BUILD_RENDERSYSTEM_D3D9=OFF -DOGRE_BUILD_RENDERSYSTEM_D3D11=OFF -DOGRE_BUILD_TESTS=OFF -DOGRE_BUILD_TOOLS=OFF -DOGRE_BUILD_SAMPLES=OFF -DOGRE_BUILD_COMPONENT_CSHARP=OFF -DOGRE_BUILD_COMPONENT_JAVA=OFF -DOGRE_BUILD_COMPONENT_PYTHON=OFF -DOGRE_INSTALL_TOOLS=OFF -DOGRE_INSTALL_DOCS=OFF -DOGRE_INSTALL_SAMPLES=OFF -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
cd ${{github.workspace}}/ogre-build | |
mingw32-make install -j8 | |
build-windows: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
needs: [build-n-cache-assimp-windows, build-n-cache-ogre-windows] | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Cache Assimp | |
id: cache-assimp-windows | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-windows | |
with: | |
# It is caching the folder that also contains source and building files, maybe in the future it would be nice cache only the includes and dll | |
path: | | |
C:/PROGRA~2/Assimp | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Cache Ogre | |
id: cache-ogre-windows | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-windows | |
with: | |
path: ${{github.workspace}}/ogre-build/SDK | |
# Need to delete manually if needed to rebuild. Until I find a better solution for detecting changes in the ogre repo. | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Set up MinGW | |
uses: e-t-l/setup-mingw@patch-1 #egor-tensin/setup-mingw@v2 | |
with: | |
platform: x64 | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
aqtversion: ${{ env.AQT_VERSION }} | |
version: ${{ env.QT_VERSION }} | |
host: 'windows' | |
target: 'desktop' | |
arch: 'win64_mingw' | |
tools: 'tools_cmake' | |
- name: Configure CMake | |
env: | |
OGRE_DIR: ${{github.workspace}}/ogre-build/SDK/CMake/ | |
CMAKE_GENERATOR: "MinGW Makefiles" | |
ASSIMP_DIR: C:/PROGRA~2/Assimp | |
run: | | |
cmake -S . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DQT_QMAKE_EXECUTABLE=qmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_EXE_LINKER_FLAGS=-static -DQt6_DIR=D:/a/QtMeshEditor/Qt/${{env.QT_VERSION}}/gcc_64/lib/cmake/Qt6 -DQT_DIR=D:/a/QtMeshEditor/Qt/${{env.QT_VERSION}}/gcc_64/lib/cmake/Qt6 -DQt6GuiTools_DIR=D:/a/QtMeshEditor/Qt/${{env.QT_VERSION}}/gcc_64/lib/cmake/Qt6GuiTools -DOGRE_DIR=${{github.workspace}}/ogre-build/SDK/CMake/ -DASSIMP_DIR=C:/PROGRA~2/Assimp/lib/cmake/assimp-5.2 | |
shell: cmd | |
- name: Build | |
run: mingw32-make install -j8 | |
- name: Copy assimp dll to the binary folder | |
run: | | |
copy C:/PROGRA~2/Assimp/bin/libassimp-5.dll ${{github.workspace}}/bin | |
- name: Copy gcc dll to the binary folder | |
run: | | |
echo "mingw bin" | |
cd C:/ProgramData/mingw64/mingw64/bin | |
dir | |
copy C:/ProgramData/mingw64/mingw64/bin/libgcc_s_seh-1.dll ${{github.workspace}}/bin | |
copy C:/ProgramData/mingw64/mingw64/bin/libstdc++-6.dll ${{github.workspace}}/bin | |
copy C:/ProgramData/mingw64/mingw64/bin/libwinpthread-1.dll ${{github.workspace}}/bin | |
copy ${{github.workspace}}/src/dependencies/zlib1.dll ${{github.workspace}}/bin/zlib1__.dll | |
copy ${{github.workspace}}/src/dependencies/zlib1.dll ${{github.workspace}}/bin/libzlib.dll | |
- name: Upload Artifact | |
if: github.event_name == 'release' && github.event.action == 'published' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: QtMeshEditor-${{github.ref_name}}-bin-Windows | |
path: ${{github.workspace}}/bin | |
- name: Compress File | |
if: github.event_name == 'release' && github.event.action == 'published' | |
run: Compress-Archive ${{github.workspace}}/bin QtMeshEditor-${{github.ref_name}}-bin-Windows.zip | |
shell: powershell | |
- name: Uploadfile to release | |
if: github.event_name == 'release' && github.event.action == 'published' | |
uses: xresloader/upload-to-github-release@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
file: QtMeshEditor-${{github.ref_name}}-bin-Windows.zip | |
update_latest_release: true | |
overwrite: false | |
verbose: true | |
#################################################################### | |
# Linux Deploy | |
#################################################################### | |
build-n-cache-assimp-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: change folder permissions | |
run: | | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
- name: Cache Assimp | |
id: cache-assimp-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-linux | |
with: | |
# Assimp cache files are stored in `/home/runner/work/QtMeshEditor/QtMeshEditor/assimp` on Linux | |
path: | | |
/usr/local/lib/cmake/ | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
#key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('/home/runner/work/QtMeshEditor/QtMeshEditor/assimp') }} | |
# Need to delete manually if needed to rebuild. Until I find a better solution for detecting changes in the assimp repo. | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-assimp-linux.outputs.cache-hit != 'true' | |
name: Check out Assimp repo | |
uses: actions/checkout@master | |
with: | |
repository: assimp/assimp | |
path: /home/runner/work/QtMeshEditor/QtMeshEditor/assimp | |
- if: steps.cache-assimp-linux.outputs.cache-hit != 'true' | |
name: Build Assimp repo | |
run: | | |
cmake -B /home/runner/work/QtMeshEditor/QtMeshEditor/assimp-build -S /home/runner/work/QtMeshEditor/QtMeshEditor/assimp -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
cd /home/runner/work/QtMeshEditor/QtMeshEditor/assimp-build/ | |
sudo make install -j8 | |
build-n-cache-ogre-linux: | |
needs: build-n-cache-assimp-linux | |
runs-on: ubuntu-latest | |
steps: | |
- name: change folder permissions | |
run: | | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
sudo chmod -R 777 /usr/local/share | |
- name: Cache Ogre | |
id: cache-ogre-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-linux | |
with: | |
path: | | |
/usr/local/lib/lib* | |
/usr/local/share/OGRE/ | |
/usr/local/share/OGRE* | |
/usr/local/include/OGRE/ | |
/usr/local/lib/OGRE/ | |
/usr/local/lib/pkgconfig/ | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-ogre-linux.outputs.cache-hit != 'true' | |
name: Cache Assimp | |
id: cache-assimp-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-linux | |
with: | |
# Assimp cache files are stored in `/home/runner/work/QtMeshEditor/assimp` on Linux/macOS | |
path: | | |
/usr/local/lib/cmake/ | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
#key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('/home/runner/work/QtMeshEditor/QtMeshEditor/assimp') }} | |
# Need to delete manually if needed to rebuild. Until I find a better solution for detecting changes in the assimp repo. | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-ogre-linux.outputs.cache-hit != 'true' | |
name: install openGL | |
run: | | |
sudo apt update | |
sudo apt-get install freeglut3-dev libxrandr-dev | |
- if: steps.cache-ogre-linux.outputs.cache-hit != 'true' | |
name: Check out ogre repo | |
uses: actions/checkout@master | |
with: | |
repository: OGRECave/ogre | |
path: /home/runner/work/QtMeshEditor/QtMeshEditor/ogre | |
- if: steps.cache-ogre-linux.outputs.cache-hit != 'true' | |
name: Build Ogre3D repo | |
run: | | |
sudo cmake -B /home/runner/work/QtMeshEditor/QtMeshEditor/ogre-build \ | |
-S /home/runner/work/QtMeshEditor/QtMeshEditor/ogre \ | |
-DOGRE_BUILD_PLUGIN_ASSIMP=ON -Dassimp_DIR=/usr/local/lib/cmake/assimp-5.2 \ | |
-DOGRE_BUILD_PLUGIN_DOT_SCENE=ON -DOGRE_BUILD_RENDERSYSTEM_GL=ON \ | |
-DOGRE_BUILD_RENDERSYSTEM_GL3PLUS=ON -DOGRE_BUILD_RENDERSYSTEM_GLES2=OFF \ | |
-DOGRE_BUILD_TESTS=OFF -DOGRE_BUILD_TOOLS=OFF -DOGRE_BUILD_SAMPLES=OFF \ | |
-DOGRE_BUILD_COMPONENT_CSHARP=OFF -DOGRE_BUILD_COMPONENT_JAVA=OFF \ | |
-DOGRE_BUILD_COMPONENT_BULLET=OFF \ | |
-DOGRE_BUILD_COMPONENT_PYTHON=OFF -DOGRE_INSTALL_TOOLS=OFF \ | |
-DOGRE_INSTALL_DOCS=OFF -DOGRE_INSTALL_SAMPLES=OFF \ | |
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
cd /home/runner/work/QtMeshEditor/QtMeshEditor/ogre-build/ | |
sudo make install -j8 | |
build-linux: | |
needs: [build-n-cache-assimp-linux, build-n-cache-ogre-linux] | |
runs-on: ubuntu-latest | |
env: | |
LD_LIBRARY_PATH: /usr/local/lib/:/usr/local/lib/OGRE/:/usr/local/lib/pkgconfig/ | |
steps: | |
- uses: actions/checkout@v3.5.3 | |
with: | |
submodules: true | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
aqtversion: ${{ env.AQT_VERSION }} | |
version: ${{ env.QT_VERSION }} | |
host: 'linux' | |
target: 'desktop' | |
arch: 'linux_gcc_64' | |
- name: change folder permissions | |
run: | | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
sudo chmod -R 777 /usr/local/share | |
- name: Cache Assimp | |
id: cache-assimp-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-linux | |
with: | |
path: | | |
/usr/local/lib/cmake/ | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
- name: Cache Ogre | |
id: cache-ogre-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-linux | |
with: | |
path: | | |
/usr/local/lib/lib* | |
/usr/local/share/OGRE/ | |
/usr/local/share/OGRE* | |
/usr/local/include/OGRE/ | |
/usr/local/lib/OGRE/ | |
/usr/local/lib/pkgconfig/ | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Configure CMake | |
run: | | |
sudo cmake -S . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | |
-DASSIMP_DIR=/usr/local/lib/cmake/assimp-5.2 \ | |
-DASSIMP_INCLUDE_DIR=/usr/local/include/assimp \ | |
-DQt6_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6 \ | |
-DQT_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6 \ | |
-DQt6GuiTools_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6GuiTools | |
- name: Build | |
run: sudo make install -j8 | |
- name: Add missing libraries | |
run: | | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicui18n.* ./bin | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicuuc.* ./bin | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicudata.* ./bin | |
- name: Manual Pack | |
run: | | |
echo "Creating folders 'n files" | |
mkdir -p ./pack-deb/usr/local/bin | |
mkdir -p ./pack-deb/usr/share/qtmesheditor/ | |
mkdir ./pack-deb/usr/share/qtmesheditor/cfg/ | |
mkdir ./pack-deb/usr/share/qtmesheditor/media/ | |
mkdir ./pack-deb/usr/share/qtmesheditor/platforms/ | |
mkdir -p ./pack-deb/lib/x86_64-linux-gnu/ | |
mkdir ./pack-deb/DEBIAN/ | |
cp ./bin/DEBIAN-control ./pack-deb/DEBIAN/control | |
cp ./bin/QtMeshEditor ./pack-deb/usr/share/qtmesheditor/qtmesheditor | |
touch ./pack-deb/usr/local/bin/qtmesheditor | |
echo "/usr/share/qtmesheditor/qtmesheditor" >> ./pack-deb/usr/local/bin/qtmesheditor | |
sudo chmod 755 ./pack-deb/usr/local/bin/qtmesheditor | |
cp -R ./bin/cfg/ ./pack-deb/usr/share/qtmesheditor/ | |
sudo chmod -R 755 ./pack-deb/usr/share/qtmesheditor/cfg | |
cp -R ./bin/media/ ./pack-deb/usr/share/qtmesheditor/ | |
cp -R ./bin/platforms/ ./pack-deb/usr/share/qtmesheditor/ | |
cp -R ./bin/*.so* ./pack-deb/lib/x86_64-linux-gnu/ | |
dpkg-deb --build --root-owner-group pack-deb | |
mv pack-deb.deb qtmesheditor_amd64.deb | |
- uses: actions/upload-artifact@v3 | |
if: github.event_name == 'release' && github.event.action == 'published' | |
with: | |
name: linux-binaries | |
path: ${{github.workspace}}/*.deb | |
- if: github.event_name == 'release' && github.event.action == 'published' | |
uses: xresloader/upload-to-github-release@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
file: ${{github.workspace}}/*.deb | |
update_latest_release: true | |
overwrite: false | |
verbose: true | |
#################################################################### | |
# Unit Tests - on Linux | |
#################################################################### | |
unit-tests-linux: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
needs: [build-n-cache-assimp-linux, build-n-cache-ogre-linux] | |
runs-on: ubuntu-latest | |
permissions: read-all | |
env: | |
LD_LIBRARY_PATH: gcc_64/lib/:/usr/local/lib/:/usr/local/lib/OGRE/:/usr/local/lib/pkgconfig/:/lib/x86_64-linux-gnu/ | |
BUILD_WRAPPER_OUT_DIR: ./ | |
QT_QPA_PLATFORM: minimal | |
QT_DEBUG_PLUGINS: 1 | |
DISPLAY: :99 | |
steps: | |
- uses: actions/checkout@v3.5.3 | |
with: | |
submodules: true | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
aqtversion: ${{ env.AQT_VERSION }} | |
version: ${{ env.QT_VERSION }} | |
host: 'linux' | |
target: 'desktop' | |
arch: 'linux_gcc_64' | |
- name: change folder permissions | |
run: | | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
sudo chmod -R 777 /usr/local/share | |
- name: Cache Assimp | |
id: cache-assimp-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-linux | |
with: | |
path: | | |
/usr/local/lib/cmake/ | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
- name: Cache Ogre | |
id: cache-ogre-linux | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-linux | |
with: | |
path: | | |
/usr/local/lib/lib* | |
/usr/local/share/OGRE/ | |
/usr/local/share/OGRE* | |
/usr/local/include/OGRE/ | |
/usr/local/lib/OGRE/ | |
/usr/local/lib/pkgconfig/ | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Configure CMake | |
run: | | |
mkdir build | |
sudo cmake -S . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | |
-DASSIMP_DIR=/usr/local/lib/cmake/assimp-5.2 \ | |
-DASSIMP_INCLUDE_DIR=/usr/local/include/assimp \ | |
-DQt6_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6 \ | |
-DQT_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6 \ | |
-DQt6GuiTools_DIR=/home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt6GuiTools \ | |
-DBUILD_TESTS=ON -DCMAKE_CXX_FLAGS=--coverage -DCMAKE_EXE_LINKER_FLAGS=--coverage \ | |
-DBUILD_QT_MESH_EDITOR=OFF | |
- name: Install sonar-scanner and build-wrapper | |
uses: SonarSource/sonarcloud-github-c-cpp@v2 | |
- name: Run build-wrapper | |
run: | | |
sudo ./.sonar/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} sudo cmake --build . --target install | |
- name: Add missing libraries | |
run: | | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicui18n.* ./bin | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicuuc.* ./bin | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/libicudata.* ./bin | |
sudo cp -R ./bin/*.so* /lib/x86_64-linux-gnu | |
sudo cp -R /usr/local/lib/OGRE/* /lib/x86_64-linux-gnu | |
sudo cp -R /usr/local/lib/OGRE/* ./bin | |
- name: Test | |
env: | |
QT_QPA_PLATFORM: minimal | |
QT_DEBUG_PLUGINS: 1 | |
DISPLAY: :99 | |
run: | | |
export QT_QPA_PLATFORM="minimal" | |
export QT_DEBUG_PLUGINS=1 | |
sudo cp -R /home/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/gcc_64/lib/ /lib/x86_64-linux-gnu/ | |
sudo apt -y install libxcb-xinerama0 libxcb-cursor0 libx11-dev xvfb | |
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & | |
export DISPLAY=:99 | |
sleep 5 | |
ps -ef | grep Xvfb | |
echo "DISPLAY=:99" >> $GITHUB_ENV | |
sudo ./bin/UnitTests | |
# sudo ctest -C ${{env.BUILD_TYPE}} --rerun-failed --output-on-failure | |
- name: Set up Python 3.8 for gcovr | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: install gcovr 5.0 | |
run: | | |
pip install gcovr==5.0 | |
- run: sudo gcov ${{github.workspace}}/src/CMakeFiles/UnitTests.dir/*.o | |
- name: Collect coverage into one XML report | |
run: | | |
gcovr --sonarqube > coverage.xml | |
- name: Run sonar-scanner | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: | | |
sonar-scanner \ | |
--define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}" \ | |
--define sonar.coverageReportPaths=coverage.xml | |
- name: Run lcov | |
run: | | |
sudo apt install lcov | |
lcov --capture --directory . --output-file coverage.info | |
lcov --remove coverage.info '/usr/*' \ | |
'/home/runner/work/QtMeshEditor/Qt/*' \ | |
'/home/runner/work/QtMeshEditor/QtMeshEditor/src/OgreXML/*' \ | |
'/home/runner/work/QtMeshEditor/QtMeshEditor/src/dependencies/*' \ | |
'src/OgreXML/*.*' \ | |
'src/dependencies/ogre-procedural/library/src/*.*' \ | |
'src/UnitTests_autogen/**/*.cpp' \ | |
'*_autogen*' \ | |
'src/dependencies/*' \ | |
'**/CMakeFiles/*' \ | |
'_deps/**/*.h' \ | |
'_deps/**/*.cpp' \ | |
'_deps/**/*.cc' \ | |
'/home/runner/work/QtMeshEditor/QtMeshEditor/_deps/*' \ | |
'ui_files/*' \ | |
'moc_*' \ | |
'*_test.cpp' \ | |
-o filtered_coverage.info | |
- run: | | |
cd ${{github.workspace}} | |
curl -L -O codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 | |
sudo chmod +x test-reporter-latest-linux-amd64 | |
sudo ./test-reporter-latest-linux-amd64 format-coverage --input-type lcov --output coverage.json filtered_coverage.info | |
sudo ./test-reporter-latest-linux-amd64 upload-coverage --input coverage.json -r ${{secrets.CODECLIMATE_COVERAGE_ID}} | |
#################################################################### | |
# MacOS Deploy | |
#################################################################### | |
build-n-cache-assimp-macos: | |
runs-on: macos-latest | |
steps: | |
- name: change folder permissions | |
run: | | |
sudo mkdir /usr/local/lib | |
sudo mkdir /usr/local/include | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
- name: Cache Assimp | |
id: cache-assimp-macos | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-macos | |
with: | |
path: | | |
/usr/local/lib/cmake | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
#key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('/home/runner/work/QtMeshEditor/QtMeshEditor/assimp') }} | |
# Need to delete manually if needed to rebuild. Until I find a better solution for detecting changes in the assimp repo. | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
- if: steps.cache-assimp-macos.outputs.cache-hit != 'true' | |
name: Check out Assimp repo | |
uses: actions/checkout@master | |
with: | |
repository: assimp/assimp | |
path: /Users/runner/work/QtMeshEditor/QtMeshEditor/assimp | |
- if: steps.cache-assimp-macos.outputs.cache-hit != 'true' | |
name: Build Assimp repo | |
run: | | |
cmake -B /Users/runner/work/QtMeshEditor/QtMeshEditor/assimp-build -S /Users/runner/work/QtMeshEditor/QtMeshEditor/assimp -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
cd /Users/runner/work/QtMeshEditor/QtMeshEditor/assimp-build/ | |
sudo make install -j8 | |
build-n-cache-ogre-macos: | |
needs: build-n-cache-assimp-macos | |
runs-on: macos-latest | |
steps: | |
- name: change folder permissions | |
run: | | |
sudo mkdir /usr/local/lib | |
sudo mkdir /usr/local/include | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
- name: Cache Assimp | |
id: cache-assimp-macos | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-macos | |
with: | |
path: | | |
/usr/local/lib/cmake | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
- name: Cache Ogre | |
id: cache-ogre-macos | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-macos | |
with: | |
path: ${{github.workspace}}/ogre/SDK | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- if: steps.cache-ogre-macos.outputs.cache-hit != 'true' | |
name: Check out ogre repo | |
uses: actions/checkout@master | |
with: | |
repository: OGRECave/ogre | |
path: ${{github.workspace}}/ogre | |
- if: steps.cache-ogre-macos.outputs.cache-hit != 'true' | |
name: Build Ogre3D repo | |
run: | | |
cd ${{github.workspace}}/ogre/ | |
sudo cmake -S . -DOGRE_BUILD_PLUGIN_ASSIMP=ON -Dassimp_DIR=/usr/local/lib/cmake/assimp-5.4/ \ | |
-DOGRE_BUILD_PLUGIN_DOT_SCENE=ON -DOGRE_BUILD_RENDERSYSTEM_GL=ON -DOGRE_BUILD_RENDERSYSTEM_GL3PLUS=ON \ | |
-DOGRE_BUILD_RENDERSYSTEM_GLES2=OFF -DOGRE_BUILD_TESTS=OFF -DOGRE_BUILD_TOOLS=OFF -DOGRE_BUILD_SAMPLES=OFF \ | |
-DOGRE_BUILD_COMPONENT_CSHARP=OFF -DOGRE_BUILD_COMPONENT_JAVA=OFF -DOGRE_BUILD_COMPONENT_PYTHON=OFF \ | |
-DOGRE_INSTALL_TOOLS=OFF -DOGRE_INSTALL_DOCS=OFF -DOGRE_INSTALL_SAMPLES=OFF -DOGRE_BUILD_LIBS_AS_FRAMEWORKS=OFF \ | |
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
sudo make install -j8 | |
build-macos: | |
needs: [build-n-cache-assimp-macos, build-n-cache-ogre-macos] | |
runs-on: macos-latest | |
steps: | |
- name: change folder permissions | |
run: | | |
sudo mkdir /usr/local/lib | |
sudo mkdir /usr/local/include | |
sudo chmod -R 777 /usr/local/lib | |
sudo chmod -R 777 /usr/local/include | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- run: | | |
cd ${{github.workspace}}/src/dependencies/ogre-procedural | |
git checkout master | |
git pull | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
aqtversion: ${{ env.AQT_VERSION }} | |
version: ${{ env.QT_VERSION }} | |
host: 'mac' | |
target: 'desktop' | |
arch: 'clang_64' | |
tools: 'tools_cmake' | |
- name: Cache Assimp | |
id: cache-assimp-macos | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-assimp-macos | |
with: | |
path: | | |
/usr/local/lib/cmake | |
/usr/local/include/assimp | |
/usr/local/include/contrib | |
/usr/local/lib/pkgconfig/assimp.pc | |
/usr/local/lib/libassimp* | |
/usr/local/lib/libzlibstatic.a | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Cache Ogre | |
id: cache-ogre-macos | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-ogre-macos | |
with: | |
path: ${{github.workspace}}/ogre/SDK | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
- name: Configure CMake | |
env: | |
OGRE_DIR: ${{github.workspace}}/ogre/SDK/CMake/ | |
run: | | |
sudo cmake -S . \ | |
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | |
-DASSIMP_DIR=/usr/local/lib/cmake/assimp-5.4 \ | |
-DASSIMP_INCLUDE_DIR=/usr/local/include/assimp \ | |
-DQt6_DIR=/Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/clang_64/lib/cmake/Qt6 \ | |
-DQT_DIR=/Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/clang_64/lib/cmake/Qt6 \ | |
-DQt6GuiTools_DIR=/Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/clang_64/lib/cmake/Qt6GuiTools \ | |
-DOGRE_DIR=${{github.workspace}}/ogre/SDK/CMake/ | |
- name: Build | |
# Build your program with the given configuration | |
run: | | |
sudo make install -j8 | |
- name: Copy Qt libs to app folder | |
run: | | |
sudo cp -R /Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/macos/lib/QtWidgets.framework ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/QtWidgets.framework | |
sudo cp -R /Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/macos/lib/QtCore.framework ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/QtCore.framework | |
sudo cp -R /Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/macos/lib/QtGui.framework ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/QtGui.framework | |
sudo cp -R /Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/macos/lib/QtDBus.framework ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/QtDBus.framework | |
sudo cp -R /Users/runner/work/QtMeshEditor/Qt/${{ env.QT_VERSION }}/macos/plugins/platforms ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/platforms | |
sudo cp -R /usr/local/lib/libassimp* ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/ | |
- name: Prepare for packing | |
run: | | |
sudo cp -R ${{github.workspace}}/bin/media ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/media | |
sudo cp -R ${{github.workspace}}/bin/cfg ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/cfg | |
sudo cp -R ${{github.workspace}}/resources/icon.icns ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/media | |
sudo mkdir ${{github.workspace}}/bin/QtMeshEditor.app/Contents/Resources | |
sudo cp -R ${{github.workspace}}/resources/icon.icns ${{github.workspace}}/bin/QtMeshEditor.app/Contents/Resources | |
sudo cp -R ${{github.workspace}}/bin/Info.plist ${{github.workspace}}/bin/QtMeshEditor.app/Contents/ | |
sudo install_name_tool -add_rpath @loader_path/ ${{github.workspace}}/bin/QtMeshEditor.app/Contents/MacOS/QtMeshEditor | |
- name: Pack | |
run: | | |
brew install create-dmg | |
sudo create-dmg \ | |
--volname "QtMeshEditor Installer" \ | |
--volicon "${{github.workspace}}/resources/icon.icns" \ | |
--window-pos 200 120 \ | |
--window-size 800 400 \ | |
--icon-size 100 \ | |
--icon "QtMeshEditor.app" 200 190 \ | |
--app-drop-link 600 185 \ | |
QtMeshEditor-${{github.ref_name}}-MacOS.dmg \ | |
${{github.workspace}}/bin/QtMeshEditor.app | |
- if: github.event_name == 'release' && github.event.action == 'published' | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: QtMeshEditor-MacOS | |
path: ${{github.workspace}}/QtMeshEditor-${{github.ref_name}}-MacOS.dmg | |
- if: github.event_name == 'release' && github.event.action == 'published' | |
uses: xresloader/upload-to-github-release@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
file: QtMeshEditor-${{github.ref_name}}-MacOS.dmg | |
update_latest_release: true | |
overwrite: false | |
verbose: true |