mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
Create build-flatpak.yml
This commit is contained in:
parent
81f9ca2a0e
commit
0789105207
271
.github/workflows/build-flatpak.yml
vendored
Normal file
271
.github/workflows/build-flatpak.yml
vendored
Normal file
@ -0,0 +1,271 @@
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
# 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//45
|
||||
sudo flatpak install -y flathub org.gnome.Sdk//45
|
||||
sudo flatpak install -y flathub org.freedesktop.Sdk.Extension.openjdk17
|
||||
|
||||
- name: Setup Flatpak builder cache
|
||||
uses: actions/cache@v3
|
||||
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@v3
|
||||
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@v3
|
||||
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
|
Loading…
x
Reference in New Issue
Block a user