JKGDevs / JediKnightGalaxies

Jedi Knight Galaxies (JKG) is a multiplayer shooter with role playing elements, played out in the Star Wars universe. The project is a full conversion game modification for Jedi Knight: Jedi Academy.
https://www.jkgalaxies.net/
GNU General Public License v2.0
34 stars 12 forks source link

Automating Builds with Github Actions #338

Open DarthFutuza opened 2 years ago

DarthFutuza commented 2 years ago

Travis CI no longer offers free builds and I don't really want to bother with them anymore since it seems like they're basically dead for open source at this point. Github Actions is free and we should probably move to this anyway. If someone wants to help with setting this up, I'd greatly appreciate it as I don't have much time to think about this and the game itself.

I put a discussion label on this, because I'd like to also ask if we should re-evaluate how we do builds and what a better way of doing it would be. Automagic would be best if possible. Some sort of testing might be nice too, not sure what would be good though. Here's some thoughts:

Builds:

Developer workflow (starting from a stable release):

  1. switch to develop branch
  2. increase version number (eg: v1.3.27 to v1.3.28)
  3. work on features for next milestone
  4. if you need to deviate from the milestone or work on a large feature, branch from develop to a new branch 4a. when finished with new feature, merge back into develop (update version number if appropriate)
  5. when milestone is ready for next pre-release/beta, manually test build and then merge develop into master
  6. build master and download binaries - test internally on all supported OSes (Windows 10, Ubuntu, MacOS Catalina) with developers
  7. draft a new tag, write patch notes, upload binaries to it
  8. upload/collect assets
  9. publish tag
  10. update links to assets and binaries on the jkgalaxies.net download webpage for beta/pre-releases
  11. push changes/publish web page changes
  12. upload to beta mirrors (only limited mirrors will support the beta)
  13. update links to mirrors and push/publish web page changes
  14. schedule 481st beta test match
  15. test game, review reported bugs, repeat 15b. If bugs, switch back to develop, update version, then when bugs are fixed (try not to add any new features!) go back to step 5, release new beta and test again 15c. if no serious issues during play test, publish as stable release, otherwise repeat again
  16. upload to mirrors and announce
  17. schedule community scrimmage match
  18. start next milestone feature repeat
DarthFutuza commented 2 years ago

Use as reference: https://github.com/taysta/EternalJK/blob/master/.github/workflows/workflow.yml