Skip to content

AppImage

AppImage #14

Workflow file for this run

# Manual AppImage distribution build for box-rpg-maker, auto-published as a Release.
#
# Trigger: workflow_dispatch only (Actions tab -> Run workflow). Never on
# push. The Python-pure builder (python3 -m tools.build_appimage) computes
# the stable year.month.commit-count tag, creates it at HEAD, verifies the
# checkout is exactly at that tag, stages the frontend-only AppDir, and
# converts it with a recent FUSE3-capable appimagetool (no libfuse2).
# The publish step then pushes that tag and creates (or updates, idempotent
# on re-runs) the GitHub Release with a generic title, notes from
# tools/release_notes.py, and the attached AppImage.
name: AppImage
permissions:
contents: write
on:
workflow_dispatch:
inputs:
tag:
description: "Stable tag to build (default: computed from git history)"
required: false
default: ""
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out with full history for tags and version count
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Install FUSE3 to run appimagetool and the artifact
run: sudo apt-get update && sudo apt-get install -y fuse3
- name: Build the AppImage
env:
# Fresh runners carry no git identity and the builder creates an
# annotated tag, so tagger identity comes from the environment.
GIT_AUTHOR_NAME: ChrisTVH
GIT_AUTHOR_EMAIL: cristoferherame@gmail.com
GIT_COMMITTER_NAME: ChrisTVH
GIT_COMMITTER_EMAIL: cristoferherame@gmail.com
run: |
if [ -n "${{ inputs.tag }}" ]; then
python3 -m tools.build_appimage --yes --tag "${{ inputs.tag }}"
else
python3 -m tools.build_appimage --yes
fi
- name: Upload the artifact
uses: actions/upload-artifact@v4
with:
name: box-rpg-maker.appimage
path: dist/box-rpg-maker.appimage
- name: Upload the checksum
uses: actions/upload-artifact@v4
with:
name: box-rpg-maker.appimage.sha256
path: dist/box-rpg-maker.appimage.sha256
- name: Publish the GitHub release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG=$(git describe --tags --exact-match HEAD)
git push origin "$TAG"
python3 -m tools.release_notes "$TAG" > notes.md
if gh release view "$TAG" >/dev/null 2>&1; then
gh release upload "$TAG" dist/box-rpg-maker.appimage dist/box-rpg-maker.appimage.sha256 --clobber
else
gh release create "$TAG" dist/box-rpg-maker.appimage dist/box-rpg-maker.appimage.sha256 \
--title "box-rpg-maker $TAG" --notes-file notes.md
fi