Re-Organizing TripleA Folders for the benefit of github action paths
-
Following up on: Code Structure - Organization into a "Many Repo" (Breaking up the monorepo) #11204
I'm looking to restructure the folders in TripleA, below is an outline of what I was thinking. There are few key features here. Firstly a big goal is to get the folder paths to line up with isolated build units. Specifically we can use a 'paths' attribute in github actions to trigger specific builds if a specific path is updated. Hence, having a single folder path line up for everything that is involved with a server, or the game-app works really well with this.
Of note, for each build unit, I'll be looking to add a
run
folder that contains some common verbs that will execute builds, tests, & deployments. This will make it possible to easily and consistently know via CLI how to run and build.Further, the github build actions will invoke these build scripts. Beyond convenience, and documentation, this will therefore also help line up what we run locally via CLI during development with what is run by automated build checks.I'll be looking to isolate as much as I can into these
run
folders as well. Today we have the build of everything in a single top level.build
folder. I'll look to distribute these build scripts into a new.build
folder located in the needed.run
folder. For example, all of the game-app components in.build/
would be moved to/game-app/run/.build
. A net effect is a person can look to arun
folder to see all details for how that unit is built, tested & deployed.Without further ado, I'm thinking to re-organize the source folders into the following structure:
docs/ game-app/ ai/ domain-data/ game-headed/ game-headless/ game-core/ map-data/ smoke-testing/ lib/ forums-node-bb/ http-clients/ maps/ chat/ games/ error-reporting/ github-api/ lib/ feign-common/ websocket-client/ servers/ nginx-reverse-proxy/ game-relay/ server-deployment-common/ # common system ansible roles, inventory files *maps/ *chat/ *games/ *error-reporting/ lib/ websocket-server/ .github/ game-app-pull-request game-app-merge http-clients-pull-request server-maps-pull-request server-maps-merge server-games-pull-request server-games-merge server-chat-pull-request server-chat-merge server-error-reporting-pull-request server-error-reporting-merge
[*] these were previously the lobby (aka spitfire). I'm thinking to split the lobby server into 4 different apps: [maps, chat, games, error-reporting].