GitHub Packages: consumir y publicar SDKs
Los SDKs internos (codehunters-sdk-*) se publican y consumen desde GitHub
Packages (registry Maven). Credenciales siempre por env var, nunca en el repo.
Consumir
Declarar el repo en allprojects con credenciales de entorno:
allprojects { repositories { mavenCentral() maven { name = "GitHubPackages" url = uri("${project.findProperty("github_packages_url")}/codehunters") credentials { username = System.getenv("GH_PACKAGES_USERNAME") password = System.getenv("GH_PACKAGES_TOKEN") // PAT con read:packages } } }}github_packages_url = https://maven.pkg.github.com/CODEHUNTERSLuego se consume como cualquier dependencia, con versión pineada:
implementation("io.codehunters:codehunters-sdk-event-messaging:${property("sdk.event.messaging.version")}")Publicar un SDK
En el repo del SDK, maven-publish apuntando al mismo registry:
plugins { `java-library` `maven-publish`}
publishing { publications { create<MavenPublication>("maven") { groupId = "io.codehunters" artifactId = "codehunters-sdk-event-messaging" version = project.version.toString() from(components["java"]) } } repositories { maven { name = "GitHubPackages" url = uri("https://maven.pkg.github.com/CODEHUNTERS/codehunters-sdk-event-messaging") credentials { username = System.getenv("GH_PACKAGES_USERNAME") password = System.getenv("GH_PACKAGES_TOKEN") // PAT con write:packages } } }}Publicar: ./gradlew publish.
Tips
- Scopes del token: consumir →
read:packages; publicar →write:packages(+read:packages). En Actions,GITHUB_TOKENalcanza para el mismo org. - Limpieza de versiones viejas: las versiones snapshot/pre-release se acumulan en el registry — usá la action Delete Package Versions para retención automática.
- No pinees en el build: las versiones de SDK viven en
gradle.properties(sdk.*.version), un solo lugar para bumpear.