FireDevOps FireMUD & Ops Projects

πŸ“š Shared Libraries Overview

FireMUD’s microservices share a set of utility classes and data transfer objects so each service can stay lightweight and consistent. The common library is published as a Gradle artifact and reused by all modules. It is released under the group ID net.firedevops.firemud.shared with the artifact ID firemud-common.


πŸ“– Common DTOs & Error Handling

These classes define the basic request/response shapes recommended in AI Project Rules:

DTO records for common tasks (paging, IDs, basic metadata) live here so services share a consistent contract.


πŸ”§ Utility Packages


🚚 Publishing Strategy

The shared code is built as a Gradle Java library and published to GitHub Packages so all services can depend on it.

  1. Define a Gradle module (e.g., common-library) with the java-library plugin.
  2. Configure publishing to GitHub Packages using maven-publish:
    publishing {
        repositories {
            maven {
                name = "github"
                url = uri("https://maven.pkg.github.com/<org>/firemud")
                credentials {
                    username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
                }
            }
        }
    }
  3. Version releases using semantic versioning (e.g., 1.0.0) and publish from CI.
  4. Automate tagging and version bumps using semantic-release.
  5. Deploy artifacts to GitHub Packages via CI/CD. If needed, publish a separate firemud-protos artifact containing only the shared gRPC definitions.

This library aligns with the Common Package tasks and keeps code reuse simple across all FireMUD services.