21

I have a few open source projects that I manage. I've been posting the .tar.gz releases for them to a directory on a webserver I run. I would like to post them to github. Is there a simple way to post the release and a signature for the release? My users aren't sophisticated enough to download the release with git; they want to download and install a .tar.gz file. Some of them may even want to verify the signature.

vy32
  • 28,461
  • 37
  • 122
  • 246

7 Answers7

24

GitHub have just announced their new "GitHub Releases" feature, which sounds like exactly what you're after:

https://github.com/blog/1547-release-your-software

rmc47
  • 1,364
  • 1
  • 13
  • 17
9

One nice option github supports is tagging, and automatic tar.gz/zip creation based on those tags. It makes publishing releases really easy.

http://learn.github.com/p/tagging.html

On the commit/branch that you'd like to mark as a release, do

git tag <release_tag>

then

git push --tags

then, on github.com/user/repo/tags, you can see all tagged releases. You can link straight to those files, like in jimw's answer.

YenTheFirst
  • 2,172
  • 13
  • 11
  • 9
    There are two problems with a simple tag. #1 - I can't digitally sign these `.tar.gz` releases. #2 - my users need the `configure` and `missing` and other `autoconf`-generated junk that doesn't belong in the git repository. – vy32 Mar 31 '12 at 14:31
  • @vy32, you can now use [annotated tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging#_annotated_tags) for the first issue, and about the second - create a [git hook](http://githooks.com/) to do that – Eliran Malka Apr 04 '17 at 08:19
6

Other awesome option might be distributing from http://bintray.com. It integrates great with GitHub and gives you so much more when distributing binaries.

JBaruch
  • 22,610
  • 5
  • 62
  • 90
2

I you'd also like to upload other kinds of files (compiled binaries, ...) and edit github releases from the commandline with a rather easy-to-use tool, I made something for that. It's called github-release. It's basically a user-friendly abstraction over the Github releases API. It's written in Go so I took the liberty of cross-compiling it for OSX/linux/windows/FreeBSD, and you can download the binaries from the releases page, of course.

DISCLAIMER: I am the author.

Aktau
  • 1,847
  • 21
  • 30
  • I still don't understand something. Where does the binary live within the repo? Do I have to create another branch with the file in it? Really confused. – ThomasReggi Jan 06 '15 at 20:05
  • Didn't realize that you can upload the binary directly to the release or with the github-release upload command. – ThomasReggi Jan 06 '15 at 20:34
1

You can fetch a tarball of any tag like so:

https://github.com/visionmedia/express/tarball/2.5.4
jimw
  • 2,548
  • 15
  • 12
1

There are a few utilities to do what you need.

github_upload (Ruby) : https://github.com/github/upload
App::gh (Perl) : https://metacpan.org/module/App::gh::Command::Upload

Take your pick :)

mithun
  • 316
  • 3
  • 3
  • Unfortunately, the github_upload script no longer seems to work. – vy32 Apr 03 '12 at 04:18
  • I have a similar use case as you do - but haven't gotten around to using any of these tools yet. Good to know about the status of `github_upload`. Maybe you can give the perl one another shot. Try to use `cpanm` and have it figure out all the dependencies. – mithun Apr 07 '12 at 18:37
0

Check out the GitHub Downloads section - no need for git at all to download files from there.

Kristian Glass
  • 37,325
  • 7
  • 45
  • 73
  • 5
    [Depreciated](https://github.com/blog/1302-goodbye-uploads), use [Releases](https://github.com/blog/1547-release-your-software) instead. – 0 _ Sep 15 '13 at 23:30