Bananas Content Service Deployment
Relevant source files
The following files were used as context for generating this wiki page:
- README.md
- ROADMAP.md
- license.txt
- .github/workflows/rolling-release.yml (referenced in README.md)
- info.nut (referenced in README.md)
The Bananas Content Service Deployment refers to the official mechanism for distributing the Trans AI to the OpenTTD community. "Bananas" is OpenTTD's built-in online content service that allows players to discover, download, and update game extensions such as AI opponents directly within the game client.
This deployment process is part of a broader release strategy that includes GitHub development builds and manual source installations. For official "Bananas" releases, the project utilizes specific tagging and automated workflows to ensure that stable versions are prepared and uploaded to the central content repository.
Sources: README.md:21-30, README.md:82-84
Release Ecosystem
The Trans AI project maintains three distinct paths for distribution, with the Bananas service acting as the primary channel for end-users.
| Installation Method | Target Audience | Source Location | Versioning Style |
|---|---|---|---|
| In-Game (Bananas) | Players | OpenTTD Content Service | Tagged Releases (bananas tag) |
| GitHub Releases | Early Adopters | GitHub Assets | Daily Rolling (YYMMDD) |
| Source Clone | Developers | GitHub Repository | Development (info.nut future-dated) |
Sources: README.md:21-58, README.md:73-80
Deployment Workflow and Automation
The deployment to the Bananas service is managed through an automated CI/CD pipeline. This removes the need for manual script execution and ensures consistency in the build artifacts.
GitHub Actions Integration
The project has transitioned to a fully automated build process defined in .github/workflows/rolling-release.yml. This workflow handles the packaging of the AI into the required .tar format. While rolling releases occur daily based on commits, official Bananas deployments are triggered by the creation of a specific bananas tag.
The following diagram illustrates the deployment flow from code commit to availability on the content service:
The workflow distinguishes between standard development rolling releases and official content service uploads.
Sources: README.md:82-89, README.md:73-80
Versioning and Priority
For deployment, versioning is critical to ensure OpenTTD handles file overrides correctly:
- Production (Bananas): Uses a versioning scheme linked to the release tag.
- Development: Local versions in
info.nutare set to a date far in the future. This prevents the OpenTTD client from overwriting a developer's local changes with an older version downloaded from the Bananas service.
Sources: README.md:76-80
Distribution Requirements
To be compatible with the Bananas content service and general OpenTTD installations, the deployment must include specific dependencies and adhere to licensing.
Library Dependencies
The deployment package expects several libraries to be present in the user's ../ai/library folder to function correctly:
- AI Library - Common: Basic AI utility functions.
- AI Library - List: List management and filtering.
- AI Library - String: String manipulation utilities.
Sources: README.md:60-65
Licensing Compliance
All deployments, including those on the Bananas service, are governed by the GNU General Public License version 2.0. The distribution must include the license text to ensure recipients are aware of their rights to copy, modify, and redistribute the source code.
Sources: license.txt:1-15, README.md:91-95
Feature Status for Deployment
The features available in a Bananas deployment are tracked via the project roadmap. Stable features ready for the content service typically include:
- Transport Modes: Support for buses, trucks, trams, aircraft, ships, and rail.
- Route Logic: Buoy usage for marine routes and double-track logic for rail.
- Specialized Logic: Cargo Concept (Many-to-one) implementation and infrastructure maintenance detection.
Sources: ROADMAP.md:1-55, README.md:4-9
The Bananas Content Service Deployment serves as the bridge between the development environment on GitHub and the end-user experience within OpenTTD, utilizing automated GitHub Actions to maintain a reliable and accessible AI opponent.