diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml new file mode 100644 index 0000000..2627318 --- /dev/null +++ b/.github/workflows/appimage.yml @@ -0,0 +1,98 @@ +name: "ci" + +on: + push: + tags: "**" + workflow_dispatch: + +defaults: + run: + shell: bash + +jobs: + appimage: + runs-on: ubuntu-18.04 + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + submodules: true + + - name: Install dependencies + run: | + sudo add-apt-repository -y ppa:beineri/opt-qt-5.15.2-bionic + sudo apt-get update -qq + sudo apt-get install -y \ + build-essential make wget libgl1-mesa-dev \ + qt515declarative qt515graphicaleffects \ + qt515quickcontrols qt515quickcontrols2 + + - name: Download QT appimage builder + run: | + wget -c -O linuxdeployqt.AppImage \ + https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage + chmod a+x linuxdeployqt.AppImage + + - name: Build project + run: | + source /opt/qt*/bin/qt*-env.sh && \ + qmake -v && \ + qmake CONFIG+=release PREFIX=/usr && \ + make -j$(nproc) + + - name: Install to appdir + run: | + source /opt/qt*/bin/qt*-env.sh && \ + make INSTALL_ROOT=appdir -j$(nproc) install + + - name: Extract version number + run: | + # Extract version for linuxdeployqt to name the file. Use the tag as + # release name but remove prefix. + echo "VERSION=$(echo '${{ github.ref }}' | sed 's;.*/;;')" >> $GITHUB_ENV + + - name: Build appimage directory + run: | + mkdir -p \ + appdir/usr/bin \ + appdir/usr/lib \ + appdir/usr/share/applications \ + appdir/usr/share/metainfo \ + appdir/usr/share/icons/hicolor/128x128/apps + + cp cool-retro-term appdir/usr/bin/ + cp cool-retro-term.desktop appdir/usr/share/applications/ + cp packaging/appdata/cool-retro-term.appdata.xml appdir/usr/share/metainfo/ + cp app/icons/128x128/cool-retro-term.png appdir/usr/share/icons/hicolor/128x128/apps/ + cp -r ./app/qml appdir/usr/ + # Workaround for https://github.com/probonopd/linuxdeployqt/issues/78 + cp -r ./qmltermwidget/QMLTermWidget appdir/usr/qml/ + + find appdir | sort + + - name: Build appimage + run: | + source /opt/qt*/bin/qt*-env.sh && \ + ./linuxdeployqt.AppImage appdir/usr/share/applications/cool-retro-term.desktop \ + -verbose=1 -appimage \ + -qmldir=./app/qml/ \ + -qmldir=./qmltermwidget/ + env: + # Unset environment variables + QTDIR: + QT_PLUGIN_PATH: + LD_LIBRARY_PATH: + + - name: Upload release + uses: softprops/action-gh-release@v1 + with: + body: appimage release + files: ./**/Cool_Retro_Term-*-x86_64.AppImage + + - name: Clean up + if: always() + run: | + find appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq + make clean + rm -rf appdir