GNU/Linux AppImage¶
AppImage is a portable format for upstream software distribution for GNU/Linux
systems, the only constraint is that a single AppImage must target a single
hardware architecture, such as x86_64.
Refer to the upstream AppImage website for details: https://appimage.org/.
Cross-compiling¶
The appimage_x86_64 job makes an assumption that the host of this container
itself is a x86_64 machine. Cross-compiling is possible with AppImage,
albeit somewhat complicated.
The AppRun and runtime used must match the target architecture. The
appimagetool itself can be used from the host’s native architecture. Refer
to https://github.com/AppImage/AppImageKit/issues/789 for more information.
Pre-built AppRun and runtime are provided by the project for the
i686 and x86_64 architectures, but for all others you will need to build
these two files yourself. This is typically done inside bootstrap.sh for the
Docker image targeting a specific architecture.
The actual build script for an AppImage remains the same across architectures, since the compiler prefix can be a variable, special YAML features can be used to simplify the CICD YAML. See https://docs.gitlab.com/ee/ci/yaml/#special-yaml-features.