mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
278 lines
9.4 KiB
YAML
278 lines
9.4 KiB
YAML
name: Build Autopsy Flatpak
|
|
|
|
on:
|
|
# Scheduled check for new releases (daily at 6 AM UTC)
|
|
schedule:
|
|
- cron: '0 6 * * *'
|
|
|
|
# Manual trigger
|
|
workflow_dispatch:
|
|
inputs:
|
|
autopsy_version:
|
|
description: 'Autopsy version to build (e.g., autopsy-4.22.1)'
|
|
required: false
|
|
type: string
|
|
sleuthkit_version:
|
|
description: 'Sleuth Kit version (e.g., sleuthkit-4.14.0)'
|
|
required: false
|
|
type: string
|
|
force_build:
|
|
description: 'Force build even if version already exists'
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
|
|
# Test builds on PRs
|
|
pull_request:
|
|
paths:
|
|
- 'flatpak/**'
|
|
- '.github/workflows/**'
|
|
|
|
env:
|
|
FLATPAK_BUILDER_CACHE: ~/.cache/flatpak-builder
|
|
MANIFEST_PATH: flatpak/org.sleuthkit.Autopsy.yml
|
|
|
|
jobs:
|
|
check-version:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_build: ${{ steps.version_check.outputs.should_build }}
|
|
autopsy_version: ${{ steps.version_check.outputs.autopsy_version }}
|
|
sleuthkit_version: ${{ steps.version_check.outputs.sleuthkit_version }}
|
|
is_new_version: ${{ steps.version_check.outputs.is_new_version }}
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Check for new versions
|
|
id: version_check
|
|
run: |
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
# Function to get latest release tag from GitHub API
|
|
get_latest_release() {
|
|
local repo=$1
|
|
curl -s "https://api.github.com/repos/$repo/releases/latest" | \
|
|
jq -r '.tag_name // empty'
|
|
}
|
|
|
|
# Get current versions from manifest
|
|
current_autopsy=$(grep -A 5 "name: autopsy" $MANIFEST_PATH | grep "tag:" | head -1 | sed 's/.*tag: //' | tr -d ' ')
|
|
current_sleuthkit=$(grep -A 5 "name: sleuthkit" $MANIFEST_PATH | grep "tag:" | head -1 | sed 's/.*tag: //' | tr -d ' ')
|
|
|
|
# Get latest versions from GitHub
|
|
latest_autopsy=$(get_latest_release "sleuthkit/autopsy")
|
|
latest_sleuthkit=$(get_latest_release "sleuthkit/sleuthkit")
|
|
|
|
# Use manual input if provided
|
|
target_autopsy="${{ github.event.inputs.autopsy_version }}"
|
|
target_sleuthkit="${{ github.event.inputs.sleuthkit_version }}"
|
|
force_build="${{ github.event.inputs.force_build }}"
|
|
|
|
if [ -n "$target_autopsy" ]; then
|
|
latest_autopsy="$target_autopsy"
|
|
fi
|
|
|
|
if [ -n "$target_sleuthkit" ]; then
|
|
latest_sleuthkit="$target_sleuthkit"
|
|
fi
|
|
|
|
echo "Current Autopsy: $current_autopsy"
|
|
echo "Latest Autopsy: $latest_autopsy"
|
|
echo "Current Sleuth Kit: $current_sleuthkit"
|
|
echo "Latest Sleuth Kit: $latest_sleuthkit"
|
|
|
|
# Determine if we should build
|
|
should_build="false"
|
|
is_new_version="false"
|
|
|
|
if [ "$force_build" = "true" ] || [ "$current_autopsy" != "$latest_autopsy" ] || [ "$current_sleuthkit" != "$latest_sleuthkit" ]; then
|
|
should_build="true"
|
|
if [ "$current_autopsy" != "$latest_autopsy" ]; then
|
|
is_new_version="true"
|
|
fi
|
|
fi
|
|
|
|
# For PR builds, always build
|
|
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
|
should_build="true"
|
|
fi
|
|
|
|
echo "should_build=$should_build" >> $GITHUB_OUTPUT
|
|
echo "autopsy_version=$latest_autopsy" >> $GITHUB_OUTPUT
|
|
echo "sleuthkit_version=$latest_sleuthkit" >> $GITHUB_OUTPUT
|
|
echo "is_new_version=$is_new_version" >> $GITHUB_OUTPUT
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '17'
|
|
|
|
build-flatpak:
|
|
needs: check-version
|
|
if: needs.check-version.outputs.should_build == 'true'
|
|
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 openjdk-17-jdk
|
|
|
|
# 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: ${{ env.FLATPAK_BUILDER_CACHE }}
|
|
key: flatpak-builder-${{ runner.os }}-${{ hashFiles('flatpak/org.sleuthkit.Autopsy.yml') }}
|
|
restore-keys: |
|
|
flatpak-builder-${{ runner.os }}-
|
|
|
|
#- name: Update manifest versions
|
|
# if: needs.check-version.outputs.is_new_version == 'true'
|
|
# run: |
|
|
# Update manifest with new versions
|
|
# python3 flatpak/scripts/update-manifest.py \
|
|
# --autopsy-version "${{ needs.check-version.outputs.autopsy_version }}" \
|
|
# --sleuthkit-version "${{ needs.check-version.outputs.sleuthkit_version }}" \
|
|
# --manifest "${{ env.MANIFEST_PATH }}"
|
|
|
|
- name: Build Flatpak
|
|
run: |
|
|
mkdir -p build-dir repo
|
|
|
|
flatpak-builder \
|
|
--repo=repo \
|
|
--force-clean \
|
|
--ccache \
|
|
--sandbox \
|
|
--install-deps-from=flathub \
|
|
build-dir \
|
|
${{ env.MANIFEST_PATH }}
|
|
|
|
- name: Create test installation
|
|
run: |
|
|
# Add local repo and install for testing
|
|
flatpak --user remote-add --no-gpg-verify --if-not-exists test-repo repo
|
|
flatpak --user install -y test-repo org.sleuthkit.Autopsy
|
|
|
|
- name: Run basic tests
|
|
run: |
|
|
# Test that the application can start (headless)
|
|
timeout 30s flatpak run --command=sh org.sleuthkit.Autopsy -c "
|
|
export DISPLAY=:99
|
|
Xvfb :99 -screen 0 1024x768x24 &
|
|
sleep 5
|
|
/app/bin/autopsy --help || exit 1
|
|
echo 'Basic functionality test passed'
|
|
" || echo "Startup test completed"
|
|
|
|
- name: Create bundle
|
|
if: github.event_name != 'pull_request'
|
|
run: |
|
|
flatpak build-bundle repo \
|
|
autopsy-${{ needs.check-version.outputs.autopsy_version }}.flatpak \
|
|
org.sleuthkit.Autopsy
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: autopsy-flatpak-${{ needs.check-version.outputs.autopsy_version }}
|
|
path: |
|
|
autopsy-*.flatpak
|
|
repo/
|
|
retention-days: 30
|
|
|
|
- name: Commit version updates
|
|
if: needs.check-version.outputs.is_new_version == 'true' && github.event_name != 'pull_request'
|
|
run: |
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add ${{ env.MANIFEST_PATH }}
|
|
git commit -m "Update to Autopsy ${{ needs.check-version.outputs.autopsy_version }}"
|
|
git push
|
|
|
|
create-release:
|
|
needs: [check-version, build-flatpak]
|
|
if: needs.check-version.outputs.is_new_version == 'true' && github.event_name != 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: autopsy-flatpak-${{ needs.check-version.outputs.autopsy_version }}
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
tag_name: flatpak-${{ needs.check-version.outputs.autopsy_version }}
|
|
name: Autopsy Flatpak ${{ needs.check-version.outputs.autopsy_version }}
|
|
body: |
|
|
# Autopsy Flatpak Release ${{ needs.check-version.outputs.autopsy_version }}
|
|
|
|
Automated build of Autopsy ${{ needs.check-version.outputs.autopsy_version }} as a Flatpak package.
|
|
|
|
## Installation
|
|
|
|
### From Bundle (Recommended)
|
|
```bash
|
|
flatpak install autopsy-${{ needs.check-version.outputs.autopsy_version }}.flatpak
|
|
```
|
|
|
|
### From Repository
|
|
```bash
|
|
flatpak remote-add --if-not-exists autopsy-repo https://github.com/${{ github.repository }}/releases/download/flatpak-${{ needs.check-version.outputs.autopsy_version }}/repo
|
|
flatpak install autopsy-repo org.sleuthkit.Autopsy
|
|
```
|
|
|
|
## Running
|
|
```bash
|
|
flatpak run org.sleuthkit.Autopsy
|
|
```
|
|
|
|
## Changes
|
|
- Updated to Autopsy ${{ needs.check-version.outputs.autopsy_version }}
|
|
- Updated to Sleuth Kit ${{ needs.check-version.outputs.sleuthkit_version }}
|
|
|
|
Built automatically from upstream sources.
|
|
files: |
|
|
autopsy-*.flatpak
|
|
draft: false
|
|
prerelease: false
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
notify-community:
|
|
needs: [check-version, create-release]
|
|
if: needs.check-version.outputs.is_new_version == 'true' && github.event_name != 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Notify about new release
|
|
run: |
|
|
echo "New Autopsy Flatpak release ${{ needs.check-version.outputs.autopsy_version }} is available!"
|
|
# Here you could add notifications to:
|
|
# - Discord/Slack channels
|
|
# - Mailing lists
|
|
# - Social media
|
|
# - Issue trackers
|