Devilutionx: FreeBSD CI

Created on 24 Mar 2019  路  6Comments  路  Source: diasurgical/devilutionX

No idea if this is going to succeed in the end (I'm not a programmer and completely new to the world of CI), but you never know if you don't give it a try, right? As mentioned on #51, I'm considering what would be needed to provide FreeBSD CI for DevolutionX.

Any help, comments or or suggestions would be very welcome. Let's see how far we'll get - _the most sinister game ever made_ on _a beast of an operating system_ should be an ideal combination! :smiling_imp:

Here's a rough plan:

Phase 1

  • [x] Do a bit of reading on the subject of Jenkins in general
  • [x] Setup a FreeBSD VM with port-forwarding (to keep the main system clean)
  • [x] Install Jenkins and get it started
  • [x] Setup Nginx as a proxy and make Jenkins happy with the settings
  • [x] Install all required packages, create build script, test it once by hand
  • [x] Look into adding build jobs
  • [x] Configure a simple job that clones the latest code from GH and builds DevilutionX
  • [ ] Document everything

Phase 2

  • [ ] Start over, redoing everything in a jail
  • [ ] Figure out which changes to make (if any) to make it work in a jailed environment
  • [ ] Research how additional build nods work
  • [ ] Create jails for all supported FreeBSD versions (each one for both tier 1 platforms), install all dependencies
  • [ ] Add newly created jails as additional build nodes
  • [ ] Consider security (firewall rules, permissions, jail settings, ...)
  • [ ] Document everything

Phase 3

  • [ ] Install fresh server
  • [ ] Deploy production configuration using configuration management tools (users + keys, log rotation, monitoring, ...)
  • [ ] Apply system hardening (via configuration management)
  • [ ] Create all required jails, install dependencies (via configuration management)
  • [ ] Setup Jenkins and Nginx proxy, add all build nodes (ideally mostly using configuration management)
  • [ ] Test everything

Phase 4

  • [ ] Setup dedicated server
  • [ ] Deploy everything via configuration management with as little manual actions as possible
  • [ ] Test again
  • [ ] Invite Devilution Devs
  • [ ] Bonus: Figure out how to hook the CI system into DevilutionX so that an automated build happens when changes are pushed to the Git repo (?)
buid system

Most helpful comment

That is an impressive master plan you have there :)

Did you try getting https://cirrus-ci.org/guide/FreeBSD/ up and running? It might be a lot easier.

All 6 comments

That is an impressive master plan you have there :)

Did you try getting https://cirrus-ci.org/guide/FreeBSD/ up and running? It might be a lot easier.

This is where the fun begins!
@AJenbo can people like @kraileth have webhooks? AFAIK this is a good way of ensuring that approved CIs get wind of the latest commits so they can react with build efforts.

Yes, if we can set it up in a secure way.

FreeBSD builds were included with the latest release:
https://github.com/diasurgical/devilutionX/releases

But without a build server, it will be up to the community to make sure that the game keeps working for the platform.

Thanks a lot for all the work you are doing! I'll need to revisit this as time permits - unfortunately I haven't even been able to install a i386 system and build DevilutionX for a while... Hopefully next month.

No worries, we are still a bit off from doing a 1.0.0 release 馃檪

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AJenbo picture AJenbo  路  4Comments

cosmincrihan picture cosmincrihan  路  3Comments

xdub picture xdub  路  5Comments

namtsui picture namtsui  路  3Comments

vanfanel picture vanfanel  路  5Comments