name: Build Autopsy Flatpak on: # Manual trigger workflow_dispatch: inputs: autopsy_version: description: 'Autopsy version to build (e.g., autopsy-4.22.1)' required: false type: string default: 'autopsy-4.22.1' sleuthkit_version: description: 'Sleuth Kit version (e.g., sleuthkit-4.14.0)' required: false type: string default: 'sleuthkit-4.14.0' # Test builds on PRs pull_request: paths: - 'flatpak/**' - '.github/workflows/**' env: FLATPAK_BUILDER_CACHE: .flatpak-builder MANIFEST_PATH: flatpak/org.sleuthkit.Autopsy.yml jobs: build-flatpak: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Flatpak and dependencies run: | sudo apt update sudo apt install -y flatpak flatpak-builder # Add Flathub repository sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Install required runtimes sudo flatpak install -y flathub org.gnome.Platform//47 sudo flatpak install -y flathub org.gnome.Sdk//47 sudo flatpak install -y flathub org.freedesktop.Sdk.Extension.openjdk17//24.08 - name: Setup Flatpak builder cache uses: actions/cache@v4 with: path: | .flatpak-builder build-dir key: flatpak-builder-${{ runner.os }}-${{ hashFiles('flatpak/org.sleuthkit.Autopsy.yml') }} restore-keys: | flatpak-builder-${{ runner.os }}- - name: Build Flatpak run: | mkdir -p build-dir repo # Build with network access for downloading sources flatpak-builder \ --repo=repo \ --force-clean \ --ccache \ --install-deps-from=flathub \ --default-branch=stable \ --subject="Build of Autopsy ${{ github.event.inputs.autopsy_version || 'autopsy-4.22.1' }}" \ build-dir \ ${{ env.MANIFEST_PATH }} - name: Export bundle run: | VERSION="${{ github.event.inputs.autopsy_version || 'autopsy-4.22.1' }}" flatpak build-bundle repo autopsy-${VERSION}.flatpak org.sleuthkit.Autopsy stable #- name: Test installation # run: | # export DC_DIR="/tmp/dconf" # mkdir -p "$DC_DIR" # export DCONF_USER_CONFIG="$DC_DIR/user" # export XDG_RUNTIME_DIR="$DC_DIR" # # Install the bundle # sudo flatpak install -y --noninteractive autopsy-*.flatpak # # # Basic smoke test # flatpak info org.sleuthkit.Autopsy # # # Check that binary exists # flatpak run --command=sh org.sleuthkit.Autopsy -c "test -x /app/bin/autopsy && echo 'Binary check passed'" - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: autopsy-flatpak path: | autopsy-*.flatpak retention-days: 30 create-release: needs: build-flatpak if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Download artifacts uses: actions/download-artifact@v4 with: name: autopsy-flatpak - name: Create Release uses: softprops/action-gh-release@v1 with: tag_name: flatpak-${{ github.event.inputs.autopsy_version || 'autopsy-4.22.1' }} name: Autopsy Flatpak ${{ github.event.inputs.autopsy_version || 'autopsy-4.22.1' }} body: | # Autopsy Flatpak Release ## Installation ```bash # Install from bundle flatpak install autopsy-${{ github.event.inputs.autopsy_version || 'autopsy-4.22.1' }}.flatpak # Run Autopsy flatpak run org.sleuthkit.Autopsy ``` ## Requirements - Flatpak runtime installed - GNOME Platform 47 Built from upstream sources. files: | autopsy-*.flatpak draft: false prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}