name: AppImage Testing on: push: branches: - master jobs: build: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} defaults: run: shell: ${{ matrix.shell || 'sh' }} strategy: fail-fast: false matrix: include: - { name: 'Linux', os: 'ubuntu-latest', dx5: false, config: true, build-type: 'Release', linux: true, werror: true, clang-tidy: false } steps: - name: Install Linux dependencies (apt-get) if: ${{ matrix.linux }} run: | sudo apt-get update sudo apt-get install -y \ libx11-dev libxext-dev libxrandr-dev libxrender-dev libxfixes-dev libxi-dev libxinerama-dev \ libxcursor-dev libwayland-dev libxkbcommon-dev wayland-protocols libgl1-mesa-dev libglew-dev qt6-base-dev \ libasound2-dev - uses: actions/checkout@v4 - name: Configure (CMake) run: | ${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -GNinja \ -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ -DISLE_USE_DX5=${{ !!matrix.dx5 }} \ -DISLE_BUILD_CONFIG=${{ matrix.config }} \ -DENABLE_CLANG_TIDY=${{ !!matrix.clang-tidy }} \ -DISLE_WERROR=${{ !!matrix.werror }} \ -DISLE_DEBUG=OFF \ -Werror=dev - name: Build (CMake) run: cmake --build build --verbose - name: Package (CPack) run: | cd build cpack . - name: Install linuxdeploy if: ${{ matrix.linux }} id: install-linuxdeploy uses: miurahr/install-linuxdeploy-action@v1.8.0 with: plugins: qt appimage - name: Package (AppImage) if: ${{ matrix.linux }} run: | cd build && \ export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH" && \ NO_STRIP=1 ${{ steps.install-linuxdeploy.outputs.linuxdeploy }} \ -p qt \ -e isle \ -e isle-config \ -d packaging/linux/org.legoisland.Isle.desktop \ -i icons/@APP_ID@.svg \ --custom-apprun=../packaging/linux/appimage/AppRun \ --appdir packaging/linux/appimage/AppDir \ --output appimage - name: Upload Artifact uses: actions/upload-artifact@main with: name: Release-${{ matrix.name }} path: | build/dist/isle-* build/*.AppImage release: name: 'Release' runs-on: ubuntu-latest needs: - build steps: - name: Download All Artifacts uses: actions/download-artifact@main with: pattern: Release-* path: Release merge-multiple: true - name: Checkout uploadtool uses: actions/checkout@v4 with: repository: 'probonopd/uploadtool' path: 'uploadtool' - name: Upload Continuous Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | ./uploadtool/upload.sh Release/*