Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2f34118
Make workflows a bit saner.
Lord-Kamina Jul 24, 2025
d430e1a
fix stdin maybe?
Lord-Kamina Jul 24, 2025
4203343
update requirements.txt
Lord-Kamina Jul 24, 2025
8f665c4
Fix compression
Lord-Kamina Aug 3, 2025
0d2c1b5
Fix invalid escape sequence in loader regex
Lord-Kamina Jul 24, 2025
9a878da
Make sure bin folder exists
Lord-Kamina Jul 24, 2025
25273b3
Don’t try to parse invalid versions
Lord-Kamina Jul 25, 2025
b08b041
Add actual python version to environment.
Lord-Kamina Jul 25, 2025
2c21cf7
Add `APPIMAGE_BUILDER_REMOTE_REPO_OWNER` env variable
Lord-Kamina Aug 2, 2025
c5299bb
Update test environments
Lord-Kamina Aug 3, 2025
70ddb25
Leftover references to old OS versions
Lord-Kamina Aug 3, 2025
9cc101c
Get rid of setup.py
Lord-Kamina Aug 3, 2025
0daed53
Use a venv to run tests in containers.
Lord-Kamina Aug 3, 2025
9af6adb
AppRun2: Add symlink to fix compat runtime in Ubuntu
Lord-Kamina Aug 2, 2025
e7fea7a
Fix bash recipes
Lord-Kamina Aug 2, 2025
671aa57
Don't create broken symlinks in AppImageBuilder recipe
Lord-Kamina Aug 2, 2025
a95a20b
AppImageBuilder recipe:Add comp
Lord-Kamina Aug 2, 2025
782f2c7
DRY, saner, and more importantly: WORKING CI
Lord-Kamina Aug 2, 2025
0feb4b0
Add AppImage with debug runtime to artifacts.
Lord-Kamina Aug 4, 2025
cc5ac5f
Remove version from filename
Lord-Kamina Aug 4, 2025
fd60393
git safe.directory
Lord-Kamina May 8, 2026
d68bde2
Fix arch test failure
Lord-Kamina May 11, 2026
46c8aa3
Revert "Fix setup_runtime to use only versions…”
Lord-Kamina May 11, 2026
e898a44
CI: Bump version of canned actions
Lord-Kamina May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Run tests

on:
workflow_call:
env:
APPIMAGE_BUILDER_REMOTE_REPO_OWNER: ${{ github.repository_owner }}

jobs:
pytest-ubuntu-container:
name: Run tests on Ubuntu 24.04 (Docker)
runs-on: ubuntu-24.04
container: ubuntu:24.04
steps:
- name: Install dependencies
run: |
apt-get -y update
apt-get install -y fakeroot lsb-release binutils patchelf git python3-pip python3-venv
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up a virtualenv
run: |
python3 -m venv .venv
- name: Install appimage-builder and run tests
run: |
git config --global --add safe.directory $PWD
. .venv/bin/activate
pip install pytest
pip install -e .[dev]
pytest tests

pytest-archlinux:
name: Run tests on ArchLinux (Docker)
runs-on: ubuntu-24.04
container: archlinux
steps:
- name: Install dependencies
run: pacman -Syu --noconfirm binutils fakeroot lsb-release strace patchelf git python-pip gcc
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up a virtualenv
run: |
python3 -m venv .venv
Copy link
Copy Markdown

@james-lawrence james-lawrence May 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

backout the sudo change and use git config --global --add safe.directory $PWD you dropped that command which is why you're seeing the ci errors about dubious ownership. I know its not optimal/feels dirty to have, but will get us over the initial merge hump and then it'll becomes my problem. =)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm trying out changes in the main branch of my fork. I am also going to update the canned action versions but I want to get this fixed first. I am now having another issue on arch, which seems stem from it trying to download non-existing signatures. I'm not really familiar enough with Arch to understand how to fix this:

https://github.com/Lord-Kamina/appimage-builder/actions/runs/25603560688/job/75161484580

error: failed retrieving file 'core.db.sig' from mirror.rackspace.com : The requested URL returned error: 404
error: failed to synchronize all databases (failed to retrieve some files)
------------------------------ Captured log setup ------------------------------
ERROR    root:shell.py:30 "['/usr/sbin/fakeroot', '/usr/sbin/pacman', '--config', '/tmp/pacman-venv/pacman.conf', '-Sy', '--quiet']" execution failed
______________ ERROR at setup of TestVenv.test_read_package_data _______________

cls = <class 'tests.modules.deploy.pacman.test_venv.TestVenv'>

    @classmethod
    def setUpClass(cls):
        cls.appdir_path = Path("/tmp/AppDir")
        cls.venv_path = Path("/tmp/pacman-venv")
        cls.pacman_venv = Venv(
            cls.venv_path,
            repositories={
                "core": ["https://mirror.rackspace.com/archlinux/$repo/os/$arch"]
            },
            architecture="auto",
        )
>       cls.pacman_venv.update()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oi. interesting. most likely that mirror is out of sync/bad. since I actually run arch here is my current mirror list on my system. jsut replace it with some from here for now. that'll likely fix it.

################################################################################
################# Arch Linux mirrorlist generated by Reflector #################
################################################################################

# With:       reflector @/etc/xdg/reflector/reflector.conf
# When:       2026-05-09 13:49:03 UTC
# From:       https://archlinux.org/mirrors/status/json/
# Retrieved:  2026-05-09 13:49:03 UTC
# Last Check: 2026-05-09 13:27:16 UTC

