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.