pkg2appimage tool and some example recipes to build AppImages using AppImageKit and travis-ci. ⚠️ See IMPORTANT NOTICE below. Join #AppImage on irc.freenode.net
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

⚠️ IMPORTANT NOTICE

In https://github.com/AppImage/AppImages/commit/798093a8b2b41b8a32fb1cc5301bcab9ed5f2cb8 we reorganized this repository to simplify its structure and make it easier to understand. Unfortunately this requires existing links to this repository to be updated. We apologize for the inconvenience caused.

  • recipes/meta/Recipe was renamed to pkg2appimage to better reflect its nature
  • recipes/meta was moved to recipes/
  • Legacy recipes were moved to legacy/. They should be converted to .yml recipes

AppImages discourse Build Status Codacy Badge Gitter Donate

This repository contains the pkg2appimage tool and some recipes to generate AppImages (portable Linux apps) using AppImageKit. See the Bintray page tab for downloads of the generated AppImages.

Recipes are the .yml files used to create the AppImages, and Dockerfiles are used to build Docker images on Docker Hub (think of them as glorified chroot environments) in which the recipes can run. Finally, everything is tied together using travis-ci which uses Docker containers created by the Dockerfiles from this repository to generate AppImages using the recipes from this repository. The result are AppImages are uploaded to a Bintray repository and can run on most modern desktop Linux distributions.

This repository is intended to showcase the AppImage format and AppImageKit software used to create AppImages. Upstream projects are encouraged to use this showcase to produce their own upstream packaging AppImages, as some projects (like Subsurface already do).

Usage

There are multiple ways to generate AppImages. If you already have existing binaries (either in archive or .deb format or a ppa) then the recommended way to convert these to an AppImage is to write a .yml description file and run it with pkg2appimage:

To build an AppImage from a .yml description file:

bash -ex ./pkg2appimage recipes/XXX.yml

.yml description files tell pkg2appimage where to get the ingredients from, and how to convert them to an AppImage (besides the general steps already included in pkg2appimage). Study some examples to see how it works.

Miscellaneous

Uploading AppImages to Bintray

The script bintray.sh can be used by anyone to upload AppImages to Bintray.

The script will:

  1. Extract metadata from the AppImage
  2. Make the AppImage updatable with zsync
  3. Upload the AppImage to Bintray

In order to use bintray.sh you must first define your Bintray credentials in the environment. In order to get your Bintray API Key, you need to enter the "API Key" section in https://bintray.com/profile/edit

Example:

wget https://raw.githubusercontent.com/AppImage/AppImages/master/bintray.sh
export BINTRAY_USER=<Your Bintray username>
export BINTRAY_REPO=<Your Bintray repository>
export BINTRAY_REPO_OWNER=<Your bintray Organization (optional)>
export BINTRAY_API_KEY=<Your Bintray API Key>
./bintray.sh "Subsurface-4.5.1.667-x86_64.AppImage"

If you use Travis for CI, you can define these variables in the Travis control panel, specially the BINTRAY_API_KEY, in order to keep it secure.

Contributing

You are invited to contribute to the AppImage format, the AppImageKit tools, and the example AppImages provided by us).

The preferred channel of communication for general questions and remarks is our forum and mailing list at http://discourse.appimage.org/.

For technical contibutions, https://github.com/probonopd/AppImageKit - please file Issues (also for wishlist items or discussion topics) or submit Pull requests.

There is also the #AppImage IRC channel on irc.freenode.net and we use Gitter which has the advantage that one does not have to be online all the time and one can communicate despite not being in the same timezone.

Donations

Donate

Acknowledgments

This project would not have been possible without the contributors to AppImageKit and without the services which generously support Open Source projects:

  • JFrog for providing Bintray, the distribution platform used to distribute AppImages built by the recipes in this project to users. Bintray has been truly invaluable for this project since it not only provides us with free hosting and traffic for our AppImages, but also makes it really easy to set up a repository for custom binary formats such as AppImage, and to maintain the metadata associated with the downloads. Thanks to the easy-to use REST API, we were able to set up an automated workflow involving GitHub and Travis CI to build, upload and catalog AppImages in no time. Also, JFrog Bintray relieved us from the burden to create a web UI for the repository by providing a generic one out-of-the-box.
  • Travis CI for providing cloud-based test and build services that are easy to integrate with GitHub.
  • GitHub for making it possible to work on Code in the Cloud, and for making it super easy to contribute to Open Source projects.