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

Generate AppImage #76

Merged
merged 1 commit into from
Aug 3, 2017
Merged

Generate AppImage #76

merged 1 commit into from
Aug 3, 2017

Conversation

probonopd
Copy link
Contributor

@probonopd probonopd commented Jul 24, 2017

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:

  • Applications packaged as an AppImage can run on many 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 probonopd mentioned this pull request Jul 24, 2017
@probonopd
Copy link
Contributor Author

probonopd commented Jul 24, 2017

@milianw

at KDAB we host a (non-public) CI that does post-commit compiles and unit test runs

https://github.com/probonopd/hotspot/blob/feature/appimage/.travis.yml should be fairly straightforward to carry over from Travis CI to whatever system you are using, if you prefer that.

@milianw
Copy link
Member

milianw commented Jul 25, 2017

Thanks, but I have some questions:

What's the advantage over #75 ?

Why is it OK to use trusty for generating the AppImage? I was so far under the impression one should use an old distro like Centos 6 or so to build the AppImage. Will the one build on trusty run on older distros? I doubt it personally, but would like to be proven wrong.

@probonopd
Copy link
Contributor Author

Well, using CentOS 6 would make the AppImage run on even older distributions, but trusty is from 2014, so most distributions that came out in the last 3 years should be covered. The advantage is that you do not need to maintain a Docker image, builds are faster, and an AppImage is generated.

@milianw
Copy link
Member

milianw commented Aug 3, 2017

let's try this out :)

@milianw
Copy link
Member

milianw commented Aug 3, 2017

Ah, the older gcc doesn't default to C++11 yet, I'll push a fix to enable that explicitly.

@milianw
Copy link
Member

milianw commented Aug 3, 2017

Odd, we do set

set(CMAKE_CXX_STANDARD 14)

already, is the cmake/gcc too old for that?

krf added a commit that referenced this pull request Aug 3, 2017
@probonopd
Copy link
Contributor Author

Strange, I think I had it working 10 days ago. Has something changed recently?

@probonopd
Copy link
Contributor Author

Yep, it used to build, as can be seen here:
https://travis-ci.org/probonopd/hotspot/builds/256950787

@probonopd
Copy link
Contributor Author

Do you have any ideas why it might be failing now?

@ghost
Copy link

ghost commented Aug 18, 2017

Are the download URLs for this advertised anywhere? I.e. outside of the build job logs?

@probonopd
Copy link
Contributor Author

Currently they are only visible in the build logs.

If that is too cumbersome, check out https://github.com/probonopd/uploadtool for how to upload continuous builds to GitHub Releases. Advantage: Easier to find, constant URL.

@milianw
Copy link
Member

milianw commented Aug 21, 2017

Hey guys,

sorry for the delay, but it was vacation time and now I'm busy catching up at work. I'll look into this probably at the beginning of next week.

Cheers

@milianw
Copy link
Member

milianw commented Aug 22, 2017

I have finally fixed it:

https://travis-ci.org/KDAB/hotspot

I'll now have a look at the generated AppImage. Thanks again @probonopd

@milianw
Copy link
Member

milianw commented Aug 22, 2017

Seems to work :)

@probonopd
Copy link
Contributor Author

Looking forward to the next release. If you would like to publish continuous builds, have a look at https://github.com/probonopd/uploadtool

@milianw
Copy link
Member

milianw commented Aug 22, 2017

Yes, thanks for the heads up @probonopd, I'll have a look at this eventually. I'll also have to see how to leverage this whole setup to create AppImages for specific git tags - do you have any resources on that matter? I.e. once 1.1.0 is released, how can I get a AppImage build for it - or will Travis build all branches/tags, not just master?

@probonopd
Copy link
Contributor Author

probonopd commented Aug 23, 2017

By default, Travis will build all branches/tags, but it can be configured.

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.

2 participants