#-------------------------------------------------------------------------------- # Workflow configuration #-------------------------------------------------------------------------------- name: Build on: push: # Run on push pull_request: # Run on pull-request #-------------------------------------------------------------------------------- # Define application name & version #-------------------------------------------------------------------------------- env: VERSION: "1.0.0" EXECUTABLE: "appqyouradio" APPLICATION: "QYouRadio" QML_DIR_NIX: "assets/qml" QML_DIR_WIN: "assets\\qml" #-------------------------------------------------------------------------------- # Workflow jobs (GNU/Linux, macOS & Windows) #-------------------------------------------------------------------------------- jobs: # # GNU/Linux build (we run on Ubuntu 16.04 to generate AppImage) # build-linux: runs-on: ubuntu-latest steps: # # Checkout the repository # - name: Checkout repository and submodules uses: actions/checkout@v2 with: submodules: recursive - name: Install Qt uses: jurplel/install-qt-action@v3 with: aqtversion: '==3.1.*' version: '6.10.0' host: 'linux' target: 'desktop' arch: 'linux_gcc_64' modules: 'qtmultimedia' archives: 'qtwayland qtdeclarative qtbase' # # Install additional dependencies, stolen from: # https://github.com/mapeditor/tiled/blob/master/.github/workflows/packages.yml # - name: Install dependencies run: | sudo apt-get update sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libzstd-dev cmake # # Compile the application # - name: Compile run: | mkdir build/ cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr make -j8 # # Create the AppImage # - name: Create AppImage run: | make INSTALL_ROOT=appdir install wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" -O linuxdeployqt chmod a+x linuxdeployqt ./linuxdeployqt appdir/usr/share/applications/*.desktop -appimage -bundle-non-qt-libs -extra-plugins=imageformats/libqsvg.so -qmldir="${{env.QML_DIR_NIX}}" # # Rename AppImage to match "%AppName%-%Version%-Linux.AppImage" format # - name: Rename AppImage run: mv *.AppImage ${{env.EXECUTABLE}}-${{env.VERSION}}-Linux.AppImage # # Upload AppImage to build artifacts # - name: Upload AppImage uses: actions/upload-artifact@v2 with: name: ${{env.EXECUTABLE}}-${{env.VERSION}}-Linux.AppImage path: ${{env.EXECUTABLE}}-${{env.VERSION}}-Linux.AppImage # # Windows build # build-windows: runs-on: windows-latest steps: # # Checkout the repository # - name: Checkout repository and submodules uses: actions/checkout@v2 with: submodules: recursive # # Configure MSVC # - name: Configure MSVC uses: ilammy/msvc-dev-cmd@v1 with: arch: x64 spectre: true - name: Install Qt uses: jurplel/install-qt-action@v3 with: aqtversion: '==3.1.*' version: '6.10.0' host: 'windows' target: 'desktop' arch: 'win64_msvc2022_64' archives: 'qtdeclarative qtbase opengl32sw d3dcompiler_47' # # Install NSIS # - name: Install NSIS run: | Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') scoop bucket add extras scoop install nsis # # Compile application # - name: Compile run: | qmake ${{env.QMAKE_PROJECT}} CONFIG+=release nmake # # Copy Qt DLLs, compiler runtime & application icon # - name: Deploy run: | mkdir bin move release/${{env.EXECUTABLE}}.exe bin windeployqt bin/${{env.EXECUTABLE}}.exe -qmldir="${{env.QML_DIR_WIN}}" --compiler-runtime mkdir "${{env.APPLICATION}}" move bin "${{env.APPLICATION}}" xcopy deploy\windows\resources\icon.ico "${{env.APPLICATION}}" # # Create NSIS installer # - name: Make NSIS installer run: | move "${{env.APPLICATION}}" deploy\windows\nsis\ cd deploy\windows\nsis makensis /X"SetCompressor /FINAL lzma" setup.nsi ren *.exe ${{env.EXECUTABLE}}-${{env.VERSION}}-Windows.exe # # Upload installer to build artifacts # - name: Upload NSIS installer uses: actions/upload-artifact@v2 with: name: ${{env.EXECUTABLE}}-${{env.VERSION}}-Windows.exe path: deploy/windows/nsis/${{env.EXECUTABLE}}-${{env.VERSION}}-Windows.exe