Server = https://frankfurt.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirror.moson.org/arch/$repo/os/$arch
Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
Server = https://arch.mirror.constant.com/$repo/os/$arch
Server = https://mirror.pseudoform.org/$repo/os/$arch
Server = https://mirror.kumi.systems/archlinux/$repo/os/$arch
Server = https://berlin.mirror.pkgbuild.com/$repo/os/$arch
Server = https://losangeles.mirror.pkgbuild.com/$repo/os/$arch
Server = https://de.arch.niranjan.co/$repo/os/$arch
Server = https://us.arch.niranjan.co/$repo/os/$arch

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From what I was reading, it's a config issue because those sig files do not actually exist on mirrors.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh dear. well I'm more interested in ubuntu passing atm than arch. I'll happily cleanup arch after merging this.

- name: Install appimage-builder and run tests
run: |
git config --global --add safe.directory $PWD
. .venv/bin/activate
pip install pytest
pip install -e .[dev]
pytest tests

pytest-ubuntu-runner:
name: Run tests on Ubuntu 24.04 with python 3.13.
runs-on: ubuntu-24.04
steps:
- name: Install dependencies
run: |
sudo apt-get -y update
sudo apt-get install -y fakeroot lsb-release binutils patchelf git
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Clear Python cache
run: |
sudo rm -rf /__t/Python
- name: Install python
uses: actions/setup-python@v6
with:
python-version: '3.13'
cache: 'pip'
- name: Install appimage-builder and run tests
run: |
pip install pytest
pip install -e .[dev]
python3 -m pytest tests

build-pack-bash:
runs-on: ubuntu-24.04
needs: [ pytest-ubuntu-container, pytest-ubuntu-runner, pytest-archlinux ]
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace git lsb-release python3-build python3-setuptools adwaita-icon-theme
sudo wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool
sudo chmod +x /usr/local/bin/appimagetool
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Build Python Wheel
run: |
cd ${{ github.workspace }}
python3 -m build
- name: Install appimage-builder
run: |
pip install --ignore-installed --user --break-system-packages .
- name: Build AppImage
run: |
cd ${{ github.workspace }}/recipes/appimage-builder
export APPIMAGE_BUILDER_VERSION=$(appimage-builder --version | head -1 | cut -f 2 -d" ")
echo "APPIMAGE_BUILDER_VERSION=${APPIMAGE_BUILDER_VERSION}" >> $GITHUB_ENV
appimage-builder --skip-test
- name: Pack bash
run: |
# build bash
BUILDER_PATH=$(find $PWD -name appimage-builder-*.AppImage)
chmod +x "$BUILDER_PATH"
cd ${{ github.workspace }}/recipes/bash/
"$BUILDER_PATH" --skip-test
- name: Test bash
run: |
cd ${{ github.workspace }}/recipes/bash/
./bash*.AppImage --appimage-extract-and-run -c "echo Hello World"
- name: Build AppImage (DEBUG runtime)
run: |
cd ${{ github.workspace }}/recipes/appimage-builder
appimage-builder --skip-test --recipe ./AppImageBuilder-debug.yml
- name: Compress Assets
run: |
cd ${{ github.workspace }}/recipes/appimage-builder
tar -cvf appimage-builder_x86_64-AppImage.tar ${{ github.workspace }}/recipes/appimage-builder/*x86_64.AppImage*
tar -cvf appimage-builder_x86_64-AppImage-DEBUG.tar ${{ github.workspace }}/recipes/appimage-builder/*-DEBUG.AppImage*
tar -cvf ${{ github.workspace }}/appimage-builder_python-dist.tar -C ${{ github.workspace }}/dist .
- name: Upload AppImageBuilder AppImage
uses: actions/upload-artifact@v7
with:
name: appimage-builder.AppImage
path: '${{ github.workspace }}/recipes/appimage-builder/appimage-builder_x86_64-AppImage.tar'
retention-days: 7
- name: Upload AppImageBuilder Debug AppImage
uses: actions/upload-artifact@v7
with:
name: appimage-builder-DEBUG.AppImage
path: '${{ github.workspace }}/recipes/appimage-builder/appimage-builder_x86_64-AppImage-DEBUG.tar'
retention-days: 7
- name: Upload AppImageBuilder Python dist
uses: actions/upload-artifact@v7
with:
name: appimage-builder-pydist
path: '${{ github.workspace }}/appimage-builder_python-dist.tar'
retention-days: 7
- name: Upload Bash AppImage
uses: actions/upload-artifact@v7
with:
name: bash.AppImage
path: '${{ github.workspace }}/recipes/bash/*.AppImage*'
retention-days: 7
14 changes: 14 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: "CI Build"

on:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-test:
name: "Build and test"
uses: ./.github/workflows/build-test.yml
112 changes: 0 additions & 112 deletions .github/workflows/continuous-builds.yml

This file was deleted.

36 changes: 36 additions & 0 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: "Pre-release"

on:
push:
branches:
- "main"
workflow_dispatch:

jobs:
build:
name: "Run Build and Test Matrix"
uses: ./.github/workflows/build-test.yml

publish:
name: "Publish Pre-release"
runs-on: ubuntu-latest
needs: build
steps:
- name: Download all build artifacts from build job
uses: actions/download-artifact@v7
with:
pattern: "appimage-builder*"
path: "${{ github.workspace }}/release-assets"
merge-multiple: true
- name: Look at downloaded assets
run: |
ls -l "${{ github.workspace }}/"
ls -l "${{ github.workspace }}/release-assets/"
- name: Create 'continuous' Pre-release
uses: softprops/action-gh-release@v3
with:
files: "${{ github.workspace }}/release-assets/*"
tag_name: "continuous"
name: "Continuous Build (Pre-release)"
body: "This is a continuous build which may be unstable."
prerelease: true
Loading