There are different ways to create AppImages. The following section gives you an overview of which ways are available, their advantages and disadvantages, and where to find more information.
The recommended approach is to package software from source. Ideally, upstream application authors take over maintenance of AppImages, and provide them on their release pages.
To learn more about how packaging from source works, please refer to Packaging from source.
The process of packaging from source can and should be automated. CI systems like Travis CI can help with that.
This option might be the easiest if you already have continuous builds on Travis CI in place. In this case, you can write a small scriptfile and in many cases are done with the AppImage generation.
More information on using Travis CI for making AppImages can be found in Bundling your Travis CI builds as AppImages.
There are a lot of examples on GitHub that can be found using the GitHub search.
With electron-builder, making AppImages is as simple as defining
AppImage as a target for Linux (default in the latest version of electron-builder). This should yield usable results for most applications.
This option might be the easiest if you already have up-to-date packages in place, ideally a PPA for the oldest still-supported Ubuntu LTS release (xenial as of 2019, see https://en.wikipedia.org/wiki/Ubuntu#Releases for up to date information) or earlier or a debian repository for oldstable. In this case, you can write a small
.yml recipe and in many cases are done with the package to AppImage conversion. See convert-existing-binary-packages for more information.
This option is recommended for open source projects because it allows you to leverage the existing Open Build Service infrastructure, security and license compliance processes.
More information on using OBS for making AppImages can be found in Using the Open Build Service.
Create an AppDir manually, then turn it into an AppImage. Please note that this method should only be your last resort, as the other methods are much more convenient in most cases. Manually creating an AppDir is explained mainly to illustrate how things work under the hood.
See Manual packaging for more information.