AppImages/.github/workflows/appimage_maker.yml

83 lines
2.6 KiB
YAML

name: AppImage Maker
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
pre-build:
runs-on: ubuntu-latest
outputs:
appimagetool-path: ${{ steps.upload.outputs.artifact-path }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up build dependencies
run: |
sudo apt-get update
sudo apt-get install -y cmake make git wget patch
wget -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool
# Upload appimagetool so it can be used in the build job
- name: Upload appimagetool artifact
id: upload
uses: actions/upload-artifact@v3
with:
name: appimagetool
path: appimagetool
build:
needs: pre-build
runs-on: ubuntu-latest
strategy:
matrix:
project:
- name: dolphin
repo: https://github.com/dolphin-emu/dolphin.git
cmake_args: "-DENABLE_SDL=ON"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download appimagetool artifact
uses: actions/download-artifact@v3
with:
name: appimagetool
path: .
- name: Remove previous appimage directory
run: |
rm -rf appimages/${{ matrix.project.name }}
mkdir -p appimages/${{ matrix.project.name }}
- name: Run build script
run: |
chmod +x automation_tools/build_appimage.sh
# Collect any patch files from patches/<appname>/
PATCH_ARGS=""
for f in patches/${{ matrix.project.name }}/*.patch; do
if [ -f "$f" ]; then
PATCH_ARGS="$PATCH_ARGS $f"
fi
done
# Determine output file name with current date (YYYYMMDD)
DATE=$(date +%Y%m%d)
OUTPUT="appimages/${{ matrix.project.name }}/${{ matrix.project.name }}-${DATE}.AppImage"
echo "Building AppImage for ${{ matrix.project.name }}..."
echo "Repository: ${{ matrix.project.repo }}"
echo "Output: $OUTPUT"
echo "CMake Args: ${{ matrix.project.cmake_args }}"
echo "Patch files: $PATCH_ARGS"
automation_tools/build_appimage.sh "${{ matrix.project.repo }}" "${{ matrix.project.name }}" "$OUTPUT" "${{ matrix.project.cmake_args }}" $PATCH_ARGS
- name: Publish AppImage
if: success()
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.project.name }}-AppImage
path: appimages/${{ matrix.project.name }}/*.AppImage