Skip to content

Automate hackage releases #1310

Closed
Closed
@jneira

Description

@jneira

The steps needed to make the release are:

  1. Identify changes of each subpackage and check if they can break downstream ones
  2. Bump up the package version accordingly and propagate it to the bounds of downstream packages
  3. Make pr(o several prs) with those changes, ensuring the order of dependencies
  4. Cherry pick those changes onto the github release commit as a branch
  5. Check the subpackage builds succesfully in that branch (and test it?)
  6. Do a cabal check && cabal haddock subpackage && cabal sdist subpackage
  7. Do a cabal upload subpackage (we can use https://github.com/haskell-actions/hackage-publish)

I think the steps 5, 6 and 7 could be automated in ci, uploading package candidates to do a final review and publish all of them.

Not sure how could we automate 1-4 though. Maybe doing a git diff per subpackage and update version bounds of .cabal files with some form of grep&sed (bumping out version as always breaking with no fine grained pvp considerations as suggested by @michaelpj)

There are projects with lot of subpackages and maybe they have been some work to automate this, as pointed by @wz1000.
For example amazonka. Afaics they have a Makefile that includes upload of packages: https://github.com/brendanhay/amazonka/blob/develop/Makefile

Metadata

Metadata

Assignees

Labels

CIContinuous integrationtype: enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions