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

Release process #324

Closed
1 of 5 tasks
snoyberg opened this issue Jun 16, 2015 · 12 comments
Closed
1 of 5 tasks

Release process #324

snoyberg opened this issue Jun 16, 2015 · 12 comments
Assignees
Milestone

Comments

@snoyberg
Copy link
Contributor

Will consist of:

  • Generate stack binaries for all platforms
  • Full integration test suite (being worked on by @drwebb) run against each of those binaries
  • Upload binaries to S3, Github releases, and wherever else necessary
  • Updated the Downloads wiki page (no longer necessary)
  • Email the relevant mailing lists about the release, possibly put up a blog post

We want to get this as automated as possible. I'm assigning this issue to @manny-fp for now to spearhead, though others will need to be part of it too.

@snoyberg snoyberg added this to the First stable release (0.1.0.0?) milestone Jun 16, 2015
@borsboom
Copy link
Contributor

Getting this all automated is, I think, too ambitious to do for the first release milestone. Perhaps we should start by all documenting here the (semi-)manual processes we're using for the various builds. Then we can start seeing the common patterns and figure out how to best approach automating it all. I can volunteer to put together the framework and then will ask for help filling it in with the particulars of various platforms. Initially it probably makes sense to have the "release tool" be something that's manually run on each platform, and once that's working well we can considering using AWS etc. to be able to automatically run on all platforms.

@snoyberg: Linux general, Windows
@dysinger: Ubuntu
@drwebb: Arch
@manny-fp: OS X

Did I miss anyone?

Can we consider making the Downloads page not link to a particular version's binaries but instead just have it link to the latest release on Github and have users find the right file for their platform there? The Ubuntu and Arch instructions will already install the latest automatically, and this way we don't need to worry about automating modifying the wiki page.

@snoyberg
Copy link
Contributor Author

Agree with all points, especially the Downloads wiki page. EDIT Download page tweaked.

@borsboom
Copy link
Contributor

I'll start us off:

OS X release process

Prerequisites:

  • A version of stack installed.
  • PATH contains $HOME/.local/bin.

Build:

git clone -b v0.0.2-beta git@github.com:commercialhaskell/stack.git
cd stack
stack install && stack clean && stack install --pedantic && stack test --flag stack:integration-tests
cp `which stack` ./stack-0.0.2-x86_64-osx
strip stack-0.0.2-x86_64-osx
gzip stack-0.0.2-x86_64-osx
gpg --detach-sig --armor -u manny@fpcomplete.com stack-0.0.2-x86_64-osx.gz

Test:

  • Copy the binary to my Mac Mini "media server" (mostly fresh install of Yosemite, has nothing Haskell-related installed).
  • On that machine, rm -rf ~/.stack.
  • Run through the checklist.

Upload:

  • Upload stack-0.0.2-x86_64-osx.gz and stack-0.0.2-x86_64-osx.gz.asc to the Github releases page for the tag.
  • Update OS X links on the download page.

@snoyberg
Copy link
Contributor Author

My flow on both Windows and Linux is virtually identical, just changing the filenames and signing key as necessary (and, on Windows, deleting the appropriate %APPDATA%\stack instead of ~/.stack).

@drwebb
Copy link
Contributor

drwebb commented Jun 17, 2015

My build process is currently to use my haskell-stack-git PKGBUILD to grab the revision at the release tag and build stack. Then I manually tar up the file and upload to AWS. Then I need to bump the SH1SUMs and links in the binary PKGBUILD and resubmit to the AUR.

The AUR is moving to git, so you can actually see the two lines I need to manually change, it's something I could probably script to make fully automated in a couple hours.

https://aur4.archlinux.org/cgit/aur.git/commit/?h=haskell-stack&id=937f676e830354189c3a39a9810a38bb80211109

@borsboom
Copy link
Contributor

@drwebb Does you process need to be run on Arch? Is it Dockerable so that it could be run from non-Arch systems?

@borsboom
Copy link
Contributor

Another step to the release process is uploading stack to Hackage.

@borsboom
Copy link
Contributor

Ubuntu process (w/ help from @dysinger):

a) need docker installed
b) make sure you have deb-s3 rubygem installed (sudo gem install deb-s3)
c) gpg installed, and dev@fpcomplete.com secret key in keyring
d) apt-cacher-ng installed (sudo apt-get install apt-cacher-ng), or disable in the Dockerfile.
d) export AWS env vars
e) make release

@drwebb
Copy link
Contributor

drwebb commented Jun 18, 2015

So here are the steps

  • Compiling: Arch could use the generic linux build
  • Updating the PKGBUILD: Requirements sha1sum and sed.
  • Pushing to the AUR: Requirements git

However before a new version of a PKGBUILD can be pushed to the AUR you must run mksrcinfo from the directory. This is found in this following package, I believe the only dependency is bash, but I don't know how well it would run on an Ubuntu system at the moment.

https://github.com/falconindy/pkgbuild-introspection

So yeah, pretty Dockerable (if that's not a word already, now it is)

@snoyberg
Copy link
Contributor Author

I've added a link to this issue from the checklist page. Closing for now, I think we've determined the steps in the release process, and over time we'll automate it.

@drwebb
Copy link
Contributor

drwebb commented Jun 24, 2015

Just chiming in here to state that I'm adding a review man page box to the checklist, nothing worse than out of date documentation!

borsboom added a commit that referenced this issue Jun 27, 2015
@borsboom
Copy link
Contributor

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

No branches or pull requests

3 participants