Managing package release workflow

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Managing package release workflow

Clinton Mead
Hi All

I've already got a few packages on hackage, but I'd like to upload a few more, but I'm finding the workflow management particularly excessive. Here's what I'd like to do roughly:

1. Choose a number of stack snapshots I'd like my package to successfully build and test against.
2. Automatically apply appropriate version bounds to dependencies in my cabal file based on those snapshots. 
3. When these changes are pushed to Github, attempt to compile them using Travis CI, against all the stack snapshots chosen.
4. If we do a push to a particular branch or with particular tag, this signifies we're attempting a release. Attempt to compile using Travis CI, perform the tests. If the compile and tests are successful, push a separate commit, adjust the "source-repository" field in github to point to that release commit (not to master) and upload to hackage.

I'm currently doing all of this manually but it's increasingly a bit of a pain. Is there tooling to help me automate this? 

Thanks,

Clinton

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
Reply | Threaded
Open this post in threaded view
|

Re: Managing package release workflow

Daniel Trstenjak-2
Hi Clinton,

> 2. Automatically apply appropriate version bounds to dependencies in my cabal
> file based on those snapshots. 

I've never used 'stack', but I think it mostly boils down to setting the
appropriate snapshot dependency constraints and ghc version for the 'cabal'
run and therefore 'cabal-bounds'[1] should work in the same way as for
a direct 'cabal' run.

'cabal-bounds' only widdens the version bounds of a dependency, so
calling it for builds of multiple 'stack' snapshots should work.

So building your package for each snapshot and just calling
'cabal-bounds update' might just work.

Greetings,
Daniel

[1] https://github.com/dan-t/cabal-bounds
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.