Release Process - nozavroni/csvelte GitHub Wiki

Release Process

I have decided to use Travis-CI for my continuous integration service. Mainly because it's the one I've heard the most about and because it seems to have the best Github integration. In the past I've only used Phing. I've never used a hosted deployment/task runner/CI server. Anyway, here is a list (not necessarily in the correct order) of tasks that will need to be ran for each deployment. I have broken tasks down by version type. That is, major release, minor release, and patch.

Patch Release

  • Run tests (phpunit) - I will need to make sure that ./tests/bootstrap.php works for more than just my macbook environment. Also, write an xml configuration file for phpunit.
  • Either download or otherwise make sure that my sample CSV files are available for testing against.
  • Install composer
  • Install dependencies for composer installs (the only one is Carbon)
  • Download dependencies for manual installs (again, Carbon)
  • Generate zip file containing library bundle (including dependencies)
  • Generate zip file containing library bundle (excluding dependencies)
  • Do the same thing for other common types of compression formats
  • Change @version docblocks in files
  • Add @since docblocks to new files?
  • Create patch release git tag

Minor Release

  • Create minor release git tag

Major Release

  • Create major release git tag

Questions

  • Are Travis-CI and Phing mutually exclusive? Does it make sense to use both of them or does Travis-CI pretty much cover everything Phing would be used for?
  • Should my build process create git branche(s) for the next version?