diff --git a/.github/workflows/build-appimage.yml b/.github/workflows/build-appimage.yml new file mode 100644 index 00000000..85e1a03d --- /dev/null +++ b/.github/workflows/build-appimage.yml @@ -0,0 +1,60 @@ + +name: Build Gource AppImage + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + build-essential cmake libsdl2-dev libpcre3-dev libglew-dev \ + libglm-dev libboost-filesystem-dev libfreetype6-dev libpng-dev \ + libjpeg-dev libsdl2-image-dev libfuse-dev + + - name: Build Gource + run: | + ./autogen.sh + ./configure + make + + - name: Download linuxdeploy + run: | + wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + chmod +x linuxdeploy-x86_64.AppImage + + - name: Prepare AppDir + run: | + mkdir -p AppDir/usr/bin + cp gource AppDir/usr/bin/ + mkdir -p AppDir/usr/share/gource + cp -r data/* AppDir/usr/share/gource/ + echo "[Desktop Entry] + Name=Gource + Exec=gource + Icon=gource + Type=Application + Categories=Development;Graphics; + Comment=Software version control visualization tool" > AppDir/gource.desktop + cp data/file.png AppDir/gource.png + + - name: Bundle dependencies with linuxdeploy + run: | + ./linuxdeploy-x86_64.AppImage --appdir AppDir --executable AppDir/usr/bin/gource --desktop-file AppDir/gource.desktop --icon-file AppDir/gource.png --output appimage + mv Gource-x86_64.AppImage gource-${{ github.event.release.tag_name }}.AppImage + + - name: Upload AppImage to Release + uses: softprops/action-gh-release@v1 + with: + files: gource-${{ github.event.release.tag_name }}.AppImage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}