Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build on each git push and upload an AppImage #338

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

probonopd
Copy link

This PR, when merged, will compile this application on Travis CI upon each git push, and upload an AppImage to a temporary download URL on transfer.sh (available for 14 days). The download URL is toward the end of each Travis CI build log of each build (see below for how to set up automatic uploading to your GitHub Releases page).

For this to work, you need to enable Travis CI for your repository as described here prior to merging this, if you haven't already done so.

Providing an AppImage would have, among others, these advantages:

  • Works for most Linux distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration with appimaged
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally GPG2-sign your AppImages (inside the file)
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

Please note: Instead of storing AppImage builds temporarily for 14 days each on transfer.sh, you could use GitHub Releases to store the binaries permanently. This way, they would be visible on the Releases page of your project. This is what I recommend. See https://docs.travis-ci.com/user/deployment/releases/. If you want to do this for continuous builds, also see https://github.com/probonopd/uploadtool.

If you have questions, AppImage developers are on #AppImage on irc.freenode.net.

@probonopd
Copy link
Author

The built AppImage identifies its version number as

Version 4.7.7.44-9c34-dirty

Why is it "dirty"?

@bdantas
Copy link

bdantas commented Apr 23, 2017

I tested the lftp AppImage on Debian Jessie, Arch Linux, and Devuan Jessie, and it works perfectly in all of them. Lftp is awesome...and AppImage is pure magic.

I'm also curious as to why it labels itself as "dirty" given that all the functionality I've tested is working.

@lavv17
Copy link
Owner

lavv17 commented Apr 23, 2017

"dirty" means that some of the sources were modified, probably by gnulib-tool.

@lavv17
Copy link
Owner

lavv17 commented Apr 23, 2017

It would be logical to use just compiled lftp instead of wget and curl. Besides it would be a final QA test.

@lavv17
Copy link
Owner

lavv17 commented Apr 23, 2017

Is sudo really needed?

@probonopd
Copy link
Author

probonopd commented Apr 23, 2017

"dirty" means that some of the sources were modified, probably by gnulib-tool.

Do you see what we could do differently in the .travis.yml to avoid being marked "dirty"?

@lavv17
Copy link
Owner

lavv17 commented Apr 23, 2017 via email

@probonopd
Copy link
Author

Is sudo really needed?

Yes, if you want to run AppImages, since for strange reasons Travis CI denies access for the travis user to /dev/fuse otherwise. But note that no sudo commands are actually used in the whole .travis.yml.

@probonopd
Copy link
Author

It would be logical to use just compiled lftp instead of wget and curl. Besides it would be a final QA test.

Can you give me the commands to replace

wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
curl --upload-file ./LFTP*.AppImage https://transfer.sh/LFTP-git.$(git rev-parse --short HEAD)-x86_64.AppImage

please?

@lavv17
Copy link
Owner

lavv17 commented Apr 24, 2017

Just use lftpget instead of wget. Or

lftp -c "get https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"

For upload, lftp would be not so useful (yet), as it does not currently save the PUT reply body anywhere.

@lavv17
Copy link
Owner

lavv17 commented Apr 24, 2017

In dc95b47 I have created contrib/Makefile to install the icon and desktop file.

@probonopd
Copy link
Author

In dc95b47 I have created contrib/Makefile to install the icon and desktop file.

Thanks @lavv17, can you change .travis.yml accordingly after having pulled this PR?

@lavv17
Copy link
Owner

lavv17 commented Apr 25, 2017

I'm integrating appimage build rules into Makefile now. Can you suggest a way to build appimage with modular lftp (configure --with-modules)? Probably it should have LFTP_MODULE_PATH set to the /tmp/.mount_*/usr/lib/lftp/$(VERSION) somehow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants