name: Ubuntu on: workflow_dispatch: push: paths: - '*.txt' - 'src/**' - 'example/**' - 'scripts/**' - '.github/workflows/ubuntu.yml' pull_request: paths: - '*.txt' - 'src/**' - 'example/**' - 'scripts/**' - '.github/workflows/ubuntu.yml' jobs: build: name: Build runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-20.04] qt_ver: [6.6.0] qt_arch: [gcc_64] env: targetName: example steps: - name: Check out repository uses: actions/checkout@v3 with: submodules: recursive - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_ver }} cache: ${{steps.cache-qt.outputs.cache-hit}} arch: ${{ matrix.qt_arch }} modules: 'debug_info qt3d qt5compat qtcharts qtconnectivity qtdatavis3d qtgraphs qtgrpc qthttpserver qtimageformats qtlanguageserver qtlocation qtlottie qtmultimedia qtnetworkauth qtpdf qtpositioning qtquick3d qtquick3dphysics qtquickeffectmaker qtquicktimeline qtremoteobjects qtscxml qtsensors qtserialbus qtserialport qtshadertools qtspeech qtvirtualkeyboard qtwaylandcompositor qtwebchannel qtwebengine qtwebsockets qtwebview' - name: Set up Ninja uses: seanmiddleditch/gha-setup-ninja@v3 with: version: 1.10.2 - name: ubuntu install GL library run: sudo apt-get install -y libxcb-cursor0 libgl1-mesa-dev libxcb1-dev libgtk-3-dev libxkbcommon-x11-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-sync-dev libxcb-render-util0-dev libxcb-shm0-dev - name: build ubuntu run: | ninja --version cmake --version mkdir build cd build cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/FluentUI/Qt/6.6.0/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja .. cmake --build . --target all --config Release --parallel - name: install QT linux deploy uses: miurahr/install-linuxdeploy-action@v1 with: plugins: qt appimage - name: Check if svg file exists run: if [ ! -f "${targetName}.svg" ]; then echo "File not found, creating..."; touch ${targetName}.svg; fi - name: package run: | # make sure Qt plugin finds QML sources so it can deploy the imported files export QML_SOURCES_PATHS=./ # 拷贝依赖 linuxdeploy-x86_64.AppImage --plugin=qt --output=appimage --create-desktop-file --icon-file=${targetName}.svg --executable=bin/release/${targetName} --appdir bin/release/ mv ${{ env.targetName }}-*.AppImage ${{ env.targetName }}.AppImage - uses: actions/upload-artifact@v2 with: name: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}} path: ${{ env.targetName }}.AppImage - name: uploadRelease if: startsWith(github.event.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: ${{ env.targetName }}.AppImage asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}.AppImage tag: ${{ github.ref }} overwrite: true