name: Build Linux AppImage on: push: branches: - '*' pull_request: branches: - '*' release: types: [created, published] jobs: build-appimage: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y \ build-essential \ cmake \ ninja-build \ pkg-config \ git \ curl \ zip \ unzip \ xvfb \ qt6-base-dev \ qt6-base-private-dev \ qt6-svg-dev \ qt6-multimedia-dev \ qt6-tools-dev \ libglew-dev \ libglfw3-dev \ libopus-dev \ libssl-dev \ libudev-dev \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ libavfilter-dev \ libfmt-dev \ libgl1-mesa-dev \ libxrandr-dev \ libxi-dev \ libxcursor-dev \ libxinerama-dev \ libsamplerate-dev \ libasound2-dev \ libpulse-dev \ libsndio-dev \ nlohmann-json3-dev \ libboost-context-dev \ libboost-filesystem-dev \ libzstd-dev \ liblz4-dev \ libsdl2-dev \ catch2 \ libvulkan-dev \ glslang-tools \ spirv-tools \ zsync \ wget - name: Clean build directory run: rm -rf build - name: Build Eden run: | export TARGET=appimage export USE_MULTIMEDIA=false .ci/linux/build.sh amd64 env: NPROC: 2 - name: Package AppImage run: | export USE_MULTIMEDIA=false .ci/linux/package.sh amd64 - name: Get version info id: version run: | VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "dev") COMMIT=$(git rev-parse --short HEAD) echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "commit=${COMMIT}" >> $GITHUB_OUTPUT echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - name: Upload AppImage artifact uses: actions/upload-artifact@v3 with: name: jdlo-eden-linux path: | Eden-*.AppImage Eden-*.AppImage.zsync retention-days: 30 if-no-files-found: error - name: Create release info run: | echo "# Build Information" > build-info.txt echo "Version: ${{ steps.version.outputs.version }}" >> build-info.txt echo "Commit: ${{ steps.version.outputs.commit }}" >> build-info.txt echo "Build Date: ${{ steps.version.outputs.date }}" >> build-info.txt echo "Architecture: amd64-v3" >> build-info.txt echo "Multimedia: disabled" >> build-info.txt ls -lh Eden-*.AppImage >> build-info.txt cat build-info.txt - name: Upload build info uses: actions/upload-artifact@v3 with: name: build-info path: build-info.txt retention-days: 30 - name: Prepare release files if: github.event_name == 'release' id: prepare run: | # Find and rename files to simpler names APPIMAGE_FILE=$(ls Eden-*.AppImage | head -n 1) ZSYNC_FILE=$(ls Eden-*.AppImage.zsync | head -n 1) cp "$APPIMAGE_FILE" jdlo-eden.AppImage cp "$ZSYNC_FILE" jdlo-eden.AppImage.zsync # Generate MD5 hash MD5_HASH=$(md5sum "jdlo-eden.AppImage" | awk '{print $1}') # Create release body with MD5 info cat > release-body.md <> $GITHUB_OUTPUT - name: Upload files to Release if: github.event_name == 'release' uses: akkuman/gitea-release-action@v1 with: files: |- jdlo-eden.AppImage jdlo-eden.AppImage.zsync body_path: release-body.md token: ${{ secrets.GITHUB_TOKEN }}