Managing Online Gaming
Submitted By Jenkins User Ganesh Yallamelli
A student/ father decides he can improve on the gaming experience for his Minecraft-obsessed kids.
Programming Language: PHP, Python, Groovy
Version Control System: GitHub
Build Tool: gCloud
Community Support: Jenkins.io websites & blogs
Father helps kids get their game on easily, with Jenkins.
Background: I wanted to provide my kids a way to play Minecraft in the cloud but not cost a fortune. Jenkins allows my kids to turn on Minecraft with a simple webhook and pipelines, and allows me to keep my pocketbook closed to the Google Cloud gods.
Goals: The ultimate goal was to maintain pipelines that my family could easily kick-off to spin up our personal Minecraft server running on GCP. The Minecraft instance is preemptive so it shuts off when not in use.
Solution & Results: After I had a working model, I wanted to automate it. I also wanted to set the compute to be preemptive, so I don’t have a run-away bill, but I also didn’t like to log into GCP each time to start it.
That being said, I leveraged Jenkins to turn on the instance (if offline), mount the drive, and start the service. Furthermore, I have additional pipelines to stop the instance (if desired), pull the status of the compute, and even upgrade Minecraft if it’s out of date.
After setting all this automation up, I realized that my kids would have to log into Jenkins, so I set up webhooks with Discord and Slack and even created a little batch file to quickly start it wherever they are.
To meet these challenges, I created a handful of pipelines to do the job: one to start the instance, one to stop the instance, one to obtain the server’s status, and one to upgrade Minecraft. These pipelines use shared methods and libraries and are primarily driven by gcloud commands.
All of the Jenkins Groovy code is stored in GitHub. There is an option to store the code inside the pipeline itself, but I’ve been burned too much by systems failing or upgrades breaking things. Now that this is mature and the kids know how to operate it, I’ll move to the next phase and set up the infrastructure utilizing Terraform and Jenkins to orchestrate.
Here are the tools I used most:
- Jenkins (latest version)
- Discord Notifier
- Email Extension Plugin
- GitHub Plugin
- Various GCP Plugins
- Green Balls
- Pipeline Utility Steps
- Role-based Authorization Strategy
- Simple Theme Plugin
- Slack Notification Plugin
- Cloud compute can stay offline when not in use
- End-users can turn on without having to log into GCP or Jenkins
- Checks are in place for all the different scenarios