Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork6
Stateful backend to keep track of unity versions and docker build queues
License
game-ci/versioning-backend
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
The GameCI Versioning Backend automates the tracking, scheduling, and building of Unity versions and Docker images for the GameCI ecosystem. It connects with GitHub Actions for CI/CD workflows and Discord for notifications.
graph TD A[Unity Version Archive] -->|Scrape & Detect| B[Version Ingest] B -->|Store| C[Firestore Database] B -->|Notify| D[Discord] C -->|Schedule| E[CI Job Scheduler] E -->|Trigger| F[GitHub Actions Workflows] F -->|Report Status| G[CI Build Reporters] G -->|Update| C H[Ingeminator] -->|Retry Failed Builds| F C -->|Monitor| HThe backend regularly scrapes Unity version information:
- Uses the
unity-changesetpackage frommob-sakai to detect new Unity versions - Filters versions (only stable versions 2017+)
- Stores version details in Firestore
- Notifies maintainers via Discord
- Schedules build jobs for new versions
Each Unity version generates CI jobs and builds with the following relationships:
CiJob (e.g., Unity 2022.3.15f1) ├── CiBuild: ubuntu-2022.3.15f1-webgl ├── CiBuild: ubuntu-2022.3.15f1-android ├── CiBuild: windows-2022.3.15f1-webgl └── ... (other baseOS-version-targetPlatform combinations)The scheduler coordinates building Docker images:
- First ensures base and hub images are built
- Monitors for failed jobs and triggers the Ingeminator to retry them
- Prioritizes jobs based on Unity version recency
- Limits concurrent jobs to prevent overloading GitHub Actions
The Ingeminator ("repeater") handles the reliability of the build system:
- Detects failed builds and reschedules them
- Implements an exponential backoff strategy for retries
- Alerts via Discord when builds reach maximum retry attempts
- Works with the scheduler to manage retry priorities
Back up the Firestore database:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/serviceAccountKey.json"yarn run backfireexport ./export/versioningBackendBackup --project unity-ci-versions --keyFile$GOOGLE_APPLICATION_CREDENTIALS
Restore a backup:
yarn run backfire import ./export/versioningBackendBackup --project unity-ci-versions --keyFile$GOOGLE_APPLICATION_CREDENTIALSFor instructions on setting up the development environment, seeDEVELOPMENT.md.
We welcome contributions! SeeCONTRIBUTING.md for guidelines.
About
Stateful backend to keep track of unity versions and docker build queues
Topics
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Contributors6
Uh oh!
There was an error while loading.Please reload this page